CVE-2026-15603: morgan vulnerable to Log Forging via unescaped Unicode line separators

Published Aug 28, 2026
·
Updated

Impact

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.

Patches

Users should upgrade to version 1.12.0.

Workarounds

None. The affected values include the request URL and request headers, which are core to access logging, so there is no practical format-based mitigation. Upgrade to 1.12.0.

Other sources

morgan is an HTTP request logger middleware for Node.js. In versions prior to 1.12.0, the internal helper that escapes log token values did not neutralize the Unicode line separator characters U+0085 (Next Line), U+2028 (Line Separator), and U+2029 (Paragraph Separator). An unauthenticated remote client can place these characters in an attacker-controlled log token, for example a Basic auth username surfaced through the remote-user token, so that Unicode-aware downstream log processing splits a single request log into multiple logical records. This is a log forging issue (CWE-117) and an incomplete-fix follow-up to CVE-2026-5078, which only addressed ASCII control characters. The issue is fixed in morgan 1.12.0, which extends the escaping set to cover these Unicode line separators. Upgrade to morgan 1.12.0 to remediate.

— MITRE

Affected Software

4 affected componentsFixes available
npm/morgan<1.12.0
Morgan Project Morgan Node.js<1.12.0
npm/morgan<1.12.0
1.12.0
IBM API Connect V12 OnPrem<=v12.1.0.0 - v12.1.1.2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/morgan to a version that resolves this vulnerability.

    Fixed in 1.12.0
  2. Upgrade

    Upgrade morgan to a version that resolves this vulnerability.

    Fixed in 1.12.0

Event History

Aug 28, 2026
CVE Published
via MITRE·01:41 PM
Data Sourced
via MITRE·01:41 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·04:17 PM
DescriptionSeverityWeaknessAffected Software
Sep 8, 2026
Advisory Published
via GitHub·09:28 PM
Data Sourced
via GitHub·09:28 PM
DescriptionSeverityWeaknessAffected Software
Oct 8, 2026
Data Sourced
via IBM·12:00 AM
DescriptionAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Frequently Asked Questions

1

Who is exposed to this issue?

Applications using morgan versions earlier than 1.12.0 are affected if attacker-controlled values can be included in logged tokens. An unauthenticated remote client can trigger the issue, for example by supplying a Basic authentication username that is logged through the remote-user token.

2

What does successful exploitation require?

The attacker needs to inject U+0085, U+2028, or U+2029 into an attacker-controlled value that morgan writes to a log token. The downstream log processor must treat these Unicode characters as line separators for the injected content to be split into separate logical records.

3

How can this be remediated?

Upgrade morgan to version 1.12.0. This version escapes U+0085, U+2028, and U+2029 in addition to the ASCII control characters addressed by the earlier fix.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203