{"id":"CVE-2026-15603","aliases":["CLSA-2026-1788988321","CLSA-2026-1790108609","CLSA-2026-1792164155","CLSA-2026-1792496584","DEBIAN-CVE-2026-15603","EUVD-2026-67720","GHSA-jxfw-x594-9x9m","UBUNTU-CVE-2026-15603"],"status":"published","title":"morgan vulnerable to Log Forging via unescaped Unicode line separators","description":"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.","severity":{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00397,"percentile":0.34429,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-117"],"published":"2026-08-28T13:41:49Z","modified":"2026-10-28T02:30:53Z","fixes":[{"ecosystem":"npm","package":"morgan","fixed_in":["1.12.0"],"sources":["ghsa","osv"]},{"ecosystem":"TuxCare:npm","package":"morgan","fixed_in":["1.6.1-tuxcare.3","1.5.3-tuxcare.3"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"node-morgan","fixed_in":["1.12.0+~1.9.10-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.12.0"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.6.1-tuxcare.0"},{"fixed":"1.6.1-tuxcare.3"}]}],"versions":["1.6.1","1.6.1-tuxcare.1","1.6.1-tuxcare.2"]},{"source":"osv","ecosystem":"TuxCare:npm","package":"morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.5.3-tuxcare.0"},{"fixed":"1.5.3-tuxcare.3"}]}],"versions":["1.5.3","1.5.3-tuxcare.1","1.5.3-tuxcare.2"]},{"source":"osv","ecosystem":"TuxCare:npm","package":"morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.10.1-tuxcare.0"},{"fixed":"1.10.1-tuxcare.1"}]}],"versions":["1.10.1"],"bundled":3},{"source":"osv","ecosystem":"TuxCare:npm","package":"morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.11.0-tuxcare.0"},{"fixed":"1.11.0-tuxcare.2"}]}],"versions":["1.11.0"],"bundled":2},{"source":"osv","ecosystem":"Debian:12","package":"node-morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.10.0+~1.9.3-1","1.10.1+~1.9.10-1","1.12.0+~1.9.10-1","1.12.1+~1.9.10-1"]},{"source":"osv","ecosystem":"Debian:13","package":"node-morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.10.0+~1.9.3-1","1.10.1+~1.9.10-1","1.12.0+~1.9.10-1","1.12.1+~1.9.10-1"]},{"source":"osv","ecosystem":"Debian:14","package":"node-morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.12.0+~1.9.10-1"}]}],"versions":["1.10.0+~1.9.3-1","1.10.1+~1.9.10-1"]},{"source":"osv","ecosystem":"npm","package":"morgan","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.12.0"}]}]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"node-morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.10.0-2"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"node-morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.10.0+~1.9.3-1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"node-morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.10.1+~1.9.10-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"node-morgan","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.10.0+~1.9.3-1","1.10.1+~1.9.10-1"]}],"products":[{"vendor":"morgan","product":"morgan"},{"vendor":"morgan_project","product":"morgan"}],"references":[{"url":"https://github.com/expressjs/morgan/security/advisories/GHSA-jxfw-x594-9x9m","tags":["Vendor Advisory","advisory","web","report"]},{"url":"https://cna.openjsf.org/security-advisories.html","tags":["Third Party Advisory","advisory","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-15603","tags":["advisory"]},{"url":"https://github.com/expressjs/morgan/commit/fbf93833186920cc39bb19b247e4a86b61bef4fe","tags":["web"]},{"url":"https://github.com/expressjs/morgan/releases/tag/1.12.0","tags":["web"]},{"url":"https://github.com/advisories/GHSA-jxfw-x594-9x9m"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/15xxx/CVE-2026-15603.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-15603","tags":["advisory"]},{"url":"https://github.com/expressjs/morgan","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2026-15603","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-15603","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-15603","title":"morgan vulnerable to Log Forging via unescaped Unicode line separators","description":"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.","status":"published","published":"2026-08-28T13:41:49.521Z","modified":"2026-08-28T18:23:58.959Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-117"],"updated_at":"2026-11-02T13:47:39.876248Z"}],"euvd":[{"id":"EUVD-2026-67720","description":"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.","status":"published","published":"2026-08-28T13:41:49Z","modified":"2026-08-28T18:23:58Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T18:01:22.759915Z"}],"ghsa":[{"id":"GHSA-jxfw-x594-9x9m","title":"morgan vulnerable to Log Forging via unescaped Unicode line separators","description":"### Impact\n\nMorgan 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.\n\nWhen 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.\n\n### Patches\n\nUsers should upgrade to version 1.12.0.\n\n### Workarounds\n\nNone. 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.","status":"published","published":"2026-09-08T21:28:26Z","modified":"2026-09-08T21:28:26Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium"}],"cwes":["CWE-117"],"updated_at":"2026-11-02T14:41:14.764963Z"}],"nvd":[{"id":"CVE-2026-15603","description":"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.","status":"published","published":"2026-08-28T16:17:07.417Z","modified":"2026-08-31T17:11:12.057Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-117"],"updated_at":"2026-11-02T14:12:42.366888Z"}],"osv":[{"id":"CVE-2026-15603","title":"morgan vulnerable to Log Forging via unescaped Unicode line separators","description":"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.","status":"published","published":"2026-08-28T13:41:49.521Z","modified":"2026-10-28T02:30:53.713272707Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium"}],"cwes":["CWE-117"],"updated_at":"2026-11-02T15:44:57.682091Z"},{"id":"DEBIAN-CVE-2026-15603","description":"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.","status":"published","published":"2026-08-28T16:17:07.417Z","modified":"2026-10-01T03:02:51.321667376Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:45:52.562592Z"},{"id":"GHSA-jxfw-x594-9x9m","title":"morgan vulnerable to Log Forging via unescaped Unicode line separators","description":"### Impact\n\nMorgan 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.\n\nWhen 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.\n\n### Patches\n\nUsers should upgrade to version 1.12.0.\n\n### Workarounds\n\nNone. 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.","status":"published","published":"2026-09-08T21:28:26Z","modified":"2026-09-08T21:45:04.626840405Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium"}],"cwes":["CWE-117"],"updated_at":"2026-11-02T15:46:51.10002Z"},{"id":"UBUNTU-CVE-2026-15603","description":"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.","status":"published","published":"2026-08-28T16:17:00Z","modified":"2026-10-17T12:58:06.587967976Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T16:56:00.592716Z"},{"id":"CLSA-2026-1788988321","title":"TuxCare security update for morgan (1 CVE)","description":"TuxCare rebuilt morgan to address 1 CVE. Fixed in 1.6.1-tuxcare.3.","status":"published","published":"2026-09-09T21:12:01Z","modified":"2026-10-15T09:47:55.916535018Z","updated_at":"2026-11-02T15:43:47.938828Z"},{"id":"CLSA-2026-1790108609","title":"TuxCare security update for morgan (1 CVE)","description":"TuxCare rebuilt morgan to address 1 CVE. Fixed in 1.5.3-tuxcare.3.","status":"published","published":"2026-09-22T20:23:29Z","modified":"2026-10-15T09:45:34.38153231Z","updated_at":"2026-11-02T15:43:48.28229Z"},{"id":"CLSA-2026-1792164155","title":"TuxCare security update for morgan (3 CVEs)","description":"TuxCare rebuilt morgan to address 3 CVEs. Fixed in 1.10.1-tuxcare.1.","status":"published","published":"2026-10-16T15:22:35Z","modified":"2026-10-16T16:30:46.818302656Z","updated_at":"2026-11-02T15:43:51.747192Z"},{"id":"CLSA-2026-1792496584","title":"TuxCare security update for morgan (2 CVEs)","description":"TuxCare rebuilt morgan to address 2 CVEs. Fixed in 1.11.0-tuxcare.2.","status":"published","published":"2026-10-20T11:43:04Z","modified":"2026-10-20T13:45:09.618925459Z","updated_at":"2026-11-02T15:43:54.378946Z"}]}}
