CVE-2026-15603: morgan vulnerable to Log Forging via unescaped Unicode line separators
Morgan writes attacker-controlled request data to the access log through its tokens. The 1.11.0 fix neutralizes C0 control characters, DEL, and backslash, but it does not escape the Unicode line separators U+0085 (NEL), U+2028 (LINE SEPARATOR), or U+2029 (PARAGRAPH SEPARATOR). These code points are reachable through several tokens, including the request URL (:url), request headers such as :user-agent and :referrer, arbitrary :req[header] values, and the Basic auth username (:remote-user). NEL is valid obs-text in HTTP header values, so an attacker can place it in an ordinary request header.
When such a value is logged, the raw code points survive into the emitted access-log record, and downstream ECMAScript-aware or Unicode-aware log processing splits the single physical record into multiple logical records. This allows an attacker to forge log entries. The built-in combined, common, default, and short formats are affected, as well as any custom format. This is an incomplete fix of CVE-2026-5078.
References
- cna.openjsf.org/security-advisories.html
- github.com/advisories/GHSA-jxfw-x594-9x9m
- github.com/expressjs/morgan/commit/fbf93833186920cc39bb19b247e4a86b61bef4fe
- github.com/expressjs/morgan/releases/tag/1.12.0
- github.com/expressjs/morgan/security/advisories/GHSA-jxfw-x594-9x9m
- nvd.nist.gov/vuln/detail/CVE-2026-15603
Code Behaviors & Features
Detect and mitigate CVE-2026-15603 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →