CVE-2023-45286
HTTP request body disclosure in github.com/go-resty/resty/v2
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
NVD Score used
5.9
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.
- Record
CVE-2023-45286- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-362
- Updated
- 2026-11-02
CVE List No score
HTTP request body disclosure in github.com/go-resty/resty/v2
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.
- Record
CVE-2023-45286- Updated
- 2026-11-02
EUVDEUVD-2023-3068 No score
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.
- Record
EUVD-2023-3068- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-xwh9-gc39-5298
5.9
github.com/go-resty/resty/v2 HTTP request body disclosure
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.
- Record
GHSA-xwh9-gc39-5298- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200, CWE-362
- Updated
- 2026-11-02
OSVAZL-32050
5.9
CVE-2023-45286 affecting package packer for versions less than 1.8.7-1
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.
- Record
AZL-32050- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVDEBIAN-CVE-2023-45286
5.9
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.
- Record
DEBIAN-CVE-2023-45286- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
Show 5 moreShow less
OSVGHSA-xwh9-gc39-5298
5.9
github.com/go-resty/resty/v2 HTTP request body disclosure
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.
- Record
GHSA-xwh9-gc39-5298- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200, CWE-362
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2023-45286
5.9
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.
- Record
UBUNTU-CVE-2023-45286- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSV No score
HTTP request body disclosure in github.com/go-resty/resty/v2
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.
- Record
CVE-2023-45286- Updated
- 2026-11-02
OSVGO-2023-2328 No score
HTTP request body disclosure in github.com/go-resty/resty/v2
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.
- Record
GO-2023-2328- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:13569-1 No score
rclone-1.65.1-1.1 on GA media
These are all security issues fixed in the rclone-1.65.1-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:13569-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/go-resty/resty/v2Go |
2.10.0 up to 2.11.0 | 2.11.0 |
packerAzure Linux:2 |
before 1.8.7-1 | 1.8.7-1 |
golang-github-go-resty-restyDebian:12 |
All versions, plus listed versions 2.10.0-12.10.0-22.6.0-1 |
None known |
golang-github-go-resty-restyDebian:13 |
before 2.10.0-2 | 2.10.0-2 |
golang-github-go-resty-restyDebian:14 |
before 2.10.0-2 | 2.10.0-2 |
golang-github-go-resty-restyUbuntu:22.04:LTS |
All versions, plus listed versions 2.4.0-1ubuntu1 |
None known |
golang-github-go-resty-restyUbuntu:24.04:LTS |
All versions, plus listed versions 2.4.0-1ubuntu12.10.0-1 |
None known |
golang-github-go-resty-restyUbuntu:25.10 |
All versions, plus listed versions 2.10.0-12.10.0-2 |
None known |
golang-github-go-resty-restyUbuntu:26.10 |
All versions, plus listed versions 2.10.0-2 |
None known |
golang-github-go-resty-restyUbuntu:26.04:LTS |
All versions, plus listed versions 2.10.0-2 |
None known |
rcloneopenSUSE:Tumbleweed From an advisory covering 2 CVEs |
before 1.65.1-1.1 | 1.65.1-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2023-45286 is a medium vulnerability (CVSS 5.9) in Github.com/go-resty/resty/v2, published November 27, 2023. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.72%, the 54th percentile. Fixed in github.com/go-resty/resty/v2 2.11.0.
References
github.com/go-resty/resty/issues/743
github.com/go-resty/resty/issues/739
github.com/go-resty/resty/pull/745
github.com/go-resty/resty/commit/577fed8730d79f583eb48dfc81674164e1fc471e
pkg.go.dev/vuln/GO-2023-2328
nvd.nist.gov/vuln/detail/CVE-2023-45286
Show 10 moreShow less
github.com/go-resty/resty/releases/tag/v2.11.0
github.com/advisories/GHSA-xwh9-gc39-5298
pkg.go.dev
github.com/CVEProject/cvelistV5/tree/main/cves/2023/45xxx/CVE-2023-45286.json
security-tracker.debian.org/tracker/CVE-2023-45286
github.com/go-resty/resty
ubuntu.com/security/CVE-2023-45286
cve.org/CVERecord?id=CVE-2023-45286
suse.com/security/cve/CVE-2023-45286
suse.com/security/cve/CVE-2023-48795