Programmering

Hvor sikker er Java sammenlignet med andre sprog?

Som med andre aspekter af cybersikkerhed afhænger niveauet af programmeringssprogsikkerhed af, hvad vi mener med "sikker". Det er rigtigt, at Java har færre identificerede sårbarheder end nogle andre almindeligt anvendte sprog. Det er også rigtigt, at nogle nyere sprog vises mere sikre end Java, i det mindste ved første øjekast.

Mange af de sikkerhedshuller, der er fundet i Java, er resultatet af dens popularitet. Udbredt brug betyder, at tusinder af bugjægere er dedikeret til at finde Java-sproglige sårbarheder, hvilket giver Java en uretfærdig "fordel" på dette felt. Ligeledes kunne den underforståede sikkerhed for nogle nyere sprog, som Ruby, afspejle deres niche-brug mere end deres integritet.

[Også på JavaWorld: Der er nogle tegn på, at Java-udviklere bliver bedre til sikkerhed.]

I denne artikel vil vi se på, hvordan de mest anvendte programmeringssprog rangerer med hensyn til sikkerhed. Jeg forklarer nogle faktorer, der gør et sprog mindre sikkert end et andet, og hvorfor identificerede sårbarheder er steget så meget i de sidste par år. Endelig vil jeg foreslå et par måder, som Java-udviklere kan reducere sårbarheder i kode på.

Bundlinje: Fra et sikkerhedsperspektiv er sårbarheder, vi kender til, bedre end dem, vi ikke gør.

Hvor sikker er Java?

Nyere forskning i sårbarhederne i de mest anvendte programmeringssprog kommer fra WhiteSource, en open source-sikkerheds- og licensoverholdelsesplatform. WhiteSource kiggede på syv af de mest populære open source programmeringssprog: C, Java, JavaScript, Python, Ruby, PHP og C ++. Analytikere brugte derefter en række kilder til at rangordne sprogene efter deres antal identificerede sårbarheder.

Hvorfor open source?

Beslutningen om at rangordne open source-sprog er ikke tilfældig. Mange proprietære sprog - herunder proprietære implementeringer af open source-sprog - er langt mindre gennemsigtige, når det kommer til sårbarheder. Det giver ikke forretningsmæssig mening for en privat virksomhed at offentliggøre sikkerhedsfejl i sit produkt, så vi forbliver stort set i mørke om disse sproges sårbarhedsniveau. Fejl, vi kender til, er langt mere håndterbare end dem, vi ikke kender.

Baseret på WhiteSource-undersøgelsen var langt det mest sårbare programmeringssprog C, med 47% af alle rapporterede sårbarheder. Denne placering vil ikke overraske erfarne programmører, men andre resultater måske. PHP kom i et fjernt sekund med 17%, efterfulgt af Java med 12%, og JavaScript afrundede top fire med 11%. Efter disse "ledere" fulgte Python, C ++ og Ruby.

Forståelse af programmeringssprogsikkerhed

Dernæst skal vi spørge, hvorfor nogle programmeringssprog er mere sårbare end andre. Baseret på den forskning, jeg har citeret, kan du konkludere, at C repræsenterer en enorm sikkerhedstrussel. Men overvej at C har været i brug i meget længere tid end noget andet sprog på listen. Som Stephen Turner, der skriver i Journal of Technology Research, udtrykker det, "programmeringssprog er som genetik, idet der er et par forfædre med fælles træk, der er spredt."

Som det ældste sprog på listen blev C udviklet i et helt andet trusselmiljø end relativt nyere sprog som Java og Ruby. Som WhiteSource påpeger betyder Cs relative alder, at den har en tilsvarende højere mængde skrevet kode. C er også et af de sprog, der bruges til større infrastrukturer som OpenSSL og Linux-kernen. Denne kombination af volumen og centralitet kan føre til et større antal kendte open source-sårbarheder.

Selvom Java klarer sig godt i denne analyse, fremhæver forfatterne to typer sårbarhed, der især påvirker Java. For det første bemærker de, at US-CERT længe har advaret os om Java's sårbarhed over for loginjektionsangreb, hovedsageligt gennem webbrowsere. Sådanne angreb kan afværges gennem validering eller godkendelse af indsendt input, men udviklere er ofte tilbageholdende med at validere input grundigt af frygt for, at dette kan gøre deres apps mindre brugervenlige.

For det andet er Java særlig sårbar over for tillidsudnyttelser, der følger adgangskontrolsårbarheder. Selvom certificeringsprocesser er forbedret siden 2013, er mange udviklere afhængige af certifikater fra myndigheder, der er mindre end pålidelige. Det er muligt at få et certifikat, der er mindre stringent, end det burde være. US-CERT, citeret i Journal of Technology Research, advarer om denne åbne dør for fjernangribere, der udfører vilkårlig kode.

