Miggo Logo

CVE-2021-23409: github.com/pires/go-proxyproto vulnerable to DoS via Connection descriptor exhaustion

7.5

CVSS Score
3.1

Basic Information

EPSS Score
0.74817%
Published
7/26/2021
Updated
8/30/2023
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
github.com/pires/go-proxyprotogo< 0.6.10.6.1

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stemmed from improper handling of read deadlines during proxy protocol header processing. The commit diff shows that in protocol.go, the Listener.Accept method originally set a fixed deadline without resetting it, and Conn.readHeader lacked logic to restore user-configured deadlines after header parsing. This allowed connections without headers to persist indefinitely (pre-0.6.0) or cause premature timeouts (0.6.0). The 0.6.1 patch introduced deadline resetting in readHeader and proper timeout inheritance, confirming these functions' roles in the vulnerability.

Vulnerable functions

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

WAF Protection Rules

WAF Rule

T** p**k*** `*it*u*.*om/pir*s/*o-proxyproto` ***or* *.*.* is vuln*r**l* to **ni*l o* S*rvi** (*oS) vi* *r**tin* *onn**tions wit*out t** proxy proto*ol *****r. W*il* t*is issu* w*s p*t**** in *.*.*, t** *ix intro*u*** ***ition*l issu*s w*i** w*r* su*s

Reasoning

T** vuln*r**ility st*mm** *rom improp*r **n*lin* o* r*** ****lin*s *urin* proxy proto*ol *****r pro**ssin*. T** *ommit *i** s*ows t**t in `proto*ol.*o`, t** `List*n*r.****pt` m*t*o* ori*in*lly s*t * *ix** ****lin* wit*out r*s*ttin* it, *n* `*onn.r***