Programmering

Hvor sikker er Java sammenlignet med andre språk?

Som med andre aspekter av cybersikkerhet, avhenger nivået av sikkerhet for programmeringsspråk av hva vi mener med "sikker". Det er sant at Java har færre identifiserte sårbarheter enn noen andre ofte brukte språk. Det er også sant at noen nyere språk virker sikrere enn Java, i det minste ved første øyekast.

Mange av sikkerhetshullene som er funnet i Java er resultatet av populariteten. Utbredt bruk betyr at tusenvis av bugjegere er dedikert til å finne Java-språksårbarheter, noe som gir Java en urettferdig "fordel" i dette feltet. På samme måte kan den underforståtte sikkerheten til noen nyere språk, som Ruby, gjenspeile deres nisjebruk mer enn deres integritet.

[Også på JavaWorld: Det er noen tegn på at Java-utviklere blir bedre på sikkerhet.]

I denne artikkelen vil vi se på hvordan de mest brukte programmeringsspråkene rangeres når det gjelder sikkerhet. Jeg forklarer noen faktorer som gjør ett språk mindre sikkert enn et annet, og hvorfor identifiserte sårbarheter har økt så mye de siste årene. Til slutt vil jeg foreslå noen måter Java-utviklere kan redusere sårbarheter i kode.

Poenget: Fra et sikkerhetsperspektiv er sårbarheter vi vet om bedre enn de vi ikke gjør.

Hvor sikker er Java?

Nyere forskning på sårbarhetene til de mest brukte programmeringsspråkene kommer fra WhiteSource, en åpen kildekode-sikkerhets- og lisensoverensstemmelsesplattform. WhiteSource så på syv av de mest populære programmeringsspråkene med åpen kildekode: C, Java, JavaScript, Python, Ruby, PHP og C ++. Analytikere brukte deretter en rekke kilder for å rangere språkene etter antall identifiserte sårbarheter.

Hvorfor åpen kildekode?

Beslutningen om å rangere språk med åpen kildekode er ikke tilfeldig. Mange proprietære språk - inkludert proprietære implementeringer av open source-språk - er langt mindre gjennomsiktige når det gjelder sårbarheter. Det gir ikke forretningsmessig mening for et privat selskap å publisere sikkerhetsfeil i produktet sitt, så vi er stort sett i mørket om sårbarhetsnivået til disse språkene. Feil vi vet om er langt mer håndterbare enn de vi ikke kjenner.

Basert på WhiteSource-studien var det mest sårbare programmeringsspråket C, med 47% av alle rapporterte sårbarheter. Denne rangeringen vil ikke overraske erfarne programmerere, men andre resultater kan. PHP kom i et fjernt sekund, med 17%, etterfulgt av Java med 12%, og JavaScript avrundet de fire beste med 11%. Etter disse "lederne" fulgte Python, C ++ og Ruby.

Forstå sikkerhet for programmeringsspråk

Deretter bør vi spørre hvorfor noen programmeringsspråk er mer sårbare enn andre. Basert på forskningen jeg har sitert, kan du konkludere med at C representerer en enorm sikkerhetstrussel. Men tenk at C har vært i bruk i lengre tid enn noe annet språk på listen. Som Stephen Turner, skriver i Journal of Technology Research, uttrykker det, "programmeringsspråk er som genetikk, ved at det er noen forfedre med vanlige egenskaper som har spredt seg."

Som det eldste språket på listen ble C utviklet i et helt annet trusselmiljø enn relativt nyere språk som Java og Ruby. Som WhiteSource påpeker, betyr Cs relative alder at den har et tilsvarende høyere volum med skrevet kode. C er også et av språkene som brukes til store infrastrukturer som OpenSSL og Linux-kjernen. Denne kombinasjonen av volum og sentralitet kan føre til et høyere antall kjente åpen kildekode-sårbarheter.

Selv om Java klarer seg bra i denne analysen, fremhever forfatterne to typer sårbarhet som spesielt påvirker Java. Først bemerker de at US-CERT lenge har advart oss om Java's sårbarhet for logginjeksjonsangrep, hovedsakelig gjennom nettlesere. Slike angrep kan avverges gjennom validering eller godkjenning av innsendte input, men utviklere er ofte tilbakeholdne med å validere input grundig av frykt for at dette kan gjøre appene deres mindre brukervennlige.

For det andre er Java spesielt utsatt for tillitsutnyttelser som følger sårbarheter i tilgangskontroll. Selv om sertifiseringsprosesser har blitt bedre siden 2013, er mange utviklere avhengige av sertifikater fra myndigheter som er mindre enn pålitelige. Det er mulig å få et sertifikat som er mindre strengt enn det burde være. US-CERT, sitert i Journal of Technology Research, advarer om denne åpne døren for eksterne angripere som utfører vilkårlig kode.

