Ranljivost v Pythonu, ki omogoča klic sistemskih ukazov iz izoliranih skriptov

Objavljena je bila metoda za obhod izoliranih sistemov za izvajanje kode v Pythonu, ki temelji na uporabi dolgo znane napake, ki se je pojavila v Python 2.7, je bila ugotovljena leta 2012 in še ni bila popravljena v Python 3. Napaka omogoča uporabo posebej povezanih Koda Python za začetek dostopa do že sproščenega pomnilnika (Use-After-Free) v Pythonu. Sprva se je domnevalo, da napaka ne predstavlja varnostne grožnje in le v zelo redkih primerih, običajno umetno ustvarjenih, lahko povzroči nenormalno prekinitev skripta.

Varnostni raziskovalec pod psevdonimom kn32 se je začel zanimati za problem in uspel je pripraviti delujoč exploit, ki omogoča klic katerega koli sistemskega ukaza brez neposrednega dostopa do metod, kot je os.system. Izkoriščanje je implementirano v čistem Pythonu in deluje brez uvoza zunanjih knjižnic in brez namestitve upravljalnika »code.__new__«. Od kavljev se uporablja samo “builtin.__id__”, kar običajno ni prepovedano. S praktične strani je predlagano kodo mogoče uporabiti za obhod izolacijskih mehanizmov v različnih storitvah in okoljih (na primer v učnih okoljih, spletnih lupinah, vgrajenih upravljalnikih itd.), ki omogočajo izvajanje kode Python, vendar omejujejo razpoložljive klice in ne dovoljujejo klicnih metod, kot je os.system.

Predlagana koda je analogna klicu os.system, ki deluje tako, da izkorišča ranljivost v CPython. Izkoriščanje deluje z vsemi različicami Pythona 3 v sistemih z arhitekturo x86-64 in dokazuje stabilno delovanje na Ubuntu 22.04, tudi ko so omogočeni zaščitni načini PIE, RELRO in CET. Delo se zmanjša na pridobivanje informacij iz kode Python o naslovu ene od funkcij v izvedljivi kodi CPython. Na podlagi tega naslova se izračunata osnovni naslov CPython v pomnilniku in naslov funkcije system() v primerku libc, naloženem v pomnilnik. Na koncu se sproži neposreden prehod na določen sistemski naslov z zamenjavo kazalca prvega argumenta v vrstico “/bin/sh”.

Ranljivost v Pythonu, ki omogoča klic sistemskih ukazov iz izoliranih skriptov


Vir: opennet.ru

Dodaj komentar