Skip to content

GHSA-h86h-8ppg-mxmh BIT-golang-2021-31525 CVE-2021-31525 GO-2022-0236

golang.org/x/net/http/httpguts vulnerable to Uncontrolled Recursion

Medium Go
Severity
5.9 / 10
Medium · CVSS 3.1
Exploit chance (EPSS)
3.69%
Chance of exploitation in the next 30 days. Higher than 89.71% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-674 Uncontrolled Recursion
Fix
Available
2 packages have a fixed version

Description

golang.org/x/net/http/httpguts in Go before 1.15.12 and 1.16.x before 1.16.4 allows remote attackers to cause a denial of service (panic) via a large header to ReadRequest or ReadResponse. Server, Transport, and Client can each be affected in some configurations.

Affected versions

Go

PackageVulnerableFixed in
golang.org/x/net
< 0.0.0-20210428140749-89ef3d95e781
0.0.0-20210428140749-89ef3d95e781
stdlib
< 1.15.12
>= 1.16.0-0, < 1.16.4
1.15.12
1.16.4

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

golang.org/x/net Go → 0.0.0-20210428140749-89ef3d95e781

go
go get golang.org/x/net@v0.0.0-20210428140749-89ef3d95e781 && go mod tidy

stdlib Go → 1.16.4

go
go get stdlib@v1.16.4 && go mod tidy

Severity breakdown

CVSS 3.1 5.9

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H

Attack vector
Network
Attack complexity
High
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Weakness

CWE-674: Uncontrolled Recursion

The product does not properly control the amount of recursion that takes place, consuming excessive resources, such as allocated memory or the program stack.

How to prevent it
  • Implementation: Ensure that an end condition will be reached under all logic conditions. The end condition may include checking against the depth of recursion and exiting with an error if the recursion goes too deep. The complexity of the end condition contributes to the effectiveness of this action.
  • Implementation: Increase the stack size.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-4374-p667-p6c8
HTTP/2 rapid reset can cause excessive work in net/http
High Known exploited Also affects golang.org/x/net
GHSA-qppj-fm5r-hxr3
HTTP/2 Stream Cancellation Attack
Medium Known exploited Also affects golang.org/x/net
CVE-2020-0601
Certificate validation bypass on Windows in crypto/x509
High Known exploited Also affects stdlib
GO-2026-6866
Check all ancestor namespace transitions when rendering raw text in html in golang.org/x/net
Not rated yet Also affects golang.org/x/net
GO-2026-6860
Avoid quadratic complexity when coalescing text nodes in html in golang.org/x/net
Not rated yet Also affects golang.org/x/net
RUSTSEC-2026-0382
Distrust compromised intermediate certificates in crypto/x509
Medium Also affects stdlib
GO-2026-6613
HTTP/1 server connection desynchronization after 2xx CONNECT response in net/http
High Also affects stdlib
GO-2026-6609
Lack of limit on size of parsed Range headers in net/http
High Also affects stdlib

Credits: Guido Vranken

Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor