Sårbarhed i Python, der muliggør udførelse af systemkommandoer fra isolerede scripts

Metoden til at omgå systemer for isoleret kodeeksekvering på Python er offentliggjort, baseret på en velkendt fejl, der opstod i Python 2.7, identificeret i 2012 og stadig ikke rettet i Python 3. Fejlen gør det muligt at initiere adgang til allerede frigivet hukommelse (Use-After-Free) i CPython ved hjælp af specielt sammensat Python-kode. Det blev oprindeligt antaget, at fejlen ikke udgør en sikkerhedstrussel og kun i meget sjældne tilfælde, normalt kunstigt skabte, kunne føre til, at et script afsluttede med en fejl.

Sikkerhedsforskeren med pseudonymet kn32 har interesseret sig for problemet og formået at forberede et fungerende exploit, der giver mulighed for at kalde enhver systemkommando uden direkte adgang til metoder som os.system. Exploit er implementeret i ren Python og fungerer uden import af eksterne biblioteker og uden at installere en 'code.__new__' handler. Der benyttes kun 'builtin.__id__' som hook, hvilket normalt ikke er forbudt. Praktisk set kan den foreslåede kode anvendes til at omgå isolationsmekanismer i forskellige tjenester og miljøer (f.eks. i læringsmiljøer, online-shells, indbyggede håndteringsprogrammer osv.), som tillader kodeeksekvering i Python, men begrænser tilgængelige kald og forhindrer adgang til metoder som os.system.

Den foreslåede kode fungerer som et alternativ til os.system, der opererer ved at udnytte en sårbarhed i CPython. Exploit fungerer med alle versioner af Python 3 på x86-64 systemer og demonstrerer stabil drift i Ubuntu 22.04, selv når beskyttelsesmetoder som PIE, RELRO og CET er aktiveret. Drift er baseret på at få oplysninger fra Python-koden om adressen på en af funktionerne i den eksekverbare CPython-kode. På baggrund af denne adresse beregnes den grundlæggende adresse for CPython i hukommelsen og adressen for funktionen system() i den indlæste libc-instans. Afslutningsvis initieres et direkte spring til en specifik adresse system med indsættelse af pegeren til det første argument til strengen '/bin/sh'.

Sårbarhed i Python, der muliggør udførelse af systemkommandoer fra isolerede scripts


Kilde: opennet.ru
Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster