In het Python-pakket Js2Py, dat afgelopen maand 1,2 miljoen keer is gedownload, is een kwetsbaarheid (CVE-2024-28397) ontdekt die sandbox-isolatie kan omzeilen en het mogelijk maakt om code op het systeem uit te voeren bij het verwerken van speciaal opgemaakte gegevens in JavaScript. Deze kwetsbaarheid kan worden gebruikt om aanvallen uit te voeren op programma's die Js2Py gebruiken om JavaScript-code uit te voeren. Een fix is voorlopig alleen beschikbaar in de vorm van een patch. Er is een prototype exploit voorbereid om de aanvalsmogelijkheden te testen.
Het Js2Py-pakket implementeert een interpreter en transpiler voor JavaScript, waarmee JavaScript-code in een geĆÆsoleerde omgeving kan worden uitgevoerd. een virtuele machine of JavaScript kan worden getranspilleerd naar een Python-representatie. Het project is volledig in Python geschreven en maakt geen gebruik van externe JavaScript-engines. In de praktijk wordt de bibliotheek gebruikt in verschillende web-indexers, downloadsystemen en website-analysetools die content ondersteunen dat door JavaScript-code wordt gegenereerd.
Van de applicaties die door de kwetsbaarheid worden getroffen, zijn Lightnovel Crawler (een tool voor het downloaden van boeken uit online diensten en het opslaan in verschillende formaten voor offline lezen), cloudscraper (een tool die automatisch botbescherming omzeilt die wordt gebruikt in CDN Cloudflare) en pyLoad (een downloadmanager die het verwerken van pagina's die door JavaScript worden gegenereerd ondersteunt) opmerkelijk. Bij het verwerken van speciaal opgemaakte JavaScript-content in deze applicaties kan een aanvaller de uitvoering van willekeurige code op systeemlevel bereiken.
De kwetsbaarheid zit in de implementatie van de globale variabele binnen js2py, die het mogelijk maakt om een verwijzing naar een Python-object te verkrijgen vanuit de uitgevoerd code in een geïsoleerde omgeving, ondanks de aanroep van de methode js2py.disable_pyimport() om de import van Python-objecten uit te schakelen. Om willekeurige code op het systeem uit te voeren, kan de aanvaller de kwetsbaarheid gebruiken om toegang te krijgen tot het Popen-object uit de Python-module subprocess. Opmerkelijk is dat de wijziging ter eliminatie van de kwetsbaarheid op 1 maart naar het Js2Py-project is gestuurd, maar na drieënhalve maand nog steeds niet is goedgekeurd.
Bron: opennet.ru
