Bevezetett javítások a Linux kernel veremcímeinek véletlenszerűvé tételére a rendszerhívásokhoz

Kees Cook, a kernel.org korábbi fő rendszergazdája és az Ubuntu Security Team vezetője, aki jelenleg a Google-nál dolgozik az Android és a ChromeOS biztonságának biztosításán, javításokat tett közzé, amelyek véletlenszerűvé teszik a rendszerhívások feldolgozása során a kernelverem eltolásait. A javítások javítják a kernel biztonságát azáltal, hogy megváltoztatják a verem elhelyezését, így a verem elleni támadások sokkal nehezebbek és kevésbé sikeresek. A kezdeti megvalósítás támogatja az ARM64 és x86/x86_64 processzorokat.

A javítás eredeti ötlete a PaX RANDKSTACK projekthez tartozik. 2019-ben Elena Reshetova, az Intel mérnöke megpróbálta létrehozni ennek az ötletnek a megvalósítását, amely alkalmas a fő Linux kernelbe. Később a kezdeményezést Kees Cook vette át, aki bemutatta a kernel fő verziójához megfelelő implementációt. A javítások a tervek szerint az 5.13-as kiadás részeként kerülnek bele. A mód alapértelmezés szerint le lesz tiltva. Ennek engedélyezéséhez javasolt a kernel „randomize_kstack_offset=on/off” parancssori paramétere és a CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT beállítás. A mód engedélyezésének többletköltsége a becslések szerint körülbelül 1%-os teljesítményveszteség.

A javasolt védelem lényege, hogy minden rendszerhíváshoz véletlenszerű veremeltolást válasszunk, ami megnehezíti a verem elrendezésének meghatározását a memóriában, még címadatok fogadása után is, hiszen a következő rendszerhívás megváltoztatja a verem alapcímét. A PaX RANDKSTACK implementációval ellentétben a kernelbe való beépítésre javasolt javításokban a véletlenszerűsítés nem a kezdeti szakaszban (cpu_current_top_of_stack), hanem a pt_regs struktúra beállítása után történik, ami lehetetlenné teszi a ptrace alapú módszerek alkalmazását a véletlenszerű eltolás meghatározására. hosszan tartó rendszerhívás során.

Forrás: opennet.ru

Hozzászólás