Programiranje

Kako varna je Java v primerjavi z drugimi jeziki?

Tako kot pri drugih vidikih kibernetske varnosti je tudi raven varnosti programskega jezika odvisna od tega, kaj mislimo z izrazom "varen". Res je, da ima Java manj prepoznanih ranljivosti kot nekateri drugi pogosto uporabljeni jeziki. Res je tudi, da so nekateri novejši jeziki vsaj na prvi pogled videti bolj varni kot Java.

Številne varnostne luknje, ki so jih našli v Javi, so posledica njene priljubljenosti. Široka uporaba pomeni, da je na tisoče lovcev na napake namenjenih iskanju jezikovnih ranljivosti Java, kar daje Javi nepošteno "prednost" na tem področju. Prav tako lahko nakazana varnost nekaterih novejših jezikov, kot je Ruby, bolj kot njihovo integriteto odraža njihovo uporabo v niši.

[Tudi na JavaWorldu: Obstajajo nekateri znaki, da se razvijalci Java izboljšujejo na področju varnosti.]

V tem članku si bomo ogledali, kako se najpogosteje uporabljeni programski jeziki uvrščajo glede varnosti. Pojasnil bom nekatere dejavnike, zaradi katerih je en jezik manj varen kot drugi, in zakaj so se ugotovljene ranljivosti v zadnjih nekaj letih tako povečale. Na koncu bom predlagal nekaj načinov, kako lahko razvijalci Java zmanjšajo ranljivosti v kodi.

Bottom line: Z vidika varnosti so ranljivosti, ki jih poznamo, boljše od tistih, ki jih ne poznamo.

Kako varna je Java?

Nedavne raziskave o ranljivosti najpogosteje uporabljenih programskih jezikov so prišle iz WhiteSource, odprtokodne platforme za varnost in skladnost z licencami. WhiteSource je preučil sedem najbolj priljubljenih odprtokodnih programskih jezikov: C, Java, JavaScript, Python, Ruby, PHP in C ++. Analitiki so nato uporabili različne vire za razvrščanje jezikov po številu ugotovljenih ranljivosti.

Zakaj odprtokodni?

Odločitev o uvrstitvi odprtokodnih jezikov ni naključna. Številni lastniški jeziki, vključno z lastniškimi izvedbami odprtokodnih jezikov, so pri ranljivostih precej manj pregledni. Zasebno podjetje nima poslovnega smisla objavljati varnostnih napak v svojem izdelku, zato ostajamo večinoma v temi glede stopnje ranljivosti teh jezikov. Napake, ki jih poznamo, so veliko bolj obvladljive kot tiste, ki jih ne poznamo.

Na podlagi študije WhiteSource je bil najbolj ranljiv programski jezik C z 47% vseh prijavljenih ranljivosti. Takšna razvrstitev izkušenih programerjev ne bo presenetila, drugi rezultati pa bi lahko. PHP je prišel v oddaljeni sekundi s 17%, sledila ji je Java z 12%, JavaScript pa je z 11% zaokrožil prve štiri. Sledili so jim "voditelji" Python, C ++ in Ruby.

Razumevanje varnosti programskega jezika

Nato bi se morali vprašati, zakaj so nekateri programski jeziki bolj ranljivi kot drugi. Na podlagi raziskave, ki sem jo navedel, bi lahko sklepali, da C predstavlja ogromno varnostno grožnjo. Toda upoštevajte, da se C uporablja veliko dlje kot kateri koli drug jezik na seznamu. Kot je zapisal Stephen Turner v Journal of Technology Research, "so programski jeziki podobni genetiki, saj se je nekaj prednikov s skupnimi lastnostmi razširilo."

Kot najstarejši jezik na seznamu je bil C razvit v popolnoma drugačnem grožnjem od razmeroma novejših jezikov, kot sta Java in Ruby. Kot poudarja WhiteSource, relativna starost C pomeni, da ima ustrezno večji obseg napisane kode. C je tudi eden od jezikov, ki se uporabljajo za večje infrastrukture, kot sta OpenSSL in jedro Linuxa. Ta kombinacija obsega in centralnosti lahko privede do večjega števila znanih odprtokodnih ranljivosti.

Čeprav se Java v tej analizi dobro obnese, avtorji izpostavljajo dve vrsti ranljivosti, ki še posebej vplivata na Javo. Najprej ugotavljajo, da nas US-CERT že dolgo opozarja na ranljivost Jave za beleženje napadov vbrizgavanja, predvsem prek spletnih brskalnikov. Takšne napade je mogoče preprečiti s preverjanjem veljavnosti ali preverjanjem pristnosti oddanih vnosov, vendar so razvijalci pogosto zadržani, da temeljito preverijo vnos, ker se bojijo, da bi to lahko povzročilo, da bi bile njihove aplikacije manj uporabniku prijazne.

Drugič, Java je še posebej ranljiva za zaupanja vredne podvige, ki sledijo ranljivostim nadzora dostopa. Čeprav so se postopki certificiranja od leta 2013 izboljšali, se mnogi razvijalci zanašajo na potrdila organov, ki so manj kot zanesljiva. Mogoče je dobiti potrdilo, ki je manj strogo, kot bi moralo biti. US-CERT, naveden v Journal of Technology Research, opozarja na ta odprta vrata za oddaljene napadalce, ki izvajajo poljubno kodo.

