Vulnerabbiltà f'Python li tippermetti li ssejjaħ kmandi tas-sistema minn skripts sandboxed

Ġie ppubblikat metodu biex jevita sistemi iżolati ta’ eżekuzzjoni ta’ kodiċi f’Python, ibbażat fuq l-użu ta’ bug magħruf li deher f’Python 2.7, ġie identifikat fl-2012 u għadu ma ġiex ikkoreġut f’Python 3. Il-bug jippermetti l-użu ta’ konnessi apposta. Kodiċi Python biex jibda aċċess għal memorja diġà meħlusa (Use-After-Free) f'Python. Inizjalment, kien preżunt li l-iżball ma kienx ta 'theddida għas-sigurtà u biss f'każijiet rari ħafna, ġeneralment maħluqa artifiċjalment, jista' jwassal għal terminazzjoni anormali tal-iskript.

Riċerkatur tas-sigurtà taħt il-psewdonimu kn32 sar interessat fil-problema u rnexxielu jipprepara sfruttament ta 'ħidma li jagħmilha possibbli li ssejjaħ kwalunkwe kmand tas-sistema mingħajr ma jkollu aċċess dirett għal metodi bħal os.system. L-isfruttament huwa implimentat f'Python pur u jaħdem mingħajr ma jimporta libreriji esterni u mingħajr ma jinstalla l-handler "code.__new__". Mill-ganċijiet, jintuża biss "builtin.__id__", li normalment ma jkunx ipprojbit. Fuq in-naħa prattika, il-kodiċi propost jista 'jintuża biex jevita mekkaniżmi ta' iżolament f'diversi servizzi u ambjenti (pereżempju, f'ambjenti ta 'tagħlim, qxur onlajn, handlers integrati, eċċ.), li jippermettu l-eżekuzzjoni tal-kodiċi Python, iżda jillimitaw il- sejħiet disponibbli u ma jippermettux metodi ta 'sejħa bħal os.system.

Il-kodiċi propost huwa analogu tas-sejħa os.system, li taħdem billi tisfrutta vulnerabbiltà f'CPython. L-isfruttament jaħdem mal-verżjonijiet kollha ta 'Python 3 fuq sistemi b'arkitettura x86-64 u juri tħaddim stabbli fuq Ubuntu 22.04, anke meta l-modi ta' protezzjoni PIE, RELRO u CET huma attivati. Ix-xogħol jasal għall-kisba ta 'informazzjoni mill-kodiċi Python dwar l-indirizz ta' waħda mill-funzjonijiet fil-kodiċi CPython eżekutibbli. Ibbażat fuq dan l-indirizz, l-indirizz bażi ta 'CPython fil-memorja u l-indirizz tal-funzjoni system() fl-istanza libc mgħobbija fil-memorja huma kkalkulati. Fl-aħħar, tinbeda transizzjoni diretta għal indirizz ta 'sistema speċifiku bis-sostituzzjoni tal-pointer tal-ewwel argument għal-linja "/bin/sh".

Vulnerabbiltà f'Python li tippermetti li ssejjaħ kmandi tas-sistema minn skripts sandboxed


Sors: opennet.ru

Żid kumment