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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-47103-python-statemachine-rce — Python StateMachine 3.0.0 < 3.2.0 RCE عبر تقييم SCXML غير الآمن <data expr> وحقن eval() في Python. | Kitploit
أدوات/GitHubGitHub/saiteja-erukude/cve-2026-47103-python-statemachine-rce
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاختبار الاختراق
GitHubsaiteja-erukude/cve-2026-47103-python-statemachine-rce

CVE-2026-47103-python-statemachine-rce

Python StateMachine 3.0.0 < 3.2.0 RCE عبر تقييم SCXML غير الآمن <data expr> وحقن eval() في Python.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-47103: تنفيذ تعليمات برمجية عن بُعد في Python StateMachine عبر حقن eval() في SCXML

درجة الخطورة: حرجة، CVSS 4.0 9.3، CVSS 3.1 9.8 (مخصصة من قِبل VulnCheck، CNA)

المتجه (v4.0): CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

المتجه (v3.1): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

المتأثر: Python StateMachine >= 3.0.0, < 3.2.0

تم الإصلاح في: 3.2.0

CWE: CWE-95 (تحييد غير صحيح للتوجيهات في الكود المُقيَّم ديناميكيًا، حقن Eval)؛ ويتوافق أيضًا مع CWE-94 (تحكم غير صحيح في توليد الكود، حقن الكود)

قدّم التقرير: Sai Teja Erukude

CNA: VulnCheck

نُشر: 17 يونيو 2026


ملخص

تحتوي إصدارات Python StateMachine 3.0.0 قبل 3.2.0 على ثغرة تنفيذ تعليمات برمجية عن بُعد في مسار معالجة SCXML.

يقبل SCXMLProcessor مستندات SCXML ويحتفظ بسمات التعبيرات مثل <data expr="...">. في الإصدارات المعرضة للخطر، تمر سلاسل التعبيرات هذه عبر مسار معالجة نموذج بيانات SCXML وتصل في النهاية إلى دالة eval() المدمجة في بايثون دون أي عزل.

يمكن للمهاجم الذي يمكنه توفير مستند SCXML أو التأثير عليه وضع كود بايثون داخل سمة <data expr="...">. وعندما يوزّع التطبيق المستهلك ملف SCXML ويشغّل المعالج، يتم تقييم التعبير في سياق عملية بايثون المستضيفة.

التأثير

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

يمكن أن يكون التعرض عن بُعد أو محليًا اعتمادًا على كيفية استلام التطبيق المستهلك لمستندات SCXML. تتضمن مسارات الإدخال الخطرة:

  • ملفات SCXML المرفوعة.
  • تعريفات سير العمل أو آلة الحالة التي يتحكم فيها المستخدم.
  • ملفات الإعدادات المحمّلة من مواقع غير موثوقة.
  • محتوى SCXML المقدَّم من الإضافات أو الامتدادات أو عمليات التكامل.
  • أي ميزة مواجهة للشبكة تقبل أو تولّد SCXML من مدخلات المستخدم.

يمكن أن يسمح الاستغلال الناجح بما يلي:

  • قراءة أو تعديل الملفات التي يمكن لعملية الاستضافة الوصول إليها.
  • الوصول إلى متغيرات البيئة وأسرار التطبيق.
  • استدعاء الخدمات الداخلية التي يمكن الوصول إليها من المضيف.
  • تعطيل سلوك التطبيق أو استبداله.

المسار المتأثر

سلسلة الاستدعاءات المعرضة للخطر المبلّغة إلى VulnCheck هي:

root@kitploit:~
SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()

تحدث المشكلة عند تقييم عنصر نموذج بيانات SCXML مُحلَّل أثناء بدء تشغيل المعالج.

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

يحتوي تدفق التحكم المعرض للخطر على فشلين في حدود الثقة:

  1. يقبل معالج SCXML نص التعبير من مستند SCXML.
  2. يتم تقييم نص التعبير باستخدام دالة eval() الخام في بايثون.

