Miggo Logo

CVE-2023-39325:
HTTP/2 rapid reset can cause excessive work in net/http

7.5

CVSS Score

Basic Information

EPSS Score
-
Published
10/11/2023
Updated
4/28/2024
KEV Status
No
Technology
TechnologyGo

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
golang.org/x/netgo< 0.17.00.17.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability occurs because the HTTP/2 server did not limit the number of concurrently executing handler goroutines when clients rapidly reset streams. The processHeaders function was responsible for initiating these handlers. Before the patch, it would call runHandler in a new goroutine for each request without adequate checks if prior requests were reset mid-flight. The runHandler function is where the resource-consuming work happens. The patch introduces scheduleHandler and handlerDone to implement a queue and limit for these goroutines, modifying processHeaders to use this new scheduling logic and runHandler to signal its completion. Therefore, processHeaders (in its pre-patch state) is the primary function that allows the vulnerability to be triggered, and runHandler is the function whose uncontrolled concurrent execution leads to resource exhaustion.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

* m*li*ious *TTP/* *li*nt w*i** r*pi*ly *r**t*s r*qu*sts *n* imm**i*t*ly r*s*ts t**m **n **us* *x**ssiv* s*rv*r r*sour** *onsumption. W*il* t** tot*l num**r o* r*qu*sts is *oun*** *y t** *ttp*.S*rv*r.M*x*on*urr*ntStr**ms s*ttin*, r*s*ttin* *n in-pro*

Reasoning

T** vuln*r**ility o**urs ****us* t** *TTP/* s*rv*r *i* not limit t** num**r o* *on*urr*ntly *x**utin* **n*l*r *oroutin*s w**n *li*nts r*pi*ly r*s*t str**ms. T** `pro**ss*****rs` *un*tion w*s r*sponsi*l* *or initi*tin* t**s* **n*l*rs. ***or* t** p*t**