---
id: CVE-2026-15603
aliases:
  - GHSA-jxfw-x594-9x9m
title: morgan vulnerable to Log Forging via unescaped Unicode line separators
summary: morgan vulnerable to Log Forging via unescaped Unicode line separators
severity: medium
cvss: 5.3
cwe:
  - CWE-117
vendor: morgan
product: morgan
ecosystem: npm
affected:
  - morgan < 1.12.0
patched:
  - morgan 1.12.0
published: '2026-09-08'
updated: '2026-09-08'
sourceUpdated: '2026-09-08T21:28:26Z'
source: GHSA
sourceUrl: 'https://github.com/advisories/GHSA-jxfw-x594-9x9m'
references:
  - url: >-
      https://github.com/expressjs/morgan/security/advisories/GHSA-jxfw-x594-9x9m
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-15603'
  - url: >-
      https://github.com/expressjs/morgan/commit/fbf93833186920cc39bb19b247e4a86b61bef4fe
  - url: 'https://cna.openjsf.org/security-advisories.html'
  - url: 'https://github.com/expressjs/morgan/releases/tag/1.12.0'
  - url: 'https://github.com/advisories/GHSA-jxfw-x594-9x9m'
tags:
  - ghsa
  - npm
epss: 0.00294
epssPercentile: 0.19704
ingestedAt: '2026-09-08T22:12:30.968Z'
---

## Overview

### 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.

## Affected packages

- `morgan < 1.12.0`

## Remediation

Upgrade to a patched release:

- `morgan 1.12.0`
