Ohjelmointi

Kuinka turvallinen Java on verrattuna muihin kieliin?

Kuten muidenkin kyberturvallisuuden näkökohtien kohdalla, ohjelmointikielen tietoturvan taso riippuu siitä, mitä tarkoitamme "suojatulla". On totta, että Java: lla on vähemmän tunnistettuja haavoittuvuuksia kuin joillakin muilla yleisesti käytetyillä kielillä. On myös totta, että jotkut uudemmat kielet näyttävät ainakin ensisilmäyksellä turvallisemmilta kuin Java.

Monet Java-ohjelmassa löydetyistä turvareiistä ovat seurausta sen suositusta. Laaja käyttö tarkoittaa, että tuhannet virheenetsittäjät ovat omistautuneet Java-kielen haavoittuvuuksien löytämiseen, mikä antaa Javalle epäoikeudenmukaisen "edun" tällä alalla. Samoin joidenkin uudempien kielten, kuten Rubyn, implisiittinen turvallisuus voi heijastaa niiden kapealla käyttöä enemmän kuin eheyttä.

[Myös JavaWorldissa: On joitain merkkejä siitä, että Java-kehittäjät parantavat tietoturvaa.]

Tässä artikkelissa tarkastellaan, kuinka yleisimmin käytetyt ohjelmointikielet sijoittuvat turvallisuuden kannalta. Selitän joitain tekijöitä, jotka tekevät yhdestä kielestä vähemmän turvallisen kuin toinen, ja miksi tunnistetut haavoittuvuudet ovat lisääntyneet niin paljon viime vuosina. Lopuksi ehdotan muutamia tapoja, joilla Java-kehittäjät voivat vähentää koodin haavoittuvuuksia.

Bottom line: Tietoturvan näkökulmasta tiedämme haavoittuvuudet ovat parempia kuin emme.

Kuinka turvallinen Java on?

Viimeaikainen tutkimus yleisimmin käytettyjen ohjelmointikielien haavoittuvuuksista on peräisin WhiteSourcesta, avoimen lähdekoodin tietoturva- ja lisenssiyhteensopivasta alustasta. WhiteSource tarkasteli seitsemää suosituinta avoimen lähdekoodin ohjelmointikieliä: C, Java, JavaScript, Python, Ruby, PHP ja C ++. Sen jälkeen analyytikot käyttivät erilaisia ​​lähteitä luokitellakseen kielet tunnistettujen haavoittuvuuksien perusteella.

Miksi avoimen lähdekoodin?

Päätös luokitella avoimen lähdekoodin kielet ei ole satunnaista. Monet omat kielet - mukaan lukien avoimen lähdekoodin kielten omat sovellukset - ovat paljon vähemmän avoimia haavoittuvuuksien suhteen. Yksityisen yrityksen ei ole järkevää julkaista tietoturva-aukkoja, joten pysymme suurelta osin pimeässä näiden kielten haavoittuvuustasosta. Puutteet, joista tiedämme, ovat paljon hallittavampia kuin ne, joita emme tiedä.

WhiteSource-tutkimuksen perusteella haavoittuvin ohjelmointikieli oli selvästi C, ja 47% kaikista ilmoitetuista haavoittuvuuksista. Tämä sijoitus ei yllätä kokeneita ohjelmoijia, mutta muut tulokset saattavat. PHP tuli kaukana toiseksi, 17%: lla, seuraavaksi Java 12%: lla, ja JavaScript pyöristää neljän parhaan 11%: lla. Näitä "johtajia" seurasivat Python, C ++ ja Ruby.

Ohjelmointikielen tietoturvan ymmärtäminen

Seuraavaksi meidän tulisi kysyä, miksi jotkut ohjelmointikielet ovat muita haavoittuvampia. Mainitsemani tutkimuksen perusteella saatat päätyä siihen, että C on valtava turvallisuusuhka. Ota kuitenkin huomioon, että C on ollut käytössä paljon kauemmin kuin mikään muu luettelon kieli. Kuten Stephen Turner kirjoitti Journal of Technology Research -lehdessä, "ohjelmointikielet ovat kuin genetiikka, koska on olemassa muutamia esi-isiä, joilla on yhteisiä piirteitä, jotka ovat lisääntyneet".

