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.
{ "vanir_signatures": [ { "signature_version": "v1", "digest": { "threshold": 0.9, "line_hashes": [ "232977267776323730279055942466391420493", "23119890018860005825266378863797224565", "200787430779553903926757555396896340908", "111087665460754029894027671599367963389" ] }, "source": "https://github.com/puma/puma/commit/f196b23be24712fb8fb16051cc124798cc84f70e", "deprecated": false, "target": { "file": "ext/puma_http11/org/jruby/puma/Http11.java" }, "signature_type": "Line", "id": "CVE-2024-45614-3e545615" }, { "signature_version": "v1", "digest": { "length": 1234.0, "function_hash": "159998391064100209205141949366143445508" }, "source": "https://github.com/puma/puma/commit/f196b23be24712fb8fb16051cc124798cc84f70e", "deprecated": false, "target": { "file": "ext/puma_http11/org/jruby/puma/Http11.java", "function": "http_field" }, "signature_type": "Function", "id": "CVE-2024-45614-9ed0cd80" } ] }