Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Primary rating from Vendor (mitre) · only source for this CVE.
CVSS VectorVendor: mitre
Lifecycle Timeline
4DescriptionCVE.org
CrowCpp Crow through v1.3.1 HTTP is vulnerable to response header injection via unvalidated response header values.
AnalysisAI
HTTP response header injection in CrowCpp Crow through v1.3.1 allows remote attackers to inject arbitrary CR/LF sequences into response headers when application code passes unvalidated input to header-setting APIs. The flaw stems from the framework not stripping \r\n characters in header keys or values, enabling CRLF injection that can lead to response splitting, cache poisoning, or XSS depending on how the embedding application uses user input. No public exploit identified at time of analysis and EPSS is very low (0.02%), but the upstream fix in PR #1167 confirms the issue and provides a sanitization routine.
Technical ContextAI
Crow is a C++ header-only micro web framework (similar in design to Python's Flask) used to build HTTP servers and REST APIs in C++ applications. The root cause is CWE-113 (Improper Neutralization of CRLF Sequences in HTTP Headers / HTTP Response Splitting): the framework's response and request header setters in include/crow/http_response.h and include/crow/http_request.h accepted arbitrary strings as header keys and values without filtering carriage-return (\r) or line-feed (\n) bytes. Because HTTP uses CRLF as a delimiter between headers and between headers and the body, an attacker-controlled value containing \r\n can terminate the current header early and inject additional headers or even a full second response. The upstream patch (PR #1167) introduces a sanitize_header_value() helper that strips \r and \n from both keys and values at the point where headers are set, and adds a demonstration example (helloworld_inject.cpp) showing the unsafe set_header("X-Custom", "safe\r\nInjected: yes") pattern.
RemediationAI
Upstream fix available via GitHub PR https://github.com/CrowCpp/Crow/pull/1167, which adds a sanitize_header_value() routine that strips \r and \n from header keys and values in both http_request.h and http_response.h; a released patched version is not independently confirmed in the provided data, so consumers should pull the post-PR-1167 commit from the CrowCpp/Crow repository and rebuild, or wait for a tagged release after v1.3.1. As a code-level workaround until the upgrade lands, audit every call site that invokes res.set_header(), res.add_header(), or request header setters with non-literal data and wrap the value with an equivalent strip of \r and \n before passing it in - note this requires source changes and a rebuild since Crow is header-only. At the perimeter, a reverse proxy or WAF (nginx, HAProxy, Envoy, ModSecurity) can be configured to drop or reject upstream responses containing bare CRLF inside header values, with the trade-off that strict header validation may break legitimate multi-line legacy headers and adds an extra hop. Avoid disabling Crow's header API as a mitigation since that would break normal application functionality.
LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr
Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han
A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi
Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc
Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula
Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root
LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(
Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti
Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr
SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg
Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ
Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali
Same weakness CWE-113 – HTTP Response Splitting
View allSame technique Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-34020
GHSA-jjvh-j394-wqm7