Luettelon vanhimpana kielenä C kehitettiin täysin erilaisessa uhka-ympäristössä kuin suhteellisen uudemmilla kielillä, kuten Java ja Ruby. Kuten WhiteSource huomauttaa, C: n suhteellinen ikä tarkoittaa, että sillä on vastaavasti suurempi määrä kirjoitettua koodia. C on myös yksi kielistä, jota käytetään suurissa infrastruktuureissa, kuten OpenSSL ja Linux-ydin. Tämä volyymin ja keskitetyn yhdistelmä voi johtaa suurempaan määrään tunnettuja avoimen lähdekoodin haavoittuvuuksia.

Vaikka Java toimii hyvin tässä analyysissä, kirjoittajat korostavat kahden tyyppisiä haavoittuvuuksia, jotka vaikuttavat erityisesti Javaan. Ensinnäkin he huomauttavat, että US-CERT on jo pitkään varoittanut meitä Java-haavoittuvuudesta loki-injektiohyökkäyksille, lähinnä verkkoselaimien kautta. Tällaiset hyökkäykset voidaan välttää tarkistamalla tai todentamalla lähetetty syöttö, mutta kehittäjät ovat usein varovaisia ​​vahvistamaan syötteen perusteellisesti peläten, että tämä voi tehdä heidän sovelluksistaan ​​vähemmän käyttäjäystävällisiä.

Toiseksi Java on erityisen alttiina luottamuksellisille hyökkäyksille, jotka seuraavat pääsynhallinnan haavoittuvuuksia. Vaikka sertifiointiprosessit ovat parantuneet vuodesta 2013, monet kehittäjät luottavat vähemmän luotettaviin viranomaisten varmenteisiin. On mahdollista saada vähemmän tiukka varmenne kuin sen pitäisi olla. US-CERT, lainattu Journal of Technology Research -yhtiössä, varoittaa tästä avoimesta ovesta etähyökkääjille, jotka suorittavat mielivaltaista koodia.

Java: n suhteellisen alhainen haavoittuvuus tarjoaa mielenkiintoisen kontrastin C.: lle. Java kehitettiin kauan C: n jälkeen ympäristössä, jossa uhkatietoisuus oli paljon korkeampi, joten ei ole mikään yllätys, että Java on paljon turvallisempi. Samoin vaikka Ruby näyttää olevan turvallisempi kuin Java, tämä voidaan selittää kielen suhteellisella nuoruudella ja sen kapealla sovelluksella.

Turvallisuushaavoittuvuudet ovat lisääntymässä - tavallaan

WhiteSource raportoi "tunnettujen avoimen lähdekoodin tietoturva-aukkojen määrän kasvun huomattavasti kaikilla kielillä kahden viime vuoden aikana". Vaikka Java-haavoittuvuuksien kokonaismäärä on vähentynyt tasaisesti vuodesta 2015 lähtien, haavoittuvuuksien määrän viimeaikainen nousu vaatii selityksen. Tämän kasvun voidaan katsoa johtuvan kahdesta tekijästä.

Ensinnäkin on olemassa virhepalautuksia, suhteellisen uusi trendi, jossa tuhannet tekniset ammattilaiset valitsevat kielen löytääkseen haavoittuvuuksia. Nämä aiheuttavat ainakin osan avoimen lähdekoodin tietoturva-aukkojen lisääntymisestä. Lisäksi oletetaan yleensä, että uhkienmetsästäjät skannaavat kaikki kielet tasaisesti, mutta se ei ole totta. Java on yhtenä verkkokehityksen yleisimmin käytetyistä kielistä Java merkittävä uhka-metsästäjien kohde. Tässä yhteydessä Javan tunnettu sijoitus tunnettujen haavoittuvuuksien suhteen alkaa näyttää melko matalalta.

