GO-2023-2328

See a problem?
Source
https://pkg.go.dev/vuln/GO-2023-2328
Import Source
https://vuln.go.dev/ID/GO-2023-2328.json
JSON Data
https://api.osv.dev/v1/vulns/GO-2023-2328
Aliases
Published
2023-11-27T18:53:31Z
Modified
2024-05-20T16:03:47Z
Summary
HTTP request body disclosure in github.com/go-resty/resty/v2
Details

A race condition in go-resty can result in HTTP request body disclosure across requests.

This condition can be triggered by calling sync.Pool.Put with the same *bytes.Buffer more than once, when request retries are enabled and a retry occurs. The call to sync.Pool.Get will then return a bytes.Buffer that hasn't had bytes.Buffer.Reset called on it. This dirty buffer will contain the HTTP request body from an unrelated request, and go-resty will append the current HTTP request body to it, sending two bodies in one request.

The sync.Pool in question is defined at package level scope, so a completely unrelated server could receive the request body.

References
Credits
    • Logan Attwood (@lattwood)

Affected packages

Go / github.com/go-resty/resty/v2

Package

Name
github.com/go-resty/resty/v2
View open source insights on deps.dev
Purl
pkg:golang/github.com/go-resty/resty/v2

Affected ranges

Type
SEMVER
Events
Introduced
2.10.0
Fixed
2.11.0

Ecosystem specific

{
    "imports": [
        {
            "path": "github.com/go-resty/resty/v2",
            "symbols": [
                "Backoff",
                "Request.Delete",
                "Request.Execute",
                "Request.Get",
                "Request.Head",
                "Request.Options",
                "Request.Patch",
                "Request.Post",
                "Request.Put",
                "Request.Send",
                "handleRequestBody"
            ]
        }
    ]
}