
CVE-2024-28397 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, js2py में सैंडबॉक्स एस्केप जो क्राफ्टेड JavaScript के माध्यम से रिमोट कोड निष्पादन की अनुमति देता है, गतिशील पैच फिक्स के साथ।
js2py एक लोकप्रिय पायथन पैकेज है जो पायथन इंटरप्रेटर के अंदर जावास्क्रिप्ट कोड का मूल्यांकन कर सकता है। इसका उपयोग विभिन्न वेब स्क्रेपर्स द्वारा वेबसाइटों पर जावास्क्रिप्ट कोड को पार्स करने के लिए किया जाता है।
js2py में ग्लोबल वेरिएबल्स के कार्यान्वयन में एक कमजोरी है, जो एक हमलावर को js2py वातावरण में पायथन ऑब्जेक्ट्स के संदर्भ प्राप्त करने की अनुमति दे सकती है, जिससे हमलावर js वातावरण से बाहर निकल सकता है और होस्ट पर मनमाना कमांड निष्पादित कर सकता है।
आमतौर पर उपयोगकर्ता जावास्क्रिप्ट कोड को js2py वातावरण से बाहर जाने से रोकने के लिए js2py.disable_pyimport() को कॉल करेगा। लेकिन इस कमजोरी के साथ, एक हमलावर इस प्रतिबंध को दरकिनार कर सकता है और होस्ट पर कोई भी कमांड निष्पादित कर सकता है।
खतरनाक अभिनेता ऐसी वेबसाइटें होस्ट कर सकते हैं जिनमें दुर्भावनापूर्ण js फ़ाइलें हों या HTTP API के माध्यम से दुर्भावनापूर्ण स्क्रिप्ट भेज सकते हैं ताकि पीड़ित उन्हें डिक्रिप्ट कर सकें। ऐसा करके, अभिनेता लक्ष्य पर किसी भी शेल कमांड को निष्पादित करके होस्ट पर रिमोट कोड निष्पादन कर सकता है।
js2py पायथन3.12 का समर्थन नहीं करता है।js2py स्थापित करने के लिए pip install js2py चलाएँ और poc.py निष्पादित करें, जो होस्ट पर head -n 1 /etc/passwd; calc; gnome-calculator; kcalc; को निष्पादित करने का प्रयास करेगा।Success! the vulnerability exists... प्रिंट करना चाहिए या कैलकुलेटर पॉप अप करना चाहिए।वर्तमान में आधिकारिक फिक्स उपलब्ध नहीं है, उपयोगकर्ता js2py को गतिशील रूप से पैच करने के लिए fix.py का उपयोग कर सकता है या स्रोत कोड को ठीक करने के लिए patch.txt का उपयोग कर सकता है।
मुझे यह कमजोरी फरवरी में मिली और मैंने आधिकारिक रेपो में एक PR सबमिट किया। लेकिन उसके बाद, PR को भुला दिया गया और चार महीने बीत गए, मैंने अब PoC और फिक्स जारी करने का निर्णय लिया।