Nel pacchetto Python Js2Py, scaricato 1,2 milioni di volte il mese scorso, è stata identificata una vulnerabilità (CVE-2024-28397) che consente di bypassare l'isolamento della sandbox ed eseguire codice nel sistema durante l'elaborazione di dati formattati appositamente in JavaScript. Questa vulnerabilità può essere sfruttata per attaccare programmi che utilizzano Js2Py per eseguire codice JavaScript. La correzione è attualmente disponibile solo come patch. È stato preparato un prototipo di exploit per testare la possibilità di attacco.
Il pacchetto Js2Py implementa un interprete e un traduttore JavaScript, consentendo di eseguire codice JavaScript in un ambiente isolato macchina virtuale o di tradurre JavaScript in un equivalente in Python. Il progetto è interamente scritto in Python e non utilizza motori JavaScript esterni. In pratica, la libreria è utilizzata in vari crawler web, sistemi di download e analizzatori di siti, supportando l'elaborazione di contenuti generati da codice JavaScript.
Tra le applicazioni interessate dalla vulnerabilità ci sono Lightnovel Crawler (un'utilità per scaricare libri da servizi online e salvarli in vari formati per la lettura offline), cloudscraper (che bypassa automaticamente le pagine di protezione dai bot utilizzate nel CDN Cloudflare) e pyLoad (un gestore di download che supporta l'elaborazione di pagine generate in JavaScript). Durante l'elaborazione di contenuti JavaScript formattati appositamente in queste applicazioni, un aggressore può causare l'esecuzione di codice arbitrario a livello di sistema.
La vulnerabilità è presente nell'implementazione di una variabile globale all'interno di js2py, che consente di ottenere un riferimento a un oggetto Python da codice JavaScript eseguito in un ambiente isolato, nonostante la chiamata al metodo js2py.disable_pyimport() per disabilitare l'importazione di oggetti Python. Per eseguire codice arbitrario nel sistema, l'attaccante può approfittare della vulnerabilità per accedere all'oggetto Popen dal modulo subprocess di Python. È interessante notare che la modifica per correggere la vulnerabilità è stata inviata al progetto Js2Py il primo marzo, ma non è stata ancora accettata dopo tre mesi e mezzo.
Fonte: opennet.ru
