Pagkahuyang sa Python nga nagtugot sa mga command sa sistema nga tawagan gikan sa nahilit nga mga script

Usa ka pamaagi ang gipatik aron malaktawan ang nahilit nga mga sistema sa pagpatuman sa code sa Python, base sa paggamit sa usa ka dugay na nga nailhan nga bug nga nagpakita sa Python 2.7, giila sa 2012 ug wala pa matul-id sa Python 3. Gitugotan sa bug ang paggamit sa espesyal nga nalambigit Python code aron masugdan ang pag-access sa napagawas na nga memorya (Use-After-Free) sa Python. Sa sinugdan, gituohan nga ang kasaypanan wala maghatag ug hulga sa seguridad ug sa talagsa ra kaayong mga kaso, kasagarang artipisyal nga gihimo, mahimong mosangpot sa abnormal nga pagtapos sa script.

Ang usa ka tigdukiduki sa seguridad ubos sa pseudonym kn32 nahimong interesado sa problema ug nakahimo sa pag-andam sa usa ka nagtrabaho nga pagpahimulos nga nagpaposible sa pagtawag sa bisan unsa nga command system nga walay direktang access sa mga pamaagi sama sa os.system. Ang pagpahimulos kay giimplementar sa purong Python ug naglihok nga walay pag-import sa gawas nga mga librarya ug walay pag-instalar sa “code.__new__” handler. Sa mga kaw-it, "builtin.__id__" lang ang gigamit, nga kasagaran dili gidili. Sa praktikal nga bahin, ang gisugyot nga kodigo mahimong magamit sa paglaktaw sa mga mekanismo sa pagkahimulag sa lainlaing mga serbisyo ug palibot (pananglitan, sa pagkat-on nga mga palibot, online shells, built-in nga mga tigdumala, ug uban pa), nga nagtugot sa pagpatuman sa Python code, apan limitahan ang magamit nga mga tawag ug ayaw pagtugot sa mga pamaagi sa pagtawag sama sa os.system.

Ang gisugyot nga code usa ka analogue sa os.system nga tawag, nga naglihok pinaagi sa pagpahimulos sa pagkahuyang sa CPython. Ang pagpahimulos nagtrabaho sa tanan nga mga bersyon sa Python 3 sa mga sistema nga adunay x86-64 nga arkitektura ug nagpakita sa lig-on nga operasyon sa Ubuntu 22.04, bisan kung ang mga mode sa pagpanalipod sa PIE, RELRO ug CET gipagana. Ang trabaho naggikan sa pagkuha og impormasyon gikan sa Python code mahitungod sa address sa usa sa mga function sa executable CPython code. Base niini nga adres, ang base nga adres sa CPython sa memorya ug ang address sa system() function sa libc instance nga gikarga sa memorya gikalkula. Sa katapusan, ang usa ka direkta nga pagbalhin sa usa ka piho nga adres sa sistema gisugdan sa pagpuli sa pointer sa una nga argumento sa linya nga "/ bin / sh".

Pagkahuyang sa Python nga nagtugot sa mga command sa sistema nga tawagan gikan sa nahilit nga mga script


Source: opennet.ru

Idugang sa usa ka comment