
إثبات مفهوم لاستغلال CVE-2026-23745، وهي ثغرة اجتياز المسار في node-tar تسمح بالكتابة فوق الملفات بشكل تعسفي عبر أرشيفات tar خبيثة.
البحث: Joshua van Rijswijk
إثبات المفهوم (PoC) لثغرة CVE-2026-23745، وهي ثغرة اجتياز مسارات عالية الخطورة في node-tar ( <7.5.2).
تفشل المكتبة في تعقيم المسارات المطلقة في حقل linkpath للروابط الصلبة (Hardlinks) والروابط الرمزية (Symlinks). وهذا يسمح لأرشيفات tar الخبيثة بتجاوز جذر الاستخراج واستبدال ملفات تعسفية على النظام المضيف، حتى عند تعيين preservePaths: false.
تقع في src/unpack.ts. تستخدم المكتبة path.resolve() على مدخلات المستخدم غير المعقّمة:
// الخطأ: path.resolve يتجاهل 'cwd' إذا كانت الوسيطة الثانية مسارًا مطلقًا
const target = path.resolve(this.cwd, String(entry.linkpath))
إذا قدم المهاجم مسارًا مطلقًا (مثل /etc/passwd) في ترويسة tar، فإن node-tar يحلّه إلى جذر النظام بدلاً من دليل الاستخراج.
يقوم ملف poc.js المرفق بإنشاء أرشيف خبيث ومحاولة استبدال ملف secret.txt محلي.
تثبيت الإصدار الضعيف:
npm install [email protected]
تشغيل مولّد الاستغلال:
node poc.js
المخرجات:
[+] VULN CONFIRMED: Hardlink overwrite successful
Target file content changed to: OVERWRITTEN
تم تصحيح الثغرة في v7.5.3. يضيف التحديث stripAbsolutePath() لتعقيم أهداف الروابط قبل الحل.
المراجع: