Tweets by @buherablog
profile for buherator at IT Security Stack Exchange, Q&A for IT security professionals

A BitBetyár Blog

Túljártál a nagyokosok eszén? Küldd be a mutatványodat! (e-mail a buherator gmailkomra jöhet)

Full-Disclosure / Névjegy / Coming out


Promó

H.A.C.K.

Címkék

0day (110) adobe (87) adobe reader (21) anonymous (26) apple (60) az olvasó ír (49) blackhat (20) botnet (22) bug (200) buherablog (44) buhera sörözés (39) bukta (49) deface (38) dns (22) dos (29) esemény (82) facebook (26) firefox (64) flash (33) gondolat (31) google (59) google chrome (36) hacktivity (37) hírek (117) incidens (224) internet explorer (88) iphone (35) java (50) jog (22) kína (21) kriptográfia (68) kultúra (21) linux (24) malware (43) microsoft (142) móka (48) mozilla (23) office (26) oracle (40) os x (43) patch (197) php (20) politika (31) privacy (58) programozás (22) safari (34) sql injection (62) windows (85) xss (77) Címkefelhő

Licensz

Creative Commons Licenc

További infók a Java sérülékenységről - Rekurzív Reflection

2013.01.13. 19:09 | buherator | 2 komment

Elég sok érdekes információ jelent meg az aktuális, javítatlan Java sérülékenységgel kapcsolatban - ezek egy részéről az előző poszt alatt a kedves Olvasók is megemlékeztek (köszi!) ebben a bejegyzésben igyekszem összegyűjteni a legfontosabb tudnivalókat és hivatkozásokat.

A legrészletesebb elemzést a sérülékenységről az Immunity szolgáltatja. Ebből megtudhatjuk, hogy a most kihasznált sérülékenység nagyon hasonlít a tavaly augusztusban észlelt támadásokban kihasználthoz, illetve a Security Explorations által tárgyaltakhoz:

Egy, a Reflection API-t nem biztonságos módon használó osztályon (ezesetben a com.sun.jmx.mbeanserver.MBeanInstantiator osztály findClass() metódusán) keresztül referencia szerezető bármilyen, elméletileg korlátozottan elérhető osztályra, majd a Reflection API hibáját kihasználva az osztály metódusai is meghívhatók - a sikeres kódfuttatáshoz tehát két hiba összekapcsolása szükséges.

A vicc az, hogy a második problémát az Oracle elvileg már az előző fiaskó után javította. Elvileg. Annak idején is a MethodHandle.invokeWithArguments() okozta a bajt azáltal, hogy nem ellenőrizte megfelelően a hívó Class Loaderét, így  reflection-ön keresztül hívva hajlandó volt bármely osztály bármely metódusát meghívni, mivel a reflection API osztályai megbízható (NULL) CL-el rendelkeznek. A gyártó úgy igekezett orvosolni a problémát, hogy a valódi hívó felkutatásakor kihagyta a régi reflecion API hívásait, magával az új Reflection API-val ugyanakkor nem számolt a javításkor, a probléma így kihasználható maradt: "egyszerűen" a Reflection-t is Reflection-nel kell hívni.

Mivel az új Reflection API Java 7-től van jelen, ez a kihasználási út csak a futtatókörnyezet említett főverzióján működik, az MBeanInstantiator viszont legalább a JDK 6u10-től kezdve sérülékeny. Ilyen esetben kicsit nehéz az egyszeri tanácsadó dolga: ugyan a 7-es főverzió már hasznos biztonsági feature-ökkel rendelkezik, a vadon tenyésző exploitok mégis csak ezt a családot támadják - én jelenleg úgy gondolom hogy a Java 7 biztonsági szintjének "Nagyon magasra" állítása jó kompromisszum lehet a használhatóság és a biztonság között (ha az ember nem játszik céllövöldét az "Engedélyezés" gombbal).

További segítséget jelenthetnek a Mozilla és az Apple megoldásai, melyek a Chrome példáját követve alapértelmezetten megerősítéshez kötik ileltve letiltják az appletek futtatását a Firefox illetve Safari böngészőkben. Itt hangúlyoznám, hogy - bár a támadások egyelőre Windows felhasználók ellen irányulnak - a sérülékenységek triviálisan átültethetők bármely Java appleteket futtatni képes platformra ide értve OS X-t és Linux-t is (OpenJDK érintettségéről eddig nem láttam infót, ezügyben kiegészítést szívesen vennék).

Az Oracle azt ígérte, hogy "rövidesen" (agyameláll) kiadják a biztonsági frissítést a problémára. Bár a cég tavaly év végén elvileg ígéretet tett arra (Oracle link), hogy a Java-t is a többi termékkel, évente minimum négy alkalommal fogja frissíteni, a hivatalos oldal jelenleg 3 Java CPU-t jósol, a következőt február közepére. A többi termék jövő kedden kap javítást, azonban ez a csomag az előzetes értesítő szerint sem fogja érinteni a Java-t.

Friss (jan. 14 10:00): Az Oracle rendkívüli javítást adott ki a problémára, ezen kívül alapértelmezetten Magas-ra emelte a Java 7 futtatókörnyezetek biztonsági szintjét - ez azt jelenti, hogy az aláíratlan/önaláírt appletek nem futnak alapértelmezetten. 

Friss (jan. 14 10:55): A Security Explorations pontosította az Oracle korábbi frissítéséről szóló elemzését.

Címkék: firefox safari java bug oracle immunity security explorations

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

axt · http://axtaxt.wordpress.com/ 2013.01.13. 21:54:31

Igazából a hiba első fele se teljesen ismeretlen. A CVE-2012-4681 hibajegy javítása során, már fixáltak egy teljesen hasonló problémát. Ott is arról volt szó, hogy volt egy olyan osztály, amin keresztül restricted osztályokat lehetett betölteni (MethodFinder , ClassFinder).

Konkrétan a FindClass javítása:
pastebin.com/PHU8PJA1

Immunity elemzés erről a hibáról itt: immunityproducts.blogspot.hu/2012/08/java-0day-analysis-cve-2012-4681.html

Valószínűleg megérte volna egy
grep -Ri "findClass(" * |grep public
mert csak 7 találatod dob, ebből 1 az eredeti ClassLoaderben, 1 nem része a jdk-nak, 1 a ClassFindert hívja, 2 maga a ClassFinder, és a fentmaradó 2 pedig az MBeanInstantiator.