Java's relativt lave sårbarhed giver en interessant kontrast til C. Java blev udviklet længe efter C i et miljø, hvor trusselbevidsthed var meget højere, så det er ingen overraskelse, at Java er langt mere sikker. På samme måde, mens Ruby ser ud til at være mere sikker end Java, kunne dette forklares med sprogets relative ungdom og dets nicheapplikation.

Sikkerhedssårbarheder er stigende - slags

WhiteSource rapporterer en "betydelig stigning i antallet af kendte open source sikkerhedssårbarheder på tværs af alle sprog i løbet af de sidste to år." Selvom det samlede antal sårbarheder i Java er faldet støt siden 2015, kræver den nyere stigning i antallet af sårbarheder en forklaring. Vi kan tilskrive denne stigning to faktorer.

For det første er der bugbounties, en relativt ny trend, hvor tusindvis af tekniske professionelle vælger et sprog for at finde sårbarheder. Disse tegner sig for i det mindste noget af stigningen i open source sikkerhedssårbarheder. Derudover antages det generelt, at trusseljægere scanner alle sprog ens, men det er ikke sandt. Som et af de mest anvendte sprog i webudvikling er Java et vigtigt mål for trusseljægere. I denne sammenhæng begynder Java's tredjepladsrangering for kendte sårbarheder at se temmelig lavt ud.

Softwaresystemer er også en størrelsesorden mere kompliceret end for 10 år siden, hvilket er en anden vigtig faktor i det stigende antal sårbarheder, der findes i Java og andre sprog. I en verden, hvor smartphone-apps kan være en kilde til infektion, og hvor alle virksomheder skal have et JavaScript-aktiveret websted, er det ikke overraskende, at antallet af websteds sårbarheder er steget eksponentielt. Dertil kommer den langsigtede mangel på professionelle inden for cybersikkerhed, og tingene begynder at se dystre ud i fremtiden for cybersikkerhed.

Sådan undgår du Java-sikkerhedssårbarheder

Læsning af forskningen om sikkerhedssårbarheder kan få dit hjerte til at slå hurtigere, men frygt ikke: Java-udviklere er i en stærk position, når det kommer til applikationssikkerhed. Med tusinder af professionelle, der scanner sproget for sårbarheder, er der en god chance for, at vi kender en god del af sårbarhederne på sproget. Denne viden er magt.

En nylig JavaWorld-artikel tilbød 13 regler til udvikling af sikre Java-applikationer. Du kan også finde masser af artikler og hvidbøger om sikker implementering af Java i bestemte miljøer, såsom cloud-sikkerhed til Java og webapp-sikkerhed til Java. Lad os overveje et par måder at reducere sårbarheder, som du måske har overset.

Gå til en DevSecOps-arbejdsgang

En måde at reducere sårbarheder i Java-kode er at flytte til en DevSecOps-arbejdsgang. Denne type arbejdsgang gør sikkerhed til et afgørende problem i alle faser af udviklingsprocessen. Som udviklere glemmer vi ofte, at vores software bruges (og undertiden tilpasses) af alle dele af den organisation, vi arbejder for. Det er ikke godt at hærde dine webapps mod indbrud, hvis dit marketingteam er fast besluttet på at underminere din indsats. Inkluder alle dine teams i udviklingsprocessen, og sørg for, at sikkerhed er en overvejelse for alle aspekter af projektet.

Evaluer workflow-sikkerhed

Du bør også se godt på sikkerheden i din egen arbejdsgang. Dine webapps kan være sikre i sig selv, men en af ​​de hurtigst voksende kilder til sårbarhed for udviklere er selve udviklingssystemet. Hvis dit udviklingssystem er hacket, bliver det en portal til injektion af ondsindet kode i din software. For at undgå dette skal du sørge for at bruge en VPN til at kryptere al din interne kommunikation. Sørg også for at implementere krypteret datalagring.

Konklusion

Selvom forskning finder ud af, at Java er mindre sikker end nogle andre sprog, bør udviklere tage dette fund med en knivspids salt. Nyere og mindre almindeligt anvendte sprog kan forekomme mere sikre, men det er sandsynligt, fordi mange af deres sårbarheder endnu ikke er opdaget - eller værre, de er fundet, men ikke rapporteret.

Mens du skal kende risiciene og tage alle rimelige forholdsregler for at sikre dine Java-apps, skal du ikke bekymre dig for meget om placeringen. Som Java-udvikler ved du i det mindste hvad du går imod.

Denne historie, "Hvor sikker er Java sammenlignet med andre sprog?" blev oprindeligt udgivet af JavaWorld.