Snyk has a proof-of-concept or detailed explanation of how to exploit this vulnerability.
The probability is the direct output of the EPSS model, and conveys an overall sense of the threat of exploitation in the wild. The percentile measures the EPSS probability relative to all known EPSS scores. Note: This data is updated daily, relying on the latest available EPSS model version. Check out the EPSS documentation for more details.
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applicationsUpgrade bandit to version 1.14.0 or higher.
bandit is a HTTP server for Plug and WebSock apps.
Affected versions of this package are vulnerable to HTTP Request Smuggling via Bandit.HTTP1.Socket.do_parse_chunk_size/2, which passes the full chunk-size line, including any chunk extension (e.g. 3;ext=value), directly to String.to_integer/2. Because that string is not valid hex, the call raises an ArgumentError, crashing the connection process with a 500 response and a stack trace. An attacker can send a chunked-encoded request whose chunk-size line contains a semicolon-delimited extension to trigger the crash, or craft a body where a bare LF terminates the chunk-size line to desynchronize a front-end proxy and smuggle a second request to a back-end.
1. Run Bandit with a Plug that reads the body and records each request's method and path.
2. On one connection, send `POST /public` with `Transfer-Encoding: chunked` and the body `2;\nxx\r\n40\r\n0\r\n\r\n`, followed directly by `GET /admin HTTP/1.1` with `Content-Length: 7` and the body `\r\n0\r\n\r\n`.
3. Bandit dispatches both `POST /public` with the body `40` and `GET /admin`. A proxy that ends lines at a bare LF would have forwarded the same bytes as the single `POST /public`.
Note: The PoC section describes steps using a Bandit server with a Plug that reads the body, but states no specific version, runtime, or OS.