A Java Web Start hackelése

A résvadász hacker

Csepely Péter (Thief_hu) az idei Hacktivity-előadását a Sun Java Web Start technológia implementációs hibái bemutatásának szenteli. Ezek ismeretében elvileg akár külön-külön vagy az egyes hibákat egymással kombinálva – tetszőleges kódokat lehet lefuttatni a Web Startot használó személy számítógépén. A hallgatóság persze az előadás során megismerkedhet majd azokkal a Java-nyelv nyújtotta megoldásokkal is, amelyek a biztonság érdekében korlátokat szabnak az appleteknek és a Web Start alkalmazásoknak, s így végül egy biztonságos fejlesztői eszközzé válik a termék. Előadásában Csepely várhatóan kitér majd a Web Start egyéb védelmi célú szolgáltatásaira is, valamint az implementációs hibák forrásszintű bemutatása mellett természetesen azok javítását is szemlélteti majd. Kedvcsináló gyanánt néhány napja beszélgettünk vele a témáról.

Az interneten kutakodva először az EuroHack Team portálján akadtunk a Thief_hu accountra. Ebből az is kiderült, hogy már 2005-ben erős volt a vonzódásod a Javához, azon belül is a biztonság területéhez. Honnan ez az érdeklődés?

Az informatika jócskán az életem része volt már az EuroHack Team oldalán megjelent első fordításom megjelenése előtt is, az informatikai biztonság iránti érdeklődésemet pedig leginkább az ilyen témájú filmeknek, az online sajtóban megjelent híreknek, deface-elt oldalakon megjelent szövegeknek és az akkor „létező” hackerkultúrának köszönhetem. Azt, hogy miként kerültem annak idején az EuroHack Team IRC csatornájára, ne kérdezzétek, de itt magával rántott a közösség, s megszülettek az első fordítások, cikkek.

A Java iránti érdeklődésemet egyik közeli rokonom keltette fel. Az, hogy biztonsági hibákat kezdtem el keresni a nyelv szabadon hozzáférhető forrásában, leginkább a kíváncsiságom számlájára írható. Mivel mindenki biztonságosnak tartja magát a nyelvet, a vele implementált alkalmazásokat, szolgáltatásokat, persze hogy felkelti az ember érdeklődését, hogy vajon kijátszható-e? A Java appletekkel kezdtem a sort, de nem éreztem elég érdekesnek, valamint túl kevésnek találtam az Appletben rejlő lehetőségeket ahhoz, hogy ilyen jellegű teszteket hajtsak végre. Ezután ismerkedtem meg a Java futtató környezet Web Start technológiájával, és az eredménye egy hibajelentés lett. Amit követ majd még néhány... :)

Rövid ideig aztán egy szakportál szerkesztése következett, ez volt az Insecurity.hu. Itt elmaradt a siker...

Az InSecurity.hu portál elsődleges célja az volt, hogy létrejöjjön a régi EuroHack Team oldal pótlására valami, mert a legvégén már csak ketten gyarapítottuk a cikkek számát. Végül kellő szabadidő hiánya miatt bezártunk. Az EuroHack oldal bezárásával mintha meghalt volna a közösségi szellem is... A helyzet nagyon hasonló az InSecurity portállal is, de terveim még vannak az oldallal kapcsolatban – egyelőre nem mondtam le róla.

A Hacktivityre készülő előadásodban a Java Web Start a főszereplő, amely böngésző- és webszerverfüggetlen technológia. Ez nagy előny lehet egy hibatűrő, biztonságos alkalmazás megvalósításánál…

A Java Web Start egy rugalmas és robusztus telepítési megoldás Java technológiát alkalmazó programokhoz, mely valóban böngésző- és webszerverfüggetlen. Egy ilyen alkalmazás összetevői: egy ún. JNLP-fájl (későbbiekben még kitérünk rá) és az alkalmazás futtatásához szükséges erőforrásfájlok. Ezeket mind elhelyezzük egy webszerveren, majd a böngészőbe beírva a JNLP-fájl URL-jét, a böngésző már maga indítja a – Web Start alkalmazások futtatásáért felelős – javás alkalmazást. Az appletekkel ellentétben nem a böngésző ablakában fut a Web Start alkalmazásunk, hanem egy különálló programként működik, és elindításához mindössze az említett URL-címre van szükségünk. Egyébként egy Javában írt meglévő alkalmazás könnyen Web Startra alakítható, mindössze egy JNLP-fájlt kell létrehoznunk, amely meghatározza, merre találhatók az alkalmazás futtatásához szükséges további erőforrásfájlok, valamint melyik verziójú Java futtatókörnyezetre van szükségünk az adott program működtetéséhez.

A JNLP egy XML fájl, amelyben megtalálható a Web Start alkalmazás kódbázisának helye, ami rendszerint egy webszerveren található, de persze semmi nem zárja ki, hogy akár a helyi gépre helyezzük el. A Web Start alkalmazáshoz ikont hozhatunk létre a programot indító gép asztalán és a Start menüben. A Web Start technológia alkalmazása gyakorlatilag lerövidíti és egyúttal megkönnyíti egy alkalmazás telepítését és frissítését azáltal, hogy egyetlen fájllal leírjuk, mi szükséges az alkalmazásunk futtatásához, és ez minimális méretű.

Amikor elindítunk egy ilyen alkalmazást, először is ellenőrzi, hogy van-e frissebb változata a már letöltött fájloknak. Ha nincs, akkor a cache-területen eltároltakkal történik az indítás. A Web Start alkalmazások – az appletekhez hasonlóan – futhatnak egy korlátozásokkal telitűzdelt környezetben, vagyis a hozzáférés a helyi fájlokhoz és a hálózathoz erősen korlátozott, de ha az alkalmazás gyártójában nagyon megbízunk, akkor lehet könnyíteni a feltételeken. Én természetesen a korlátozott futtató környezetet fogom a Hacktivityn bemutatni.

