Május közepén készítettem egy összefoglalást Mingo akkor megjelent exec-shield patchével kapcsolatban. Akkor nem voltak a legjobbak a tapasztalataim. A programok nagy része nem működött, és még filerendszer korrupciós hibák is adódtak, amit hajlamos voltam a patch számlájára írni. Most - tekinetettel az elmúlt napok b0f és patch fesztiváljára - Ingo kiadta az exec-shield patch legújabb verzióit a 2.4 és 2.6 kernelekhez.
Úgy döntöttem, hogy kipróbálom. Lássuk a tapasztalatokat. Összevetettem, hogy mi nem működött májusban (ami miatt aztán nem is használtam az exec-shield-et) és mi nem működik most. Tesztkonfiguráció:
Debian GNU/Linux Sarge
2.6.0-test5-exec-shield-nptl kernel
exec-shield-2.6.0-test5-G2 patch
Hogy telepítsem az exec-shield-et?
1.) Letöltöd a vanilla 2.6.0-test5 forrását innen
2.) Kibontod a /usr/src/ könyvtárba, készítesz rá symlinket "linux" néven
3.) cd /usr/src/linux
4.) wget redhat.com/~mingo/exec-shield/exec-shield-2.6.0-test5-G2
5.) cat exec-shield-2.6.0-test5-G2 | patch -p1
6.) konfigurálod a kernelt ízlés szerint
7.) make
8.) make modules_install
9.) lilo (vagy akármi)
10.) reboot az új kernellel
(Ha nem a 2.6-os kernelt futtatod, akkor töltsd le a vanilla linux-2.4.22-t, és a fent leírtak szerint patcheld meg a exec-shield-2.4.22-G2-vel)
Ellenőrizzük, hogy megy-e az exec-shield:
sunshine:# cat /proc/sys/kernel/exec-shield
2
Ez azt jelenti, hogy az exec-shield be van kapcsolva, és a "2"-es szinten fut. Három védelmi szintet különböztetünk meg:
"0": az exec-shield ki van kapcsolva, nincs védelem
"1": az exec-shield be van kapcsolva, de csak a PT_GNU_STACK végrehajtható állományokra [pl. azok a binárisok, amelyek a legújabb gcc-kkel vannak fordítva]
"2": teljes exec-shield védelem
Hogyan tudok váltani az egyes szintek között?
Például, az exec-shield kikapcsolása:
sunshine:# echo "0" > /proc/sys/kernel/exec-shield
sunshine:/# cat /proc/sys/kernel/exec-shield
0
Például, az exec-shield "1"-es szintre állítása:
sunshine:# echo "1" > /proc/sys/kernel/exec-shield
sunshine:/# cat /proc/sys/kernel/exec-shield
1
Rendben. Az exec-shield működik. Hasonlítsuk össze a májusi eredményekkel:
Ami nem működött májusban: Mozilla, Evolution, semmilyen Java alkalmazás, mert a Java VM nem indult, UT2003, Duke Nukem 3D, Xmms, szinte az összes GNOME alkalmazás, Galeon, MySQL
Ami jelenleg működik "2"-es szintű (azaz teljes exec-shield) védelemmel: OpenOffice.org, MPlayer, Evolution, xawtv, xmms, Mozilla, XChat, Abiword, cdrecord, JDictionary + Java VM j2re1.4.1_01, Unreal Tournament 2003 (natív linux), Frozen Bubble
szerver stuffok: mysql, apache, Postfix, Amavisd-new, Spamassassin
Ami csak az "1"-es szinten működött: Star Wars Jedi Academy (korábbi cikk) + winex 3.1, viszont "1"-es szinten kifogástalanul ment
A Jedi Academy-nél a jasp.exe-t nem engedte futtatni "2"-es szinten:
sunshine:~/.transgaming/c_drive/Program Files/Star Wars Jedi Knight Jedi Academy/GameData# winex jasp.exe
/usr/lib/transgaming/winex/bin/wine: can't exec 'jasp.exe': error=21
Konklúzió: Igen! Ez kell nekem. Minden tökéletesen fut, ha csak a b0f-ok közül egyet is megfog, már megérte patchelni. Egyetlen programnál kellett csak védelmi szintet csökkenteni, a többi program kifogástalanul működött. Arra kiváncsi lennék, hogy az MPlayer-ben levő b0f-ok ellen védelmet nyújtana-e a patch. Ha igen, akkor szerintem "highly recommended" minden desktop gépen.
(Feltéve, hogy a hosszabb távon történő tesztelés alatt nem mutat semmilyen rendellenességet. Azt figyelembe kell venni, hogy a patch alig 2 napos, így előfordulhatnak vele nem várt gondok is.)
Közben elkészültek a Exec-shield vs. paxtest & libsafe eredmények. Ingo kiadta az exec-shield patch következő verzióját, mert az előző bugos volt. Leteszteltem ezt a patchet is. Az eredmények sokkal jobbak. Eredmények itt. Exec-shield a 2.6.0-test6 kernelhez itt.