Ez arra valo, hogy ne lehessen _elteriteni_ a programot, tehat a korset tudja hogy fork() utan socket() hivas kovetkezik, nem pedig mondjuk system(). Ha system()-et lat, akkor terminalja a programot, sikitozik, satobbi...
Na most arra lennek kivancsi, hogy multithreades alkalmazas (egy pid latszik) hogy valosul meg? Ugyanis azok aszinkron hivogathatnak syscall-t. Ez az egyik.
A masik, hogy ez sem megoldas, hiszen ha enged read()-et, akkor kiolvashato vele file. Jelen esetben mondjuk a passwd/shadow/barmi mas. Tehat csak a parametereit kell manipulalni. Ez olyan, mint az ASLR meg a PAX. Nem oldja meg a problemat, de meglehetosen leszukiti az attack-vectort. ret2libc-vel most nem az osszes library hivasra lehet ugrani, hanem csak arra ami a korset-nek tetszik. Ha code-exec lehetseges, akkor viszont le is lehet emulalni mondjuk a read, write, stb... szekvenciat amig el nem erjuk a grafban a kivant megengedett syscallt.
synapse
--------------------------
The OOM killer is like a surgeon that amputates the limb of a man to save his life: losing a limb is not a nice thing, but sometimes there is nothing better to do.
"Understanding the Linux Kernel" on page frame reclaiming