A Java biztonsági rendszeréről általában azt mondják, hogy úgy tud elégséges biztonságot nyújtani, hogy az nem megy a használhatóság rovására. Ráadásul rugalmasan alkalmazkodik az igényekhez: nem túl szigorú, mikor az nem indokolt, és nem is túl engedékeny veszélyes helyzetekben. Azt mondják a Java mellett érvelők, hogy ezeknél a rendszereknél a felhasználó nem tudja kikerülni a biztonsági rendszert csak azért, hogy elvégezzen egy műveletet. Valóban így van ez?

Ezt nemcsak a Java biztonsági rendszeréről mondják, hanem úgy általában minden olyan rendszerről, amely valamilyen védelmet hivatott biztosítani egy felhasználó számára... Nagy általánosságban a Java ilyen irányú törekvéseiről azt mondhatjuk, hogy a Java mint nyelv igenis biztonságos. A legtöbb veszélyesnek ítélt probléma általában valamilyen programozói figyelmetlenség miatt következik be – mind a virtuális gép implementálásában, illetve a futtató környezetben Javában implementált szolgáltatásoknál. A virtuális gépben leginkább előforduló hibák valamilyen verem túl- vagy alulcsordulás következtében jönnek létre. Ezeket jóval egyszerűbb észlelni, mint a Javában implementált szolgáltatásokban megjelenő legtöbb hibát, melyek akkor következnek be, amikor valamilyen művelet során az alkalmazás egy privilegizált Java-kód futtatására kényszerül. Jelenleg nem tudok olyan alkalmazásról, védelemről, amely képes azt észrevenni, ha egy Web Start alkalmazás számára nem megengedett műveletet hajtatnak végre, és nyilván már az olvasóban is realizálódik a dologban rejlő veszély. Az előadásban mindenki meg fogja látni, hogyan dönthetők le a védelmünkre felépített korlátok úgy, hogy egy árva figyelmeztetést sem kapunk.

Gonosz is tud lenni ez az érdekes technológia: böngészőalapú támadásoknál az egyik legjellemzőbb módszer a JavaScript-alapú támadás. Ugyanez a helyzet a Javás hibákkal is?

Ritka, amikor ilyen jellegű támadást használnak. Ahhoz, hogy egy böngésző támogassa a Javát, Java Appletet vagy a Java Web Startot, szükséges a Java futtató környezetet telepíteni, és itt jön be az, amit a mai bűnözők nem engedhetnek meg maguknak, hogy találgassanak: fent van-e az áldozat gépén ez a program. Ezért inkább a böngészőkbe integrált JavaScriptre összpontosítanak.

Arra még kíváncsiak lennénk, hogy szerinted létezik-e még az általad is említett hackerkultúra? Mintha a média már teljesen összemosná a hackert a crackerrel, közben meg komoly oktatási intézményekben tantárgy az etikus hacking…

Kényes kérdés, amire talán jól válaszolni csak nagyon nehezen lehet. Létezik egy ún. Jargon File, amely megadja azokat az etikai szabályokat, amiket egy hackernek illik követnie. Ha keresnem kellene ilyen embereket, csoportokat, akkor még biztos találnék, de egyre ritkábban lesznek fellelhetők az ilyen személyek vagy csoportok. Vagy azért, mert csak egy szűk kör fog tudni róluk, vagy mert a most érkező nemzedéket egyáltalán nem fogja érdekelni a dolog. Annak idején az Eurohack Team is arra kényszerült, hogy külföldi szervereken helyezze el az oldal tartalmát, mert – ha hitelesek a keresési eredményeink – egy 2002-es Btk.-módosítás értelmében törvényt sértettünk volna. Az ilyen és hasonló szabályok a hackerközösségek ellen vannak. Lásd Németország: THC... hasonló cipőben járnak, mint amilyenben mi voltunk, de azt hiszem, ők jobban beparáztak...

A másik probléma, ami megnehezíti az ilyen közösségek fennmaradását, az a pénz. Pénzt kaphatunk azért, ha hibát találunk, vagy ha eladjuk a tudásunkat olyan embereknek, akik az internetes levélforgalom tetemes részéért felelősek, a kéretlen levelek elindítása miatt. Ez nagy csábítás... Ettől a pénztől persze aztán gyorsan meg is lehet szabadulni, mert (most nem kicsiny hazánkra gondolva) sok drága biztonsági konferencia kell ahhoz, hogy az olyan új technikák, hibák, melyekről régebben szabadon olvashattunk különböző oldalakon, megismerhetővé váljanak; mert ahhoz, hogy naprakészek maradjunk, kénytelenek vagyunk elmenni a biztonsági konferenciákra (természetesen a külföldiekre gondolok), és azért az ott megszerezhető tudásért keményen fizetni kell. A „régi” időkben nem kellett mást tenni, mint ellátogatni a megfelelő oldalakra. Sajnos ma már többet ér a pénz, a hírnév, mint hogy egy közösségben megoszd a tudásod...

***

Következzen a rendezvény kapcsán tartott nyereményjátékunk újabb feladványa, Thief_hu kérdése:

A Java futtató környezet (JRE - Java Runtime Environment) melyik verziója tartalmazta először a Web Startot?

1. a JRE 1.3.0
2. a JRE 1.4.1
3. a JRE 1.5.0
4. a JRE 1.6.0

Azóta történt

  • Az informatika töréstesztje

    Az informatikai oktatás területén elért látványos sikereiről kérdeztük a lassan tízéves NetAcademia ügyvezetőjét, Fóti Marcellt, aki az etikus hackerekről is beszélt nekünk.

Előzmények