Sorazmerno majhna ranljivost Java ponuja zanimiv kontrast C. Java je bila razvita že dolgo po C, v okolju, kjer je bila zavest o grožnjah veliko večja, zato ni presenetljivo, da je Java veliko bolj varna. Čeprav se zdi, da je Ruby bolj varen kot Java, bi to lahko razložili z relativno mladostjo jezika in njegovo nišno uporabo.

Varnostne ranljivosti naraščajo - nekako

WhiteSource poroča o "znatnem povečanju števila znanih odprtokodnih varnostnih ranljivosti v vseh jezikih v zadnjih dveh letih." Čeprav se je skupno število ranljivosti v Javi od leta 2015 nenehno zmanjševalo, je treba zaradi novejšega povečanja števila ranljivosti pojasniti. To povečanje lahko pripišemo dvema dejavnikoma.

Prvič, obstajajo napake, razmeroma nov trend, pri katerem na tisoče tehničnih strokovnjakov izbere jezik, da bi našlo ranljivosti. Ti predstavljajo vsaj nekaj povečanja odprtokodnih varnostnih ranljivosti. Poleg tega se na splošno domneva, da lovci na grožnje enako skenirajo vse jezike, kar pa ni res. Java je eden najpogosteje uporabljenih jezikov pri spletnem razvoju pomemben cilj lovcev na grožnje. V tem kontekstu se uvrstitev Jave na tretje mesto za znane ranljivosti začne videti precej nizka.

Programski sistemi so tudi veliko bolj zapleteni kot pred desetimi leti, kar je še en pomemben dejavnik pri naraščajočem številu ranljivosti v Javi in ​​drugih jezikih. V svetu, kjer so lahko aplikacije za pametne telefone vir okužbe in kjer mora vsako podjetje imeti spletno mesto z omogočenim JavaScriptom, ni presenetljivo, da se je število ranljivosti spletnih mest eksponentno povečalo. Če k temu prištejemo še dolgoročno pomanjkanje strokovnjakov za kibernetsko varnost, se stvari v prihodnosti kibernetske varnosti začnejo zmrzovati.

Kako se izogniti varnostnim ranljivostim Java

Če preberete raziskavo o varnostnih ranljivostih, vam bo srce hitreje zaigralo, vendar se ne bojite: razvijalci Java imajo močan položaj, ko gre za varnost aplikacij. Na tisoče profesionalcev, ki v jeziku iščejo ranljivosti, obstaja velika verjetnost, da poznamo dober delež ranljivosti v jeziku. To znanje je moč.

Nedavni članek JavaWorld je ponudil 13 pravil za razvoj varnih aplikacij Java. Prav tako lahko najdete veliko člankov in tehničnih dokumentov o varni implementaciji Jave v določenih okoljih, kot sta varnost v oblaku za Javo in zaščita spletnih aplikacij za Javo. Oglejmo si nekaj načinov za zmanjšanje ranljivosti, ki ste jih morda spregledali.

Premaknite se na delovni tok DevSecOps

Eden od načinov za zmanjšanje ranljivosti v kodi Java je prehod na delovni tok DevSecOps. Zaradi te vrste delovnega toka je varnost v vseh fazah razvojnega procesa izjemna skrb. Kot razvijalci pogosto pozabimo, da našo programsko opremo uporabljajo (in jo včasih prilagajajo) vsi deli organizacije, za katero delamo. Ni dobro, da vaše spletne aplikacije utrjujejo pred vdorom, če je vaša tržna skupina odločena spodkopati vaša prizadevanja. V razvojni proces vključite vse svoje ekipe in se prepričajte, da je varnost pomembna za vsak vidik projekta.

Ocenite varnost poteka dela

Dobro si oglejte tudi varnost lastnega poteka dela. Vaše spletne aplikacije so morda same po sebi varne, toda eden najhitreje rastočih virov ranljivosti za razvijalce je sam razvojni sistem. Če vaš razvojni sistem vdre v sistem, postane portal za vbrizgavanje zlonamerne kode v vašo programsko opremo. Da bi se temu izognili, uporabite VPN za šifriranje vseh svojih notranjih komunikacij. Poskrbite tudi za uporabo šifriranega shranjevanja podatkov.

Zaključek

Čeprav raziskave ugotavljajo, da je Java manj varna kot nekateri drugi jeziki, bi morali razvijalci to ugotovitev sprejeti s ščepcem soli. Novejši in redkeje uporabljeni jeziki se morda zdijo varnejši, vendar je to verjetno zato, ker številnih njihovih ranljivosti še niso odkrili - ali še huje, našli so jih, vendar o njih niso poročali.

Čeprav bi morali vedeti tveganja in sprejeti vse razumne varnostne ukrepe, da zaščitite svoje programe Java, ne skrbite preveč glede uvrstitve. Kot razvijalec Java vsaj veste, s čim se soočate.

Ta zgodba "Kako varna je Java v primerjavi z drugimi jeziki?" je prvotno objavil JavaWorld.

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