Pythonen ahultasuna, sistemaren komandoak script isolatuetatik deitzea ahalbidetzen duena

Python-en kode isolatuak exekutatzeko sistemak saihesteko metodo bat argitaratu da, Python 2.7-n agertu zen aspaldiko akats baten erabileran oinarrituta, 2012an identifikatu zen eta oraindik ez da zuzendu Python 3-n. Akatsak bereziki lotuak erabiltzea ahalbidetzen du. Python kodea dagoeneko libre dagoen memoriarako sarbidea hasteko (Erabili-After-Free) Python-en. Hasieran, uste zen erroreak ez zuela segurtasun mehatxurik sortzen eta oso kasu bakanetan bakarrik, normalean artifizialki sortutakoak, gidoia anormalaren amaiera ekar zezakeela.

Kn32 ezizeneko segurtasun-ikertzaile bat arazoarekin interesatu zen eta os.system bezalako metodoetarako sarbide zuzena izan gabe sistemaren edozein komando deitzea posible egiten duen lan-explotazioa prestatzea lortu zuen. Explotazioa Python hutsean inplementatzen da eta kanpoko liburutegiak inportatu gabe eta "code.__new__" kudeatzailea instalatu gabe funtzionatzen du. Amuetatik, "builtin.__id__" bakarrik erabiltzen da, normalean debekatuta ez dagoena. Alderdi praktikoan, proposatutako kodea hainbat zerbitzu eta ingurunetan (adibidez, ikaskuntza-inguruneetan, lineako shelletan, kudeatzaile integratuetan, etab.) isolamendu-mekanismoak saihesteko erabil daiteke, Python kodea exekutatzeko aukera ematen dutenak, baina mugatzen dutenak. eskuragarri dauden deiak eta ez onartu os.system bezalako dei-metodorik.

Proposatutako kodea os.system deiaren analogo bat da, CPython-en ahultasun bat baliatuz funtzionatzen duena. Explotazioak Python 3-ren bertsio guztiekin funtzionatzen du x86-64 arkitektura duten sistemetan eta Ubuntu 22.04n funtzionamendu egonkorra erakusten du, PIE, RELRO eta CET babes moduak gaituta daudenean ere. Lana CPython kode exekutagarriko funtzioetako baten helbideari buruzko informazioa lortzea da. Helbide horretan oinarrituta, memorian CPython-en oinarrizko helbidea eta memorian kargatutako libc instantziako system() funtzioaren helbidea kalkulatzen dira. Amaieran, sistemaren helbide zehatz baterako trantsizio zuzena hasten da lehen argumentuaren erakuslea "/bin/sh" lerroan ordezkatuz.

Pythonen ahultasuna, sistemaren komandoak script isolatuetatik deitzea ahalbidetzen duena


Iturria: opennet.ru

Gehitu iruzkin berria