A Kees Cook új javításokat vezetett be a Linux kernelverem-biztonságának javítása érdekében

Linux

Kees Cook, a kernel.org korábbi fő rendszergazdája és az Ubuntu biztonsági csapatának vezetője, aki most a Google-nál dolgozik az Android és a ChromeOS védelmében, kiadott egy olyan javítócsomagot, amely véletlenszerűen randomizálja a kernel stack eltolását a rendszerhívások kezelésekor. A javítások a verem helyének megváltoztatásával javítják a kern biztonságát, lvagy emiatt a stack támadások sokkal nehezebbek és kevésbé sikeresek

A javítás eredeti ötlete a PaX RANDKSTACK projektjéhez tartozik. 2019-ben Elena Reshetova, az Intel mérnöke megpróbálta létrehozni ezt az ötletet, amely alkalmas a Linux kernel fő összetételébe való felvételre.

Ezt követően Kees Cook kezdeményezte aki megfelelő implementációt mutatott be a kernel fő verziójához és kinek a javításait tervezik a Linux 5.13-as verziójára.

A mód alapértelmezés szerint le lesz tiltva, és annak engedélyezéséhez a rendszermag parancssori paramétere felajánlásra kerül "Randomize_kstack_offset = be / ki»És a beállítások CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, Ezenkívül a mód engedélyezésének általános költségeit a teljesítmény körülbelül 1% -os veszteségére becsülik.

A javasolt védelem lényege, hogy minden rendszerhíváshoz véletlenszerű veremeltolást kell választani, ami még a címinformációk vétele esetén is bonyolítja a verem elrendezésének meghatározását a memóriában, mivel a verem alapcíme a következő híváskor megváltozik.

Ellentétben a PaX RANDK STACK, a kernelbe felvételre javasolt javításokban, a randomizálás a kezdeti szakaszban nem történik meg, de a pt_regs struktúra beállítása után, ami lehetetlenné teszi a ptrace-alapú módszerek használatát a véletlenszerű eltolás meghatározására egy régóta futó rendszerhívás során.

Mivel a Linux kernelverem-védelme folyamatosan javult (vmap-alapú veremtérképezés védelmi oldalakkal, thread_info eltávolítás, STACKLEAK), a támadóknak új utakat kellett találniuk kihasználásaik működéséhez.

Olyan helyzetekben vannak, és továbbra is támaszkodnak a kernel stack determinizmusra, amikor VMAP_STACK és THREAD_INFO_IN_TASK_STRUCT nem voltak relevánsak. Például a következő friss támadásokat akadályozták volna, ha a veremeltolódás nem lenne meghatározó a rendszerhívások között

A randomize_kstack_offset függvény célja egy véletlenszerű eltolás hozzáadása miután a pt_regs-t a veremre tolta, és mielőtt a szál verem többi részét felhasználta volna a rendszerhívás-feldolgozás során, változtassa meg minden alkalommal, amikor egy folyamat rendszerhívást ad ki. A véletlenszerűség forrását jelenleg az architektúra határozza meg (de az x86 az rdtsc () alacsony bájtját használja).

A jövőbeni fejlesztések lehetségesek az entrópia különböző forrásaihoz, de kívül esnek a javítás hatókörén. Ezenkívül a kiszámíthatatlanság növelése érdekében a rendszerhívások végén új eltolások kerülnek kiválasztásra (amelyeknek az idejét kevésbé kell könnyen mérni a felhasználói térből, mint a rendszerhívás belépésekor), és ezeket egy változóban tárolják. CPU, így az érték élettartama nem marad kifejezetten egyetlen feladathoz kötve.

Ehhez nincs látható változás az x86-on, mert a veremvédő már feltétel nélkül le van tiltva a fordítóegységnél, de a változtatásra az arm64-ben van szükség. Sajnos nincs olyan attribútum, amellyel letilthatná a veremvédőt bizonyos funkciókhoz. Összehasonlítás a PaX RANDKSTACK függvénnyel: A RANDKSTACK függvény véletlenszerűen randomizálja a verem kezdetének helyét (cpu_current_top_of_stack), vagyis tartalmazza a pt_regs struktúra helyét a veremben.

kezdetben ez a tapasz ugyanazt a megközelítést követte, de a legutóbbi megbeszélések során kiderült, hogy kevéssé értékes, mintha a ptrace funkció elérhető lenne egy támadó számára, a PTRACE_PEEKUSR használatával különféle eltolásokat olvashat / írhat a pt_regs szerkezetre, megfigyelheti a pt_regs hozzáférések gyorsítótár-viselkedését és megtudhatja a véletlenszerű stack offset.

Végül megemlítik azt a kezdeti megvalósítás támogatja az ARM64 és x86 / x86_64 processzorokat.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.