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

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

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.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

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

الخطورة: حرجة، CVSS 4.0 9.3، CVSS 3.1 9.8 (مُعيَّنة من قِبل VulnCheck، الجهة المانحة لمعرّفات CVE)

المتجه (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

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


الملخص

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

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

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

التأثير

قد يتمكن المهاجم من تنفيذ تعليمات Python برمجية عشوائية إذا عالج تطبيقٌ متأثرٌ محتوى SCXML يتحكم فيه المهاجم.

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

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

قد يسمح الاستغلال الناجح بما يلي:

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

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

سلسلة الاستدعاء المتأثرة التي أُبلغ عنها إلى VulnCheck هي:

SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()

تُستثار المشكلة عند تقييم عنصر datamodel في SCXML تم تحليله أثناء بدء تشغيل المعالج.

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

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

  1. يقبل معالج SCXML نص تعبير من مستند SCXML.
  2. يُقيَّم نص التعبير باستخدام eval() الخام في Python.

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

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

<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 في دليل PoC هذا.

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

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

python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python run_poc.py

الأدلة المتوقعة على الإصدارات المصابة:

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 نُفِّذ داخل عملية Python المستضيفة.

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

python_statemachine_scxml_data_expr_eval_triggered

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

المعالجة

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

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

  • استبدال eval() الخام بمُقيِّم تعبيرات مقيَّد.
  • التعامل مع تقييم تعبيرات Python الكامل كوضع صريح للمدخلات الموثوقة.
  • تعطيل تقييم Python افتراضيًا لملفات 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
تنزيل الأداة