En sÄrbarhet i Python som möjliggör utlösning av systemkommandon frÄn isolerade skript.

En metod för att kringgÄ system för isolerad exekvering av kod pÄ Python har publicerats, baserad pÄ en vÀlkÀnd sÄrbarhet som dök upp i Python 2.7, identifierad 2012 och fortfarande inte ÄtgÀrdad i Python 3. SÄrbarheten tillÄter, genom hjÀlp av sÀrskilt sammanstÀlld kod i Python, att göra anrop till redan frigjuten minne (Use-After-Free) i CPython. Inledningsvis troddes sÄrbarheten inte vara ett sÀkerhetsproblem och skulle bara i mycket sÀllsynta fall, som oftast Àr konstgjorda, kunna leda till att skriptet kraschar.

SÀkerhetsforskaren med pseudonymen kn32 blev intresserad av problemet och lyckades förbereda en fungerande exploit som möjliggör anrop av vilken systemkommandon som helst, utan direkt tillgÄng till metoder som os.system. Exploiten Àr implementerad pÄ ren Python och fungerar utan att importera externa bibliotek och utan att installera en hanterare för "code.__new__". Endast "builtin.__id__" anvÀnds som hook, vilket vanligtvis inte Àr förbjudet. Ur praktisk synpunkt kan den föreslagna koden anvÀndas för att kringgÄ isoleringsmekanismer i olika tjÀnster och miljöer (t.ex. trÀningsmiljöer, online-skal, inbyggda hanterare etc.) som tillÄter exekvering av kod i Python men begrÀnsar tillgÀngliga anrop och inte tillÄter anrop till metoder som os.system.

Den föreslagna koden Àr ett alternativ till anrop av os.system, som fungerar genom att utnyttja en sÄrbarhet i CPython. Exploiten fungerar med alla versioner av Python 3 pÄ system med x86-64-arkitektur och visar stabil funktion i Ubuntu 22.04, Àven med aktiverade skyddslÀgen sÄsom PIE, RELRO och CET. Arbetet innebÀr att fÄ information om adressen till en av funktionerna i den körande koden i CPython frÄn Python-koden. Baserat pÄ denna adress berÀknas den grundlÀggande adressen för CPython i minnet och adressen för funktionen system() i den laddade instansen av libc. Avslutningsvis initieras en direkt övergÄng till en viss adress system med insÀttning av pekaren för det första argumentet som pekar pÄ strÀngen "\/bin\/sh".

En sÄrbarhet i Python som möjliggör utlösning av systemkommandon frÄn isolerade skript.


KĂ€lla: opennet.ru
Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster