A PaX Team-nek köszönhetően elérhető egy kísérleti PaX biztonsági patch a 2.6-os (2.6.0) Linux kernelhez. A patch a 2.4.23-as kernelhez készült folt előre portolt verziója, amely jelenleg i386 platformon működik biztosan, a többi platformon valószínűleg le sem fordul.
A PaX patch használatával számos puffer túlcsordulásra építő támadásnak állhat ellen rendszerünk. Kipróbáltam a patchet a stabil 2.6.0-ás kernelen.
A tapasztalatok:A kernel simán lefordult, az összes PaX opciót engedélyeztem a ``menuconfig''-ban. Bebootolva a kernelt a fixen belefordított hálózati kártya inicializálása előtt kaptam egy ``general protection fault''-ot, de a kernel felállt, és elindította a rendszert. Lefuttattam a paxtest-0.9.5 tesztet. Eredménye:
Executable anonymous mapping : Killed
Executable bss : Killed
Executable data : Killed
Executable heap : Killed
Executable stack : Killed
Executable anonymous mapping (mprotect) : Killed
Executable bss (mprotect) : Killed
Executable data (mprotect) : Killed
Executable heap (mprotect) : Killed
Executable shared library bss (mprotect) : Killed
Executable shared library data (mprotect): Killed
Executable stack (mprotect) : Killed
Anonymous mapping randomisation test : 16 bits (guessed)
Heap randomisation test (ET_EXEC) : 13 bits (guessed)
Heap randomisation test (ET_DYN) : 25 bits (guessed)
Main executable randomisation (ET_EXEC) : 16 bits (guessed)
Main executable randomisation (ET_DYN) : 17 bits (guessed)
Shared library randomisation test : 16 bits (guessed)
Stack randomisation test (SEGMEXEC) : 23 bits (guessed)
Stack randomisation test (PAGEEXEC) : 24 bits (guessed)
Return to function (strcpy) : Vulnerable
Return to function (strcpy, RANDEXEC) : Return to function (memcpy) : Vulnerable
Return to function (memcpy, RANDEXEC) : Killed
Executable shared library bss : Killed
Executable shared library data : Killed
Writable text segments : Killed
A patch a kezdeti ``GPF''-től eltekintve nem okozott semmilyen negatív változást a kernelben (eddig). A PaX alkalmazása után néhány alkalmazás nem fut. Erről a kernel menuconfig help-je tájékozatat is minket. A legemlítésreméltóbb programok, amelyek nem indulnak el: az Xfree86 4.x verziója, a Java viruális gép és a Wine. A patch szerintem nem is desktop gépeken kap nagyobb hangsúlyt, hanem szerveren, ahol esetleg több rosszindulatú helyi felhasználóval kell számolnunk. A patchelt kernellel futott a MySQL 4.x, az Apache legújabb verziója, működött a PHP-ra írt weboldal, ment a postfix, és az amavisd-new is. Mindez Debian Sarge operációs rendszeren. Hosszabb távú tapasztalatok nincsenek, hiszen a patch 3 napja jelent meg. Tervezem egy teszt szerver felállítását, amely lokális hálón nagy terhelésnek van kitéve.
A szerver üzemeltetés szempontjából érdekes lehet még az, hogy mekkora a ``overhead''-je (overhead ebben az esetben = a patch működéséből adódó lassulás) van a patchnek. A dokumentáció szerint i386 és ppc környezetben számolnunk kell az ``overhead''-del. Erre vonatkozólag még nem végeztem méréseket. Az alpha, ia64, parisc, sparc, sparc64 és x86_64 platformokon nem kell overhead-del számolnunk.
A patch tesztelésre letölthető:
http://pax.grsecurity.net/pax-linux-2.6.0-200312302245.patch
A PaX mögött álló elgondolásról bővebben itt olvashatsz. A patchelt kernel teszteléséhez használható a paxtest-0.9.5 tesztprogram. A patchelt kernelen file alapon tudjuk a PaX jelzőket állítani. Ehhez a chpax programra van szükségünk.
Jó szórakozást!