Tapasztalatok II: Exec Shield for Linux/x86

Címkék

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.

Hozzászólások

Az eredmények itt. Kicsit hosszú lett. Csak ki- és teljesen bekapcsolt állapotot néztem az "1"-es szint eredmenyei valahol a ketto kozott vannak, de inkabb a kikapcsolthoz hasonlitanak.

hat cvs mplayerem meg csak van, de az mplayer-dev-eng archivumban nem talalom a levelet. legalabb egy subject-et mondj, vagy kuld el a file-t a trey@hup.hu-ra, oszt' kiprobalom.

Hmmm... ha tényleg ilyen jól működik, és nincs vele semmi gond... akkor asszem felnyomom a gépemre.

Remélem azért még finomodik a patch, hogy minél kevesebb alkalmazást "akasszon" meg, viszont a hibákat minél jobban kiszűrje.

Talán érdemes lenne beleolvasztani a stabil kernelfába, opcionálisan választható részként... :)