Description
The package github.com/pires/go-proxyproto before 0.5.0 are vulnerable to Denial of Service (DoS) via the parseVersion1() function. The reader in this package is a default bufio.Reader wrapping a net.Conn. It will read from the connection until it finds a newline. Since no limits are implemented in the code, a deliberately malformed V1 header could be used to exhaust memory in a server process using this code - and create a DoS. This can be exploited by sending a stream starting with PROXY and continuing to send data (which does not contain a newline) until the target stops acknowledging. The risk here is small, because only trusted sources should be allowed to send proxy protocol headers.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| — | github.com/pires/go-proxyproto | unspecified – < 0.5.0 | 0.5.0 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | golang-github-pires-go-proxyproto | 0.4.2-1 | — |
| Debian 13 | golang-github-pires-go-proxyproto | 0.4.2-1 | — |
| Debian 12 | golang-github-pires-go-proxyproto | 0.4.2-1 | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 22.04 LTS | golang-github-pires-go-proxyproto | No fix yet | — |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| Go | github.com/pires/go-proxyproto | < 0.5.0 | 0.5.0 | GHSA-fqh4-rh59-xhvf |
References
- https://snyk.io/vuln/SNYK-GOLANG-GITHUBCOMPIRESGOPROXYPROTO-1081577
- https://github.com/pires/go-proxyproto/pull/71
- https://github.com/pires/go-proxyproto/issues/69
- https://github.com/pires/go-proxyproto/commit/7f48261db810703d173f27f3309a808cc2b49b8b
- FEDORA-2021-e01c1fe4cc vendor-advisory
- FEDORA-2021-f5fcd9b0c1 vendor-advisory