Mikä on Java?
Java julkaistiin toukokuussa 1995, ja se on maailman suosituin ohjelmointikieli, ja yli 95 % kaikista yritysten pöytäkoneista käyttää Javaa. Jave on suunniteltu niin, että kehittäjät voivat ”kirjoittaa kerran, suorittaa missä tahansa” (WORA), mikä tarkoittaa, että Javalla kirjoitettu koodi voi toimia kaikilla alustoilla, joilla on Java-tuki, ilman että sitä tarvitsee kääntää uudelleen.
Java on rinnakkainen, luokkapohjainen, oliokeskeinen yleiskäyttöinen ohjelmointikieli, jota juhlitaan nopeana, turvallisena ja luotettavana ja jota voi löytää kaikkialta suosituimmista verkkosivustoista mobiililaitteisiin ja pelikonsoleista yritysten datakeskuksiin ja muualle. Java on lisensoitu GNU General Public License -lisenssillä, ja se on vapaasti ladattavissa.
Javaan ovat vaikuttaneet lukuisat ohjelmointikielet, kuten C++, C#, Eiffel, Mesa, Modula-3, Objective-C ja muut, ja se on ollut tärkeässä roolissa monien suosittujen ohjelmointikielien kehityksessä, kuten esimerkiksi Groovyn, Hackin, Haxe:n, Kotlinin, PHP:n, Pythonin ja Scalan. Maailmanlaajuisesti Java-kehittäjiä on yli 9 miljoonaa, ja jos he kaikki liittyisivät yhteen ja muodostaisivat maan, se olisi väkiluvultaan maailman 95. suurin maa, tai jos he muodostaisivat kaupungin, se olisi maailman 20. suurin kaupunki.
Miksi Java alun perin luotiin?
1990-luvun alussa verkkolaskennan tehon ulottamista jokapäiväiseen elämään pidettiin radikaalina visiona, ja ryhmä Sun Microsystemin insinöörejä, jotka tunnettiin nimellä ”Vihreä tiimi” ja joita johti James Gosling, pyrki toteuttamaan tämän vision aloittamalla tietotekniikan seuraavan aallon kuluttajalaitteiden ja tietokoneiden yhdistämisellä Javan luomisen myötä. Tämä Sunin insinööriryhmä oli hieman aikaansa edellä, sillä aluksi he keskittyivät vuorovaikutteiseen televisioon, ja projektin kieli oli alun perin nimeltään Oak, Goslingin toimiston ulkopuolella olevan puun mukaan, ennen kuin se nimettiin uudelleen Javaksi Java-kahvin jälkeen.
Jaava oli vuorovaikutteisen television kehityksessä edelläkävijä, mutta se syntyi samaan aikaan, kun internet oli alkanut saada jalansijaa, ja se sopi mainiosti tähän kehittyvään teknologiaan. Vuonna 1995 ilmoitettiin, että Netscape Navigator -internetselain sisältäisi Java-teknologian, ja sen jälkeen suurimmat verkkoselaimet ovat sisällyttäneet Java-sovelmia.
Kuten useimpien koodauskielten kohdalla, myös Javan kehitystä ohjasi joukko periaatteita, jotka vaikuttivat Javan luomiseen ja jatkokehitykseen:
- Sen on oltava ”yksinkertainen, oliokeskeinen ja tuttu”.
- Sen on oltava ”vankka ja turvallinen”.
- Sen on oltava ”arkkitehtuurineutraali ja siirrettävä”.
- Sen on suoritettava ”suurella suorituskyvyllä”.
- Sen on oltava ”tulkittu, säikeistetty ja dynaaminen”.
Major Java Frameworks and their Security Threats:
Struts
Struts on ilmainen,toimintapohjainen avoimeen lähdekoodiin pohjautuva malli-näkymä-ohjain (Model-View-Controller, MVC) -puitekehys, jota käytetään Java EE:n web-sovellusten kehittämiseen. Toukokuussa 2000 julkaistun Strutsin kirjoitti Craig McClanahan ja se lahjoitettiin Apache Foundationille.Strutsin päätavoitteena on mallin (sovelluslogiikka, joka on vuorovaikutuksessa tietokannan kanssa) erottaminen näkymästä (HTML-sivut, jotka esitetään asiakkaalle) ja ohjaimesta (instanssi, joka välittää tietoa näkymän ja mallin välillä).
Suurimpana turvallisuusongelmana Strutsin avulla rakennetuissa sovelluksissa on etäkoodin suoritus. Vuonna 2010 suosittu Struts-kehys Struts2 ladattiin yli miljoona kertaa vuonna 2010 yli 18 000 organisaation toimesta, ja se sisälsi ainutlaatuisen heikkousluokan, joka mahdollisti
pahantahtoisten osapuolten suorittaa mielivaltaista koodia missä tahansa Struts2-verkkosovelluksessa.
Spring MVC
Spring MVC on Spring-sovelluskehys, jonka Spring-kehittäjät kirjoittivat vastauksena muiden suosittujen kehysten suunnitteluvirheisiin, kuten riittämättömään erotteluun esitys- ja pyyntöjenkäsittelykerrosten välillä sekä pyyntöjenkäsittelykerroksen ja mallin välillä. Strutsin tavoin myös Spring MVC on toimintapohjainen kehys. GWT suunniteltiin mahdollistamaan suorituskykyisten web-sovellusten tuottava kehittäminen ilman, että koodaajalla on oltava edistynyttä tietämystä selaimen omituisuuksista, XMLHttpRequestistä ja JavaScriptistä. Koska GWT tuottaa JavaScript-koodia, GWT-sovellukset on suojattava kaikkia JavaScript-sovelluksiin kohdistuvia uhkia vastaan.
Hibernate
Hibernate ORM, joka tunnetaan yksinkertaisesti nimellä Hibernate, on olio-relationaalinen kartoituskehys Java-kielelle. Suunniteltu Java-luokkien kartoittamiseen tietokantatauluihin ja Java-tietotyyppien kartoittamiseen SQL-tietotyyppeihin. Hibernatea sisältävät sovellukset voivat olla SQL-injektioiden uhkaamia, jos SQL- eli HQL-kyselyitä luodaan ketjuttamalla merkkijonoja. Yksi tapa suojautua näitä vastaan on käyttää nimettyjä parametreja missä tahansa SQL- tai HQL:ssä.
OWASP ESAPI
OWASP ESAPI eli OWASP Enterprise Security API on ilmainen, avoimen lähdekoodin web-sovellusten tietoturvan ohjauskirjasto, jonka avulla kehittäjien on yksinkertaisempaa kirjoittaa matalariskisempiä sovelluksia, kun taas ESAPI-kirjastot on suunniteltu helpottamaan ohjelmoijien jälkikäteistä tietoturvan lisäämistä olemassa oleviin sovelluksiin.
Java Server Faces (JSF)
Java Server Faces (JSF) on Java-yhteisöprosessin kautta standardiksi vakiinnutettu Java-spesifikaatio komponenttipohjaisten web-sovellusten käyttöliittymien rakentamiseen. OWASP:n mukaan ”JSF ei toteuta omaa tietoturvamallia, vaan se tukeutuu JEE:n standarditurvaan. Tämä tarkoittaa, että sekä sovelluspalvelimen turvallisuusmallia, JAAS:ia tai muita ACL-toteutuksia voidaan käyttää JSF-kehyksen kanssa ilman integrointityötä.” JSF:ää toteuttavien sovellusten tietoturvaongelma on pääsynvalvonta- ja valtuutuskysymykset.
JSP
JavaServer Pages (JSP) on rakennettu Servlet API:n päälle ja se mahdollistaa Java-koodin upottamisen, joka käännetään ja suoritetaan, kun pyyntö vastaanotetaan. JSP-koodin yleinen uhka on cross-site scripting (XSS).
Javan tietoturva-aukot
Vaikka Java-alusta sisältää lukuisia ominaisuuksia, jotka on suunniteltu parantamaan Java-sovellusten tietoturvaa, kehittäjien on kriittisen tärkeää varmistaa, että heidän Java-koodinsa on haavoittuvuudetonta ohjelmistokehityksen elinkaaren varhaisimmissa vaiheissa. Javan tietoturvavirheiden, kuten luokkien ja muuttujien pääsyn rajoittamatta jättämisen, luokkien finalisoimatta jättämisen, pakettikauhaan luottamisen ja muiden vastaavien virheiden välttäminen on paras paikka aloittaa Java-koodin suojaaminen, mutta kehittäjien on myös tärkeää tutustua Java-koodiin kohdistuviin yleisiin tietoturvauhkiin sekä Java-kehyksiin. Jos haluat lisätietoja Java-koodin suojaamisesta kehityksen aikana, lue täältä 9 tietoturvavirhettä, joita jokaisen Java-kehittäjän on vältettävä.
Suuren riskin Java-tietoturva-aukot:
Maailman yritystyöasemista yli 95 %:ssa käytetään Java-tietokonetta, on vakavia seurauksia, kun Java-koodin haavoittuvuudet pääsevät tuotantoon ja pahantahtoiset tahot hyödyntävät niitä. Seuraavassa on luettelo joistakin suuririskisistä uhkista, jotka kohdistuvat Javalla kirjoitettuihin sovelluksiin:
- Code Injections
- Command Injections
- Connection String Injection
- LDAP Injection
- Reflected XSS
- Resource Injection
- Second Order SQL Injection
- SQL Injection
- Stored XSS
- XPath Injection
Securing your Java
Checkmarxin CxSAST, staattinen koodianalyysiratkaisu, erottuu Java-testausratkaisujen joukosta paitsi ratkaisuna, joka pitää Java-koodisi vapaana tietoturva- ja vaatimustenmukaisuusongelmista, myös työkaluna, joka edistää organisaatiosi edistymistä sovellusten tietoturvakypsyyden osalta.
CxSAST toimii kehittäjiesi jo käyttämien työkalujen kanssa, sillä se integroituu saumattomasti useimpiin yleisimpiin kehitysohjelmiin, jotka ovat käytettävissä SDLC:n kaikissa vaiheissa. CxSASTin ominaisuudet, kuten inkrementaalinen koodin skannaus ja paras korjauspaikka, tekivät siitä ihanteellisen mihin tahansa jatkuvan integroinnin jatkuvan kehityksen (CICD) ympäristöön.
Kun Java-koodissa havaitaan haavoittuvuuksia, CxSAST ei ainoastaan tunnista parasta korjauspaikkaa, vaan tarjoaa myös resursseja, joiden avulla kehittäjä voi ymmärtää, miten hyökkäysvektori toimii, sekä korjausneuvontaa, jonka avulla voidaan varmistaa, että samankaltaisilta virheiltä vältytään jatkossa.