Ohjelmistojärjestelmät ovat myös suuruusluokkaa monimutkaisempia kuin 10 vuotta sitten, mikä on toinen tärkeä tekijä Java- ja muilla kielillä havaittujen haavoittuvuuksien lisääntymisessä. Maailmassa, jossa älypuhelinsovellukset voivat olla tartunnan lähde ja jossa jokaisella yrityksellä on oltava JavaScript-yhteensopiva verkkosivusto, ei ole yllätys, että verkkosivustojen haavoittuvuuksien määrä on kasvanut räjähdysmäisesti. Lisää tähän kyberturvallisuuden ammattilaisten pitkäaikainen pula, ja asiat alkavat näyttää synkältä kyberturvallisuuden tulevaisuudelle.

Kuinka välttää Java-tietoturva-aukkoja

Tietoturva-aukkoja koskevan tutkimuksen lukeminen saattaa saada sydämesi lyömään nopeammin, mutta älä pelkää: Java-kehittäjillä on vahva asema sovellusturvallisuudessa. Kun tuhannet ammattilaiset etsivät kieltä haavoittuvuuksien varalta, meillä on hyvät mahdollisuudet tietää suuri osa kielen haavoittuvuuksista. Tuo tieto on voimaa.

Tuore JavaWorld-artikkeli tarjosi 13 sääntöä suojattujen Java-sovellusten kehittämiseen. Löydät myös paljon artikkeleita ja julkaisuja Java-sovelluksen turvallisesta käyttöönotosta tietyissä ympäristöissä, kuten Java-pilviturva ja Java-verkkosovellusten suojaus. Harkitaan muutamia tapoja vähentää haavoittuvuuksia, jotka saatat olla unohtanut.

Siirtyminen DevSecOps-työnkulkuun

Yksi tapa vähentää Java-koodin haavoittuvuuksia on siirtyä DevSecOps-työnkulkuun. Tämän tyyppinen työnkulku tekee turvallisuudesta ensiarvoisen tärkeän huolenaiheen kaikissa kehitysprosessin vaiheissa. Kehittäjinä unohdamme usein, että ohjelmistojamme käyttävät (ja joskus myös mukauttavat) kaikki organisaation osat, joissa työskentelemme. Ei ole hyvä koventaa verkkosovelluksiasi tunkeutumista vastaan, jos markkinointitiimisi on päättänyt heikentää ponnistelujasi. Ota kaikki tiimisi mukaan kehitysprosessiin ja varmista, että turvallisuus on huomio jokaisessa projektin osassa.

Arvioi työnkulun turvallisuus

Sinun tulisi myös tarkastella huolellisesti oman työnkulun turvallisuutta. Verkkosovelluksesi voivat olla sinänsä turvallisia, mutta yksi kehittäjien nopeimmin kasvavista haavoittuvuuksien lähteistä on itse kehitysjärjestelmä. Jos kehitysjärjestelmääsi hakkeroidaan, siitä tulee portaali haittaohjelmien injektoimiseksi ohjelmistoosi. Tämän välttämiseksi varmista, että salaat kaiken sisäisen viestinnän VPN: n avulla. Muista myös ottaa käyttöön salattu tietojen tallennus.

Johtopäätös

Vaikka tutkimusten mukaan Java on vähemmän turvallinen kuin jotkut muut kielet, kehittäjien tulisi ottaa tämä havainto ripaus suolaa. Uudemmat ja harvemmin käytetyt kielet saattavat vaikuttaa turvallisemmilta, mutta se johtuu todennäköisesti siitä, että monia heidän haavoittuvuuksistaan ​​ei ole vielä löydetty - tai mikä pahempaa, niitä on löydetty, mutta niistä ei ole ilmoitettu.

Vaikka sinun tulisi tietää riskit ja ryhtyä kaikkiin kohtuullisiin varotoimiin Java-sovellusten suojaamiseksi, älä huoli liikaa sijoituksista. Java-kehittäjänä tiedät ainakin mitä vastaan.

Tämä tarina "Kuinka turvallinen Java on verrattuna muihin kieliin?" julkaisi alun perin JavaWorld.