
CVE-2024-28397: js2py सैंडबॉक्स एस्केप, pyimport प्रतिबंध को बायपास करें।
js2py एक लोकप्रिय पायथन पैकेज है जो पायथन इंटरप्रेटर के अंदर जावास्क्रिप्ट कोड का मूल्यांकन कर सकता है। इसका उपयोग विभिन्न वेब स्क्रैपर्स द्वारा वेबसाइट पर जावास्क्रिप्ट कोड को पार्स करने के लिए किया जाता है।
js2py के अंदर एक ग्लोबल वेरिएबल के कार्यान्वयन में एक कमजोरी मौजूद है, जो हमलावर को js2py वातावरण में एक पायथन ऑब्जेक्ट का संदर्भ प्राप्त करने की अनुमति देती है, जिससे हमलावर JS वातावरण से बच सकता है और होस्ट पर मनमाने आदेश निष्पादित कर सकता है।
आम तौर पर, उपयोगकर्ता js2py.disable_pyimport() को कॉल करके जावास्क्रिप्ट कोड को js2py वातावरण से बचने से रोकता है। लेकिन इस कमजोरी के साथ, हमलावर इस प्रतिबंध को दरकिनार कर सकता है और लक्ष्य होस्ट पर कोई भी आदेश निष्पादित कर सकता है।
खतरा एजेंट एक दुर्भावनापूर्ण जावास्क्रिप्ट फ़ाइल वाली वेबसाइट होस्ट कर सकता है या 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 और फिक्स जारी करने का निर्णय लिया है।