
PoC وإصلاح لـ CVE-2024-28397: هروب من الصندوق الرملي في js2py يسمح بتنفيذ الأوامر عن بعد (RCE) عبر التلاعب بمراجع كائنات Python. يتضمن خطوات إعادة الإنتاج وتصحيح ديناميكي.
js2py هي حزمة بايثون شائعة يمكنها تقييم كود جافاسكريبت داخل مترجم بايثون. يتم استخدامها بواسطة العديد من أدوات استخراج الويب لتحليل كود جافاسكريبت على مواقع الويب.
توجد ثغرة أمنية في تطبيق المتغيرات العالمية داخل js2py، والتي قد تسمح للمهاجم بالحصول على مراجع لكائنات بايثون في بيئة js2py، وبالتالي السماح للمهاجم بالخروج من بيئة js وتنفيذ أوامر عشوائية على المضيف.
عادةً ما يقوم المستخدم باستدعاء js2py.disable_pyimport() لمنع كود جافاسكريبت من مغادرة بيئة js2py. ولكن باستخدام هذه الثغرة، يمكن للمهاجم تجاوز هذا القيد وتنفيذ أي أمر على المضيف.
يمكن للجهات الخبيثة استضافة مواقع ويب تحتوي على ملفات js ضارة أو إرسال نصوص برمجية ضارة عبر HTTP API ليقوم الضحايا بفك تشفيرها. من خلال ذلك، يمكن للجهة الفاعلة تنفيذ تعليمات برمجية عن بُعد على المضيف عن طريق تنفيذ أي أمر شل على الهدف.
js2py لا يدعم بايثون 3.12.pip install js2py لتثبيت js2py وتنفيذ poc.py، والذي سيحاول تنفيذ head -n 1 /etc/passwd; calc; gnome-calculator; kcalc; على المضيف.Success! the vulnerability exists... أو إظهار آلة حاسبة.حاليًا لا يوجد إصلاح رسمي متاح، يمكن للمستخدم استخدام fix.py لتطبيق تصحيح ديناميكي على js2py أو استخدام patch.txt لإصلاح كود المصدر.
لقد اكتشفت هذه الثغرة في فبراير، وأرسلت طلب سحب (PR) إلى المستودع الرسمي. ولكن بعد ذلك، تم نسيان الطلب ومرت أربعة أشهر، لذا قررت إطلاق الـ PoC والإصلاح الآن.