Puma is a Ruby/Rack web server built for parallelism. In affected versions clients could clobber values set by intermediate proxies (such as X-Forwarded-For) by providing a underscore version of the same header (X-ForwardedFor). Any users relying on proxy set variables is affected. v6.4.3/v5.6.9 now discards any headers using underscores if the non-underscore version also exists. Effectively, allowing the proxy defined headers to always win. Users are advised to upgrade. Nginx has a underscoresin_headers configuration variable to discard these headers at the proxy level as a mitigation. Any users that are implicitly trusting the proxy defined headers for security should immediately cease doing so until upgraded to the fixed versions.
{
"cwe_ids": [
"CWE-639"
]
}[
{
"source": "https://github.com/puma/puma/commit/f196b23be24712fb8fb16051cc124798cc84f70e",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "ext/puma_http11/org/jruby/puma/Http11.java"
},
"id": "CVE-2024-45614-3e545615",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"232977267776323730279055942466391420493",
"23119890018860005825266378863797224565",
"200787430779553903926757555396896340908",
"111087665460754029894027671599367963389"
]
}
},
{
"source": "https://github.com/puma/puma/commit/f196b23be24712fb8fb16051cc124798cc84f70e",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "http_field",
"file": "ext/puma_http11/org/jruby/puma/Http11.java"
},
"id": "CVE-2024-45614-9ed0cd80",
"signature_type": "Function",
"digest": {
"length": 1234.0,
"function_hash": "159998391064100209205141949366143445508"
}
}
]