-
Notifications
You must be signed in to change notification settings - Fork 17.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
net/http, x/net/http2: close connections when receiving too many headers (CVE-2023-45288) #65051
Comments
@gopherbot please open backport issues for this security fix. |
Backport issue(s) opened: Remember to create the cherry-pick CL(s) as soon as the patch is submitted to master, according to https://go.dev/wiki/MinorReleases. |
This comment was marked as outdated.
This comment was marked as outdated.
We accidentally opened a duplicate issue for this: #66297. Closed that one in favor of keeping the original issue. Current status: This is the main issue for CVE-2023-45288. #65386 was the 1.20 backport, obsolete because we missed the 1.20 window. |
Change https://go.dev/cl/576076 mentions this issue: |
Change https://go.dev/cl/576075 mentions this issue: |
Disable cmd/internal/moddeps test, since this update includes PRIVATE track fixes. Fixes CVE-2023-45288 For #65051 Fixes #66298 Change-Id: I5bbf774ebe7651e4bb7e55139d3794bd2b8e8fa8 Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/2197227 Reviewed-by: Tatiana Bradley <[email protected]> Run-TryBot: Damien Neil <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]> Reviewed-on: https://go-review.googlesource.com/c/go/+/576076 Auto-Submit: Dmitri Shuralyov <[email protected]> TryBot-Bypass: Dmitri Shuralyov <[email protected]> Reviewed-by: Than McIntosh <[email protected]>
Disable cmd/internal/moddeps test, since this update includes PRIVATE track fixes. Fixes CVE-2023-45288 For #65051 Fixes #65387 Change-Id: I17da6da2fe0dd70062b49f94377875acb34829a1 Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/2197267 Reviewed-by: Dmitri Shuralyov <[email protected]> Run-TryBot: Damien Neil <[email protected]> Reviewed-by: Tatiana Bradley <[email protected]> Reviewed-on: https://go-review.googlesource.com/c/go/+/576075 TryBot-Bypass: Dmitri Shuralyov <[email protected]> Commit-Queue: Dmitri Shuralyov <[email protected]> Auto-Submit: Dmitri Shuralyov <[email protected]> Reviewed-by: Than McIntosh <[email protected]>
Change https://go.dev/cl/576155 mentions this issue: |
Change https://go.dev/cl/576215 mentions this issue: |
Change https://go.dev/cl/576057 mentions this issue: |
…ng too many headers Maintaining HPACK state requires that we parse and process all HEADERS and CONTINUATION frames on a connection. When a request's headers exceed MaxHeaderBytes, we don't allocate memory to store the excess headers but we do parse them. This permits an attacker to cause an HTTP/2 endpoint to read arbitrary amounts of data, all associated with a request which is going to be rejected. Set a limit on the amount of excess header frames we will process before closing a connection. Thanks to Bartek Nowotarski for reporting this issue. Fixes CVE-2023-45288 For golang/go#65051 Change-Id: I15df097268df13bb5a9e9d3a5c04a8a141d850f6 Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/2130527 Reviewed-by: Roland Shoemaker <[email protected]> Reviewed-by: Tatiana Bradley <[email protected]> Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/2197243 Run-TryBot: Damien Neil <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]> Reviewed-on: https://go-review.googlesource.com/c/net/+/576057 LUCI-TryBot-Result: Go LUCI <[email protected]> Auto-Submit: Dmitri Shuralyov <[email protected]>
Can someone please clarify something for me? I have a Golang project that relies on Is it the case that moving my project to Go v1.21.9 is sufficient to address this issue? Or do I ALSO need to run |
It is sufficient, unless you are directly importing the x/net/http2 package and using it to initialize HTTP2 servers. |
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2/1.21.9. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2/1.21.9. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2/1.21.9. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2/1.21.9. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2/1.21.9. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2/1.21.9. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2/1.21.9. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2/1.21.9. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Update x/net to pick up golang/net@ba87210 To fully fix we need to build with go >= 1.22.2. xref: golang/go#65051 Signed-off-by: Francesco Romani <[email protected]>
Maintaining HPACK state requires that we parse and process all HEADERS and CONTINUATION frames on a connection. When a request's headers exceed MaxHeaderBytes, we don't allocate memory to store the excess headers but we do parse them. This permits an attacker to cause an HTTP/2 endpoint to read arbitrary amounts of header data, all associated with a request which is going to be rejected. These headers can include Huffman-encoded data which is significantly more expensive for the receiver to decode than for an attacker to send.
Set a limit on the amount of excess header frames we will process before closing a connection.
Thanks to Bartek Nowotarski (https://nowotarski.info/) for reporting this issue.
This is CVE-2023-45288 and Go issue https://go.dev/issue/65051 (this issue).
This is a PRIVATE issue for CVE-2023-45288, tracked in http://b/319262343 and fixed by http://tg/2130527.
/cc @golang/security and @golang/release
The text was updated successfully, but these errors were encountered: