Programmēšana

Cik droša ir Java salīdzinājumā ar citām valodām?

Tāpat kā ar citiem kiberdrošības aspektiem, arī programmēšanas valodas drošības līmenis ir atkarīgs no tā, ko mēs domājam ar “drošs”. Tiesa, Java ir mazāk identificētu ievainojamību nekā dažās citās parasti lietotajās valodās. Tāpat ir taisnība, ka dažas jaunākas valodas vismaz pirmajā acu uzmetienā šķiet drošākas nekā Java.

Daudzas Java nepilnības atklātās drošības nepilnības ir tās popularitātes rezultāts. Plašs lietojums nozīmē, ka tūkstošiem kļūdu meklētāju ir veltīti Java valodas ievainojamību atrašanai, kas dod Java negodīgas "priekšrocības" šajā jomā. Tāpat dažu jaunāku valodu, piemēram, Ruby, netiešā drošība varētu vairāk atspoguļot to nišas lietojumu nekā viņu integritāti.

[Arī vietnē JavaWorld: ir dažas pazīmes, kas liecina, ka Java izstrādātāji uzlabo drošību.]

Šajā rakstā aplūkosim, kā visbiežāk tiek izmantotas programmēšanas valodas drošības ziņā. Es paskaidrošu dažus faktorus, kas padara vienu valodu mazāk drošu nekā citu, un kāpēc identificētie ievainojamības punkti pēdējos gados ir tik daudz pieauguši. Visbeidzot, es ieteikšu dažus veidus, kā Java izstrādātāji var samazināt ievainojamību kodā.

Apakšējā līnija: no drošības viedokļa ievainojamības, par kurām mēs zinām, ir labākas nekā tās, kuras mums nav.

Cik droša ir Java?

Nesenie pētījumi par visbiežāk izmantoto programmēšanas valodu ievainojamību ir iegūti no atvērtā koda drošības un licenču atbilstības platformas WhiteSource. WhiteSource apskatīja septiņas populārākās atvērtā koda programmēšanas valodas: C, Java, JavaScript, Python, Ruby, PHP un C ++. Pēc tam analītiķi izmantoja dažādus avotus, lai sarindotu valodas pēc to identificēto ievainojamību skaita.

Kāpēc atvērtā koda?

Lēmums klasificēt atvērtā koda valodas nav nejaušs. Daudzas patentētās valodas, tostarp atvērtā koda valodu īpašumtiesības, ir daudz mazāk pārredzamas, ja runa ir par ievainojamību. Privātam uzņēmumam nav jēgas publicēt sava produkta drošības trūkumus, tāpēc mēs lielākoties nezinām par šo valodu ievainojamības līmeni. Trūkumi, par kuriem mēs zinām, ir daudz vieglāk pārvaldāmi nekā tie, kurus mēs nezinām.

Pamatojoties uz WhiteSource pētījumu, visneaizsargātākā programmēšanas valoda līdz šim bija C, ar 47% no visām ziņotajām ievainojamībām. Šis rangs nepārsteigs pieredzējušus programmētājus, bet citi rezultāti varētu būt. PHP ierindojās tālā otrajā vietā ar 17%, sekoja Java ar 12%, bet JavaScript noapaļoja labāko četrinieku ar 11%. Pēc šiem "līderiem" sekoja Python, C ++ un Ruby.

Izpratne par programmēšanas valodas drošību

Tālāk mums jājautā, kāpēc dažas programmēšanas valodas ir neaizsargātākas nekā citas. Balstoties uz manis pieminēto pētījumu, jūs varētu secināt, ka C ir milzīgs drošības apdraudējums. Bet ņemiet vērā, ka C ir lietots daudz ilgāk nekā jebkura cita saraksta valoda. Kā izteicies Stīvens Tērners, rakstot žurnālā Journal of Technology Research, "programmēšanas valodas ir kā ģenētika, jo ir daži senči ar kopīgām iezīmēm, kas ir savairojušās".

Kā vecākā saraksta valoda C tika izstrādāta pilnīgi atšķirīgā draudu vidē no salīdzinoši jaunākām valodām, piemēram, Java un Ruby. Kā norāda WhiteSource, C relatīvais vecums nozīmē, ka tam ir attiecīgi lielāks rakstītā koda apjoms. C ir arī viena no valodām, ko lieto lielākajām infrastruktūrām, piemēram, OpenSSL un Linux kodolam. Šī apjoma un centralitātes kombinācija var izraisīt lielāku zināmo atklātā pirmkoda ievainojamību.

Lai gan Java šajā analīzē darbojas labi, autori izceļ divus ievainojamības veidus, kas īpaši ietekmē Java. Pirmkārt, viņi atzīmē, ka US-CERT jau sen mūs brīdināja par Java neaizsargātību pret žurnālu ievadīšanas uzbrukumiem, galvenokārt izmantojot tīmekļa pārlūkprogrammas. Šādus uzbrukumus var novērst, pārbaudot vai autentificējot iesniegto ievadi, taču izstrādātāji bieži vien atturīgi rūpīgi pārbauda ievadi, baidoties, ka tas viņu lietotnes varētu padarīt lietotājam mazāk draudzīgas.

Otrkārt, Java ir īpaši neaizsargāta pret uzticības izmantošanu, kas seko piekļuves kontroles ievainojamībām. Lai gan kopš 2013. gada sertifikācijas procesi ir uzlabojušies, daudzi izstrādātāji paļaujas uz iestāžu sertifikātiem, kas ir mazāk uzticami. Ir iespējams iegūt mazāk stingru sertifikātu nekā vajadzētu. US-CERT, kas citēts Journal of Technology Research, brīdina par šīm atvērtajām durvīm attāliem uzbrucējiem, kuri izpilda patvaļīgu kodu.