Java relativt lave sårbarhet gir en interessant kontrast til C. Java ble utviklet lenge etter C, i et miljø der trusselbevisstheten var mye høyere, så det er ingen overraskelse at Java er langt sikrere. På samme måte, mens Ruby ser ut til å være sikrere enn Java, kan dette forklares med språkets relative ungdom og dets nisjeapplikasjon.

Sikkerhetsproblemer øker - liksom

WhiteSource rapporterer en "betydelig økning i antall kjente sikkerhetsproblemer med åpen kildekode på alle språk de siste to årene." Selv om det totale antallet sårbarheter i Java har gått jevnt ned siden 2015, krever den nyere økningen i antall sårbarheter en forklaring. Vi kan tilskrive denne økningen to faktorer.

For det første er det bug bounties, en relativt ny trend der tusenvis av tekniske proffer velger et språk for å finne sårbarheter. Disse står for i det minste noe av økningen i sikkerhetsproblemer med åpen kildekode. I tillegg antas det generelt at trusseljegere skanner alle språk likt, men det er ikke sant. Som et av de mest brukte språkene innen nettutvikling, er Java et viktig mål for trusseljegere. I denne sammenhengen begynner Javas tredjeplass for kjente sårbarheter å se ganske lav ut.

Programvaresystemer er også en størrelsesorden mer komplisert enn for 10 år siden, noe som er en annen viktig faktor i det økende antall sårbarheter som finnes i Java og andre språk. I en verden der smarttelefon-apper kan være en kilde til infeksjon, og hvor hvert selskap må ha et JavaScript-aktivert nettsted, er det ingen overraskelse at antall nettstedssårbarheter har økt eksponentielt. Legg til dette den langsiktige mangelen på fagpersoner innen cybersikkerhet, og ting begynner å se dystre ut for cybersikkerhetens fremtid.

Hvordan unngå Java-sikkerhetsproblemer

Å lese forskningen om sikkerhetsproblemer kan få hjertet til å slå raskere, men frykt ikke: Java-utviklere er i en sterk posisjon når det gjelder applikasjonssikkerhet. Med tusenvis av proffer som skanner språket for sårbarheter, er det en god sjanse for at vi vet om en god andel av sårbarhetene på språket. Den kunnskapen er makt.

En nylig JavaWorld-artikkel tilbød 13 regler for utvikling av sikre Java-applikasjoner. Du kan også finne mange artikler og meldinger om å implementere Java sikkert i bestemte miljøer, for eksempel skysikkerhet for Java og webappsikkerhet for Java. La oss vurdere et par måter å redusere sårbarheter som du kanskje har oversett.

Gå til en DevSecOps-arbeidsflyt

En måte å redusere sårbarheter i Java-kode er å flytte til en DevSecOps-arbeidsflyt. Denne typen arbeidsflyt gjør sikkerhet til et viktig punkt i alle ledd i utviklingsprosessen. Som utviklere glemmer vi ofte at programvaren vår brukes (og noen ganger tilpasses) av alle deler av organisasjonen vi jobber for. Det er ikke bra å herde webappene dine mot inntrenging hvis markedsføringsteamet ditt er fast bestemt på å undergrave innsatsen. Inkluder alle teamene dine i utviklingsprosessen, og sørg for at sikkerhet er en vurdering av alle aspekter av prosjektet.

Evaluer arbeidsflytsikkerhet

Du bør også se godt på sikkerheten til din egen arbeidsflyt. Nettappene dine kan være sikre i seg selv, men en av de raskest voksende kildene til sårbarhet for utviklere er selve utviklingssystemet. Hvis utviklingssystemet ditt er hacket, blir det en portal for å injisere skadelig kode i programvaren din. For å unngå dette, sørg for at du bruker en VPN for å kryptere all intern kommunikasjon. Sørg også for å implementere kryptert datalagring.

Konklusjon

Selv om forskning finner ut at Java er mindre sikker enn noen andre språk, bør utviklere ta det funnet med en klype salt. Nyere og mindre brukte språk kan virke sikrere, men det er sannsynlig fordi mange av deres sårbarheter ennå ikke er oppdaget - eller verre, de har blitt funnet, men ikke rapportert.

Mens du burde vite risikoen og ta alle rimelige forholdsregler for å sikre Java-appene dine, ikke bekymre deg for mye om rangeringen. Som Java-utvikler vet du i det minste hva du går imot.

Denne historien, "Hvor sikker er Java sammenlignet med andre språk?" ble opprinnelig utgitt av JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found