Java-suojaus - Java security
Java tarjoaa useita ominaisuuksia, joilla parannetaan turvallisuutta ja Java-sovelluksia. Tämä sisältää täytäntöönpanoon runtime rajoitteet kautta käyttämällä Java Virtual Machine (JVM), Security Manager, joka hiekkalaatikot epäluotettava koodin muusta käyttöjärjestelmästä, ja sarja turvallisuuden API , joka Java-kehittäjät voivat hyödyntää. Tästä huolimatta kritiikkiä on kohdistettu ohjelmointikielelle ja Oraclelle haitallisten ohjelmien lisääntymisen vuoksi, mikä paljasti JVM: n tietoturva-aukkoja, joita Oracle ei myöhemmin käsitellyt asianmukaisesti ajoissa.
Suojausominaisuudet
JVM
Java-alustalla toimivien ohjelmien binaarimuoto ei ole natiivikoneen koodi, vaan välitavu . JVM suorittaa todentaminen tällä tavukoodiksi ennen sen suorittamista estää ohjelman suorittamiseksi vaarallisia toimintoja, kuten haarautumisen väärän paikoissa, joka voi sisältää dataa pikemminkin kuin ohjeet. Se antaa myös JVM: lle mahdollisuuden toteuttaa ajonaikaisia rajoituksia, kuten taulukon rajojen tarkistus . Tämä tarkoittaa, että Java-ohjelmat kärsivät huomattavasti vähemmän muistin turvallisuusvirheistä , kuten puskurin ylivuoto , kuin C- kaltaisilla kielillä kirjoitetut ohjelmat, jotka eivät tarjoa tällaisia muistin turvallisuustakuita.
Alusta ei salli ohjelmien suorittaa tiettyjä mahdollisesti vaarallisia toimintoja, kuten osoittimen aritmeettista tai valitsematonta tyyppiä . Se ei myöskään salli manuaalista ohjausta muistin jakamiseen ja jakamiseen; käyttäjien on luotettava alustan tarjoamaan automaattiseen roskien keräämiseen . Tämä lisää myös tyyppiturvallisuutta ja muistiturvallisuutta.
Turvallisuuspäällikkö
Alusta tarjoaa tietoturvahallinnan, jonka avulla käyttäjät voivat suorittaa epäluotettavia tavukoodeja "hiekkalaatikko" -ympäristössä, joka on suunniteltu suojaamaan heitä haitallisilta tai huonosti kirjoitetuilta ohjelmistoilta estämällä epäluotettavaa koodia pääsemästä tiettyihin alustan ominaisuuksiin ja sovellusliittymiin. Esimerkiksi epäluotettavaa koodia voidaan estää lukemasta tai kirjoittamasta tiedostoja paikallisesta tiedostojärjestelmästä, suorittamasta mielivaltaisia komentoja nykyisen käyttäjän oikeuksilla, pääsemällä viestintäverkkoihin, pääsemällä objektien sisäiseen yksityiseen tilaan heijastuksen avulla tai aiheuttamalla JVM: n poistumisen.
Tietoturvapäällikkö sallii Java-ohjelmien allekirjoituksen salauksen ; käyttäjät voivat valita, sallivatko luotettavan yksikön voimassa olevan digitaalisen allekirjoituksen sisältävän koodin suorittaa täydet oikeudet tilanteissa, joissa muuten siihen ei luotettaisi.
Käyttäjät voivat myös asettaa tarkat käyttöoikeuskäytännöt eri lähteistä tuleville ohjelmille. Käyttäjä voi esimerkiksi päättää, että vain järjestelmäluokkiin tulisi luottaa täysin, että tiettyjen luotettavien entiteettien koodin voidaan sallia lukea tiettyjä tiedostoja ja että kaikki muut koodit tulisi olla kokonaan hiekkalaatikossa.
Suojaus-sovellusliittymät
Java Class Library tarjoaa useita API liittyvät turvallisuuteen, kuten tavallista salauksen algoritmeja, todennus ja turvalliseen viestintään protokollia.
Mahdolliset Java-sovellusten tietoturva-aukkojen lähteet
Java-sovelluksissa on useita mahdollisia tietoturva-aukkojen lähteitä , joista osa on yhteisiä muille kuin Java-sovelluksille ja osa vain Java-alustalle. (Huomaa, että nämä viittaavat mahdollisiin haavoittuvuuksien lähteisiin, jotka turvallisuustietoisien ohjelmoijien on pidettävä mielessä: tätä ei ole tarkoitettu luetteloksi todellisista haavoittuvuuksista.)
Esimerkkejä mahdollisista haavoittuvuuden lähteistä, jotka ovat yhteisiä Java- ja muille kuin Java-sovelluksille, ovat:
- Laitteiston tai käyttöjärjestelmän tarjoamien suojausmekanismien heikkoudet, joihin sovellus turvautuu
- Natiivikirjastojen, kuten C-standardikirjaston , haavoittuvuudet , joita voidaan käyttää sovelluksen ja / tai ajonaikaisen toteutuksen toteuttamiseen
- Haavoittuvuudet, jotka johtuvat pelkästään käyttäjäohjelmien virheistä (esimerkiksi SQL- kyselyjen virheellinen rakentaminen, joka johtaa SQL-injektiohaavoittuvuuteen )
Paljon keskustelua Java-tietoturvasta keskittyy kuitenkin Java-alustalle mahdollisesti omiin haavoittuvuuslähteisiin. Nämä sisältävät:
- Hiekkalaatikkomekanismin heikkoudet, jotka antavat epäluotettavan tavukoodin kiertää suojauspäällikön asettamia rajoituksia
- Java-luokan kirjaston heikkoudet, joihin sovellus turvaa tietoturvansa
Java-alustan haavoittuvuus ei välttämättä tee kaikista Java-sovelluksista haavoittuvia. Kun esimerkiksi Oracle ilmoittaa haavoittuvuuksista ja korjaustiedostoista, ilmoitus sisältää yleensä erittelyn sovellustyypeistä, joihin tämä vaikuttaa ( esimerkki ).
Esimerkiksi hypoteettinen tietoturvavirhe, joka vaikuttaa vain tietyn JVM-toteutuksen tietoturvapäällikön hiekkalaatikkomekanismiin, merkitsisi sitä, että vain Java-sovellukset, jotka suorittavat mielivaltaisia epäluotettavia tavukoodeja, vaarantuisivat: sovellukset, joissa käyttäjä luottaa täysin ja hallitsee kaikkia suoritettavia tavuja. Tämä tarkoittaisi, että esimerkiksi JVM: ään perustuva verkkoselaimen laajennus olisi haavoittuvainen julkisilta verkkosivustoilta ladatuille haitallisille sovelmille, mutta palvelinpuolen verkkosovellus, joka toimii samalla JVM-versiolla, jossa järjestelmänvalvojalla on täysi hallinta luokkatietä ei vaikuta. Kuten muiden kuin Java-sovellusten kohdalla, tietoturva-aukkoja voi aiheutua alustan osista, jotka eivät ehkä aluksi näytä liittyvän tietoturvaan. Esimerkiksi vuonna 2011 Oracle julkaisi tietoturvakorjauksen Double.parseDoublemenetelmän virheelle. Tämä menetelmä muuntaa merkkijonon , kuten "12,34", vastaavaksi kaksitarkkuuksiseksi liukuluvuksi . Virhe aiheutti tämän menetelmän siirtymisen äärettömään silmukkaan, kun sitä kutsutaan tietylle tulolle. Tällä virheellä oli turvallisuusvaikutuksia, koska jos esimerkiksi web-palvelin muuntaa merkkijonon, jonka käyttäjä on kirjoittanut muotoon tällä menetelmällä, haitallinen käyttäjä voi kirjoittaa virheen laukaisevan merkkijonon. Tämä aiheuttaisi haitallista pyyntöä käsittelevän verkkopalvelinlangan kirjoittamaan loputtoman silmukan ja olemaan poissa käytöstä muiden käyttäjien pyyntöjen palvelemiseen. Tämän tekeminen toistuvasti haavoittuvalle verkkopalvelimelle olisi helppoa palvelunestohyökkäys : kaikki verkkopalvelimen säikeet käyttäjien pyyntöihin vastaamiseksi jäisivät pian loputtomaan silmukkaan ja web-palvelin ei pystyisi palvelemaan laillisia käyttäjiä osoitteessa kaikki.
Turvallisuuspäällikön kritiikki
Java-alustan suojauspäällikköä (joka, kuten yllä mainittiin, on suunniteltu antamaan käyttäjälle mahdollisuus suorittaa epäluotettava tavukoodi turvallisesti), on kritisoitu viime vuosina siitä, että se on tehnyt käyttäjistä haavoittuvia haittaohjelmille , etenkin verkkoselaimen laajennuksissa, jotka suorittavat osoitteesta ladatut Java-sovelmat. julkiset verkkosivustot, epävirallisemmin nimellä "Java selaimessa".
Oraclen pyrkimykset puuttua näihin haavoittuvuuksiin viivästyttivät Java 8: n julkaisua.
2012
OS X troijalainen kutsutaan Flashback hyödyntää haavoittuvuutta Java, joita ei ollut paikattu Apple , vaikka Oracle oli jo julkaissut korjaustiedoston. Huhtikuussa Apple julkaisi myöhemmin poistotyökalun lionien käyttäjille, joilla ei ollut Java-sovellusta. Java 7 -päivityksen 4 avulla Oracle alkoi julkaista Java-versiota suoraan Lionille ja uudemmille .
Lokakuussa Apple julkaisi päivityksen, joka poisti Java- laajennuksen kaikista selaimista . Apple piti tätä siirtymänä etäisyyteen OS X: stä Java: sta.
2013
Tammikuussa nollapäivän haavoittuvuus löydettiin kaikista Java 7 -versioista, mukaan lukien uusin Java 7 -päivitys 10, jota jo hyödynnettiin luonnossa. Haavoittuvuuden aiheutti korjauskorjaus aikaisemman haavoittuvuuden korjaamiseksi. Vastauksena Apple listasi Java-laajennuksen uusimman version. Oracle julkaisi korjaustiedoston (päivitys 11) kolmen päivän kuluessa. Microsoft julkaisi myös korjauksen Internet Explorer -versioille 6 , 7 ja 8 .
Verkkojen vakoiluohjelmat Red October havaittiin hyödyntävän Java-haavoittuvuutta, joka oli korjattu lokakuussa 2011. Myös Reporters Without Borders -sivusto vaarantui Java-haavoittuvuudessa päivityksessä 11 aikaisemmissa versioissa.
Päivityksen 11 julkaisemisen jälkeen verkossa alkoi liikkua toinen haavoittuvuus, joka myöhemmin vahvistettiin. Todettiin myös, että Javan suojaustila itsessään oli haavoittuvainen virheen takia. Vastauksena Mozilla poisti Java (samoin kuin Adobe Reader ja Microsoft Silverlight ) Firefoxista oletusarvoisesti, kun taas Apple listasi uusimman Java-laajennuksen uudelleen.
Helmikuussa Twitter ilmoitti sulkeneensa hyökkäyksen. Twitter neuvoi käyttäjiä poistamaan Java käytöstä, vaikka se ei selittänyt miksi. Myöhemmin kuukaudessa Facebook ilmoitti, että nollapäiväinen Java-hyökkäys oli hakkeroinut sen. Apple ilmoitti myös hyökkäyksestä. Havaittiin, että iPhonen kehittäjäfoorumin rikkomista käytettiin Twitterin, Facebookin ja Applen hyökkäykseen. Foorumi itsessään ei ollut tietoinen rikkomuksesta. Twitterin, Facebookin ja Applen jälkeen Microsoft ilmoitti, että se oli myös vastaavasti vaarantunut.
Toinen löydetty haavoittuvuus mahdollisti Java-suojauksen hiekkalaatikon ohittamisen kokonaan alkuperäisessä Java 7 -päivityksessä sekä päivityksissä 11 ja 15. Maaliskuussa löydettiin McRat-niminen troijalainen, joka hyödynsi nollapäivän Java-haavoittuvuutta. Oracle julkaisi sitten uuden korjaustiedoston haavoittuvuuden korjaamiseksi.
Katso myös
Viitteet
Ulkoiset linkit
- Java SE Security . Oracle Corporation. Ladattu 24.4.2013.
- Suojatut koodausohjeet Java-ohjelmointikielelle . Oracle Corporation. Ladattu 24.4.2013.
- Kuinka Security Manager auttaa Run with less privilege -periaatteessa .