يستخدم إثبات المفهوم سمة <data expr="..."> لأن هذا المسار يُنفَّذ أثناء SCXMLProcessor.start(). إن تمرير قاموس globals فارغ إلى eval() لا يعطل الدوال المدمجة في بايثون؛ فلا يزال بإمكان بايثون حقن دوال مدمجة قابلة للاستخدام في سياق التقييم. ونتيجة لذلك، يمكن للتعبير الوصول إلى __import__ وتنفيذ كود بايثون.

يكتب حمولة إثبات غير ضارة ملف علامة محليًا:

root@kitploit:~
<data id="x" expr="__import__('pathlib').Path(...).write_text(...)"/>

يتم إنشاء العلامة فقط بعد تحليل مستند SCXML وتقييم start() لتعبير نموذج البيانات.

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

يُنشئ package_builder.py ملف SCXML محليًا يتحكم فيه المهاجم في malicious-charts/data_expr_start.scxml. يحتوي الملف المُنشأ على حمولة <data expr> غير ضارة تكتب marker.txt في دليل إثبات المفهوم هذا.

لا يُثبّت run_poc.py أي خطافات ولا يعدّل الحزمة المستهدفة. فهو يستورد الحزمة المنشورة python-statemachine==3.1.2، ويوزّع ملف SCXML المُنشأ باستخدام SCXMLProcessor.parse_scxml_file(...)، ويشغّل المعالج، ويطبع أدلة العلامة قبل/بعد.

شغّل في بيئة اختبار محلية فقط:

root@kitploit:~
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python run_poc.py

الأدلة المتوقعة على الإصدارات المعرضة للخطر:

root@kitploit:~
statemachine_version: 3.1.2
installed_package: True
data_marker_before_start: False
data_marker_after_start: True
marker_contents:
python_statemachine_scxml_data_expr_eval_triggered
success: True

السلوك المهم هو أن marker.txt غير موجود قبل start()، ثم يصبح موجودًا بعد ذلك، مما يثبت أن تعبير SCXML نُفِّذ داخل عملية بايثون المستضيفة.

الحمولة غير ضارة عمدًا. فهي تكتب سلسلة العلامة المحلية هذه فقط:

root@kitploit:~
python_statemachine_scxml_data_expr_eval_triggered

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

المعالجة

قم بالترقية إلى Python StateMachine 3.2.0 أو أحدث.

يجب أن يتجنب الإصلاح الدائم تقييم نص تعبير SCXML الذي يتحكم فيه المهاجم باستخدام دالة eval() الخام في بايثون. تشمل الأساليب الأكثر أمانًا:

  • استبدال eval() الخام بمُقيِّم تعبيرات مقيد.
  • التعامل مع التقييم الكامل لتعبيرات بايثون كوضع صريح للإدخال الموثوق.
  • تعطيل تقييم بايثون افتراضيًا لـ SCXML القادم من مصادر غير موثوقة.
  • رفض أو تعقيم سمات تعبيرات SCXML الخطرة قبل المعالجة.

إذا لم يكن الترقية الفورية ممكنة:

  • لا تعالج مستندات SCXML من مستخدمين غير موثوقين.
  • لا تعرّض ميزات رفع SCXML أو تعريفات سير العمل للعملاء غير المصادَق عليهم.
  • تحقق من صحة ملفات SCXML قبل وصولها إلى SCXMLProcessor.
  • شغّل معالجة SCXML في بيئة مقيدة ومعزولة بأقل الامتيازات.

الجدول الزمني للإفصاح

التاريخالحدث
22 مايو 2026إرسال الثغرة إلى VulnCheck
26 مايو 2026بدأت VulnCheck الإفصاح؛ تم التخصيص المؤقت لـ CVE-2026-47103
17 يونيو 2026نُشر CVE-2026-47103

الإشادة

اكتشف وقدّم التقرير Sai Teja Erukude، بتنسيق عبر VulnCheck.

المراجع

  • سجل CVE: https://www.cve.org/CVERecord?id=CVE-2026-47103
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47103
  • نشرة VulnCheck: https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • نشرة GitHub: https://github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
  • ملاحظات إصدار Python StateMachine 3.2.0: https://github.com/fgmacedo/python-statemachine/releases/tag/v3.2.0
  • مشروع Python StateMachine: https://github.com/fgmacedo/python-statemachine
تنزيل الأداة