Java relatīvi zemā ievainojamība piedāvā interesantu kontrastu ar C. Java tika izstrādāta ilgi pēc C, vidē, kur draudu apziņa bija daudz augstāka, tāpēc nav pārsteigums, ka Java ir daudz drošāka. Tāpat, kaut arī Rubīns, šķiet, ir drošāks par Java, to var izskaidrot ar valodas relatīvo jaunību un tās nišas pielietojumu.

Drošības ievainojamība pieaug - sava veida

WhiteSource ziņo par "zināmo atklātā pirmkoda drošības ievainojamību skaita ievērojamu pieaugumu visās valodās pēdējo divu gadu laikā". Lai gan kopējais Java ievainojamību skaits kopš 2015. gada ir nepārtraukti samazinājies, ir jāizskaidro jaunākais ievainojamību skaita pieaugums. Šo pieaugumu varam saistīt ar diviem faktoriem.

Pirmkārt, pastāv kļūdas, salīdzinoši jauna tendence, kurā tūkstošiem tehnisko profesionāļu izvēlas valodu, lai atrastu ievainojamības. Tie veido vismaz daļu no atvērtā pirmkoda drošības ievainojamības pieauguma. Turklāt parasti tiek pieņemts, ka draudu mednieki visas valodas skenē vienādi, taču tā nav taisnība. Java kā viena no visbiežāk izmantotajām valodām tīmekļa izstrādē ir nozīmīgs draudu mednieku mērķis. Šajā kontekstā Java zināmo ievainojamību trešajā vietā sāk izskatīties diezgan zems.

Programmatūras sistēmas arī ir par daudz sarežģītākas nekā pirms 10 gadiem, kas ir vēl viens nozīmīgs faktors Java un citās valodās atrasto neaizsargātību skaita pieaugumā. Pasaulē, kurā viedtālruņu lietotnes var būt infekcijas avots un kur katram uzņēmumam ir jābūt vietnei, kurā iespējota JavaScript, nav pārsteigums, ka vietņu ievainojamību skaits ir strauji pieaudzis. Pievienojiet tam ilgtermiņa kiberdrošības profesionāļu trūkumu, un lietas sāk izskatīties drūmas kiberdrošības nākotnei.

Kā izvairīties no Java drošības ievainojamības

Izlasot pētījumu par drošības ievainojamību, jūsu sirds var pukstēt straujāk, taču nebaidieties: Java izstrādātājiem ir spēcīga pozīcija lietojumprogrammu drošības jomā. Tā kā tūkstošiem profesionāļu skenē valodu pēc ievainojamības, pastāv lielas iespējas, ka mēs zinām par lielu valodas ievainojamību. Šīs zināšanas ir spēks.

Nesenajā JavaWorld rakstā tika piedāvāti 13 noteikumi drošu Java lietojumprogrammu izstrādei. Jūs varat arī atrast daudz rakstu un balto dokumentu par Java drošu ieviešanu noteiktās vidēs, piemēram, Java mākoņdrošību un Java tīmekļa lietotņu drošību. Apsvērsim pāris veidus, kā samazināt ievainojamību, kuras, iespējams, esat aizmirsis.

Pāriet uz DevSecOps darbplūsmu

Viens no veidiem, kā samazināt Java koda ievainojamību, ir pāreja uz DevSecOps darbplūsmu. Šāda veida darbplūsma padara drošību par ārkārtīgi svarīgu visos attīstības procesa posmos. Kā izstrādātāji mēs bieži aizmirstam, ka mūsu programmatūru izmanto (un dažreiz pielāgo) visas organizācijas daļas, kurās strādājam. Nav labi rūdīt jūsu tīmekļa lietotnes pret ielaušanos, ja jūsu mārketinga komanda ir apņēmības pilna mazināt jūsu centienus. Iekļaujiet visas savas komandas izstrādes procesā un pārliecinieties, ka drošība tiek ņemta vērā visos projekta aspektos.

Novērtējiet darbplūsmas drošību

Jums vajadzētu arī labi apskatīt savas darbplūsmas drošību. Jūsu tīmekļa lietotnes pašas par sevi var būt drošas, taču viens no izstrādātājiem visstraujāk ievainojamības avotiem ir pati izstrādes sistēma. Ja jūsu attīstības sistēma ir uzlauzta, tā kļūst par portālu ļaunprātīga koda ievadīšanai jūsu programmatūrā. Lai no tā izvairītos, pārliecinieties, vai izmantojat VPN, lai šifrētu visus iekšējos sakarus. Pārliecinieties arī par šifrētu datu krātuves ieviešanu.

Secinājums

Lai gan pētījumi atklāj, ka Java ir mazāk droša nekā dažas citas valodas, izstrādātājiem šī atziņa būtu jāpieņem ar nedaudz sāls. Jaunākas un retāk lietotas valodas var šķist drošākas, taču tas, visticamāk, ir tāpēc, ka daudzas viņu ievainojamības vēl nav atklātas - vai vēl ļaunāk - tās ir atrastas, bet par tām nav ziņots.

Lai gan jums vajadzētu zināt riskus un veikt visus saprātīgos piesardzības pasākumus, lai aizsargātu Java lietotnes, neuztraucieties pārāk daudz par klasifikāciju. Kā Java izstrādātājs jūs vismaz zināt, ar ko jūs stāvat pretī.

Šis stāsts "Cik droša ir Java salīdzinājumā ar citām valodām?" sākotnēji to publicēja JavaWorld.

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