Haavatavus Pythonis, mis võimaldab kutsuda süsteemikomandeid isoleeritud skriptidest.

On avaldatud meetod, mis ületab isoleeritud koodi täitmise süsteeme Pythonis, põhinedes pikka aega teadaoleval veal, mis ilmus Python 2.7-s, avastatud 2012. aastal ja pole siiani parandatud Python 3-s. See viga võimaldab spetsiaalselt koostatud Python-koodi abil algatada juurdepääs juba vabastatud mälu (Use-After-Free) SCPythonis. Alguses arvati, et see viga ei kujuta endast turvaohtu ja võib vaid väga harvadel juhtudel, tavaliselt kunstlikult loodud olukordades, põhjustada skripti ootamatut lõpetamist.

Turva-uuringute spetsialist, kes kasutab hüüdnime kn32, on huvitatud probleemist ning suutis välja töötada töötava eksploitatsiooni, mis võimaldab käivitada mis tahes süsteemi käsku ilma otsese juurdepääsuta os.system sarnastele meetoditele. Eksploit on kirjutatud puhtas Pythonis ja töötab ilma välistes raamatukogudes ja ilma «code.__new__» käitleja paigaldamiseta. Kasutatakse ainult hook'ide «builtin.__id__», mis tavaliselt pole keelatud. Praktikas võib ettepanekuks olev kood olla kasulik isoleerimise mehhanismide ületamiseks erinevates teenustes ja keskkondades (näiteks õppimiskeskkondades, veebikataloogides, sisseehitatud käitlejates jne), mis lubavad Pythonis koodi käivitamist, kuid piiravad saadavalolevaid kutsungiteid ja ei luba ligi pääseda sellistele meetoditele nagu os.system.

Pakutud kood on oscalli os.system analoog, mis töötab CPythonis avastatud haavatavuse kaudu. Eksploit töötab koos kõigi Python 3 versioonidega x86-64 arhitektuuriga süsteemides ja tõestab stabiilset tööd Ubuntu 22.04-s, isegi kui on aktiveeritud kaitserežiimid PIE, RELRO ja CET. Töö seisneb teabe saamisest Python keeles kirjutatud koodist ühe funktsiooni aadressi kohta CPython-i täitval koodil. Selle aadressi põhjal arvutatakse CPython-i baasaadress mälus ja funktsiooni system() aadress juba mällu laaditud libc eksemplaris. Lõpuks algatatakse otsekäik määratud aadressile system, asendades esimese argumendi näitaja stringiga "/bin/sh".

Haavatavus Pythonis, mis võimaldab kutsuda süsteemikomandeid isoleeritud skriptidest.


Allikas: opennet.ru
Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster