Pääsivu | Tiedotteet
23.11.2004

Yleistä

Sun Microsystemin Java Plugin yhdistää Java-teknologian verkkoselaimiin ja mahdollistaa Java-applettien käytön. Java Plugin -teknologia on saatavilla useille alustoille ja tukee yleisimpiä selaimia.

Haavoittuvuuden avulla hyökkääjä voi tehdä appletin, joka pystyy sammuttamaan Javan tietoturvarajoitukset ja siten pääsemään ulos Javan "hiekkalaatikosta". Hyökkäys voidaan suorittaa, kun uhri katsoo webbisivua, jonka hyökkääjä on tehnyt. Sen enempää toimia ei vaadita, koska Java-appletit latautuvat ja käynnistyvät yleensä automaattisesti.

Tällainen appletti voi sitten tehdä mitä kohdekäyttäjäkin: selata, lukea tai muuttaa tiedostoja, siirtää lisää ohjelmia kohdejärjestelmään ja käynnistää niitä, tai lähettää dataa ulos kohdejärjestelmästä. Java on alustariippumaton kieli, joten sama "exploitti" voi toimia monella käyttöjärjestelmällä ja arkkitehtuurilla.

Yksityiskohdat

Java-virtuaalikone käsittää useita yksityisiä luokkia, jotka on tarkoitettu vain virtuaalikoneen sisäiseen käyttöön. Appletit eivät voi normaalisti käyttää näitä turvallisuussyistä. Tällaisen luokan käyttö aiheuttaa normaalisti AccessControlException-poikkeuksen.

Ongelma on siinä, että JavaScript-koodi voi kiertää kyseisen kontrollin käyttämällä ns. reflection-APIa. Seuraava esimerkkikoodi hankkii tätä keinoa käyttäen viittauksen luokkaan "sun.text.Utility", joka kuuluu em. yksityisiin, sisäisiin luokkiin:

 [script language=javascript]
 var c=document.applets[0].getClass().forName('sun.text.Utility');
 alert('got Class object: '+c)
 [/script]

Tämä ei ole mahdollista tavallisella Java-appletilla, eikä pitäisi onnistua myöskään JavaScriptillä. Tällainen koodi voi nyt luoda luokan ilmentymän tai siirtää hankkimansa viittauksen Appletille, joka voi käyttää sitä edelleen.

Hyökkääjä ei voi tehdä paljoakaan yllä olevan esimerkin Utility-luokalla, mutta virtuaalikoneesta löytyy paljon muita yksityisiä luokkia, joita olisi mahdollista käyttää hyväksi hyökkäyksessä. Eräät niistä esim. mahdollistavat suoran pääsyn muistiin, tai Java-olioiden private-määreellisten kenttien arvon muuttamisen. Viimeksi mainitun avulla hyökkääjä voisi yksinkertaisesti ottaa Javan security managerin pois päältä, minkä jälkeen Appletin toimia rajoittavaa "hiekkalaatikkoa" ei enää ole.

Alttiit versiot

Java Pluginin versiot 1.4.2_04 ja 1.4.2_05 testattiin Windows- ja Linux-käyttöjärjestelmillä. Selaimista testattiin Microsoft Internet Explorer, Mozilla Firefox ja Opera. Opera käyttää hieman erilaista tapaa JavaScriptin ja Javan liittämisessä toisiinsa, mistä syystä koe-exploitti ei toiminut Operalla. Tästä huolimatta ongelman (pääsy rajoitettuihin yksityisiin luokkiin) havaittiin olevan olemassa myös Operalla, joten sekin saattaa olla altis, jos exploittia muunnetaan.

Ratkaisu

Sun Microsystemsille ilmoitettiin asiasta 29.4.2004. Ongelma on korjattu J2SE:n versiossa 1.4.2_06, joka löytyy osoitteesta http://java.sun.com/j2se/1.4.2/download.html

Tekijä

Ongelman havaitsi, tutki ja tämän tiedotteen laati Jouko Pynnönen (jouko@iki.fi).