What kind of vulnerability is it? Who is impacted?
SseStream._transform() interpolates message.type and message.id directly into Server-Sent Events text protocol output without sanitizing newline characters (\r, \n). Since the SSE protocol treats both \r and \n as field delimiters and \n\n as event boundaries, an attacker who can influence these fields through upstream data sources can inject arbitrary SSE events, spoof event types, and corrupt reconnection state. Spring Framework's own security patch (6e97587) validates these same fields (id, event) for the same reason.
Actual impact:
event: types, causing client-side EventSource.addEventListener() callbacks to fire for wrong event types.data: payloads, potentially triggering XSS if the client renders SSE data as HTML without sanitization.id: fields, corrupting the Last-Event-ID header on reconnection, causing the client to miss or replay events.type or id fields of SSE messages. Direct HTTP request input does not reach these fields without developer code bridging the gap.
-
Has the problem been patched? What versions should users upgrade to?
Patched in @nestjs/core@11.1.18
{
"github_reviewed": true,
"github_reviewed_at": "2026-04-06T17:59:51Z",
"cwe_ids": [
"CWE-74"
],
"severity": "MODERATE",
"nvd_published_at": "2026-04-07T16:16:27Z"
}