Programavimas

Kiek „Java“ yra saugi, palyginti su kitomis kalbomis?

Kaip ir kitais kibernetinio saugumo aspektais, programavimo kalbos saugumo lygis priklauso nuo to, ką turime omenyje sakydami „saugus“. Tiesa, „Java“ turi mažiau nustatytų pažeidžiamumų nei kai kurios kitos dažniausiai naudojamos kalbos. Taip pat tiesa, kad kai kurios naujesnės kalbos atrodo saugesnės nei „Java“, bent jau iš pirmo žvilgsnio.

Daugelis „Java“ saugumo spragų yra jos populiarumo rezultatas. Plačiai paplitęs reiškia, kad tūkstančiai klaidų ieškotojų yra atsidavę ieškodami „Java“ kalbos pažeidžiamumų, o tai suteikia „Java“ nesąžiningą „pranašumą“ šioje srityje. Taip pat numanomas kai kurių naujesnių kalbų, pvz., „Ruby“, saugumas galėtų labiau atspindėti jų nišos naudojimą nei vientisumą.

[Taip pat „JavaWorld“: Yra keletas ženklų, rodančių, kad „Java“ kūrėjai saugėja geriau.]

Šiame straipsnyje mes apžvelgsime, kaip dažniausiai naudojamos programavimo kalbos reitinguojamos saugumo požiūriu. Paaiškinsiu kai kuriuos veiksnius, dėl kurių viena kalba yra mažiau saugi nei kita, ir kodėl per pastaruosius kelerius metus taip padidėjo nustatytų pažeidžiamumų. Galiausiai pasiūlysiu keletą būdų, kaip „Java“ kūrėjai gali sumažinti kodo pažeidžiamumą.

Apatinė eilutė: Žvelgiant iš saugumo perspektyvos, pažeidžiamumai, apie kuriuos mes žinome, yra geresni nei tie, kurių neturime.

Ar saugi yra „Java“?

Naujausi dažniausiai naudojamų programavimo kalbų pažeidžiamumo tyrimai atlikti iš „WhiteSource“ - atvirojo kodo saugos ir licencijų laikymosi platformos. „WhiteSource“ apžvelgė septynias populiariausias atvirojo kodo programavimo kalbas: C, Java, JavaScript, Python, Ruby, PHP ir C ++. Tada analitikai naudojo įvairius šaltinius, kad klasifikuotų kalbas pagal jų nustatytų pažeidžiamumų skaičių.

Kodėl verta naudoti atvirąjį kodą?

Sprendimas klasifikuoti atvirojo šaltinio kalbas nėra atsitiktinis. Daugelis nuosavų kalbų, įskaitant nuosavą atvirojo kodo kalbų diegimą, yra daug mažiau skaidrios, kai kalbama apie pažeidžiamumą. Privačiai įmonei nėra prasmės skelbti savo produkto saugos trūkumų, todėl apie šių kalbų pažeidžiamumo lygį vis dar nežinome. Trūkumai, apie kuriuos žinome, yra daug lengviau valdomi nei tie, kurių nežinome.

Remiantis „WhiteSource“ tyrimu, labiausiai pažeidžiama programavimo kalba buvo C, su 47% visų praneštų pažeidžiamumų. Toks reitingas nenustebins patyrusių programuotojų, tačiau gali būti kitų rezultatų. PHP užėmė tolimą sekundę su 17 proc., Antroje vietoje buvo „Java“ su 12 proc., O „JavaScript“ su keturiais aukščiais suapvalino 11 proc. Po šių „lyderių“ buvo Python, C ++ ir Ruby.

Suprasti programavimo kalbos saugumą

Tada turėtume paklausti, kodėl kai kurios programavimo kalbos yra labiau pažeidžiamos nei kitos. Remdamiesi mano cituotais tyrimais galite padaryti išvadą, kad C kelia didžiulę grėsmę saugumui. Bet atsižvelkite į tai, kad C buvo vartojama daug ilgiau nei bet kuri kita sąraše pateikta kalba. Kaip teigia Stephenas Turneris, rašydamas žurnale „Journal of Technology Research“, „programavimo kalbos yra tarsi genetika, nes yra keletas protėvių, turinčių bendrų bruožų, kurių daugėjo“.

Kaip seniausia sąraše vartojama kalba C buvo sukurta visiškai kitoje grėsmės aplinkoje, palyginti su palyginti naujesnėmis kalbomis, tokiomis kaip „Java“ ir „Ruby“. Kaip pažymi „WhiteSource“, santykinis C amžius reiškia, kad jis turi atitinkamai didesnį parašyto kodo kiekį. C taip pat yra viena iš kalbų, naudojamų pagrindinėms infrastruktūroms, tokioms kaip OpenSSL ir „Linux“ branduolys. Toks apimties ir centralizavimo derinys gali sukelti daugiau žinomų atvirojo kodo pažeidžiamumų.

Nors „Java“ šioje analizėje veikia gerai, autoriai pabrėžia du pažeidžiamumo tipus, kurie ypač veikia „Java“. Pirma, jie pažymi, kad „US-CERT“ jau seniai mus perspėjo apie „Java“ pažeidžiamumą žurnalo injekcijos atakoms, daugiausia per interneto naršykles. Tokių atakų galima išvengti patvirtinant ar patvirtinant pateiktą įvestį, tačiau kūrėjai dažnai nesiryžta kruopščiai patvirtinti įvesties, bijodami, kad tai gali padaryti jų programas mažiau patogias naudoti.

Antra, „Java“ yra ypač pažeidžiama pasitikėjimo išnaudojimais, kurie seka prieigos kontrolės pažeidžiamumus. Nors nuo 2013 m. Sertifikavimo procesai pagerėjo, daugelis kūrėjų pasikliauja mažiau nei patikimų valdžios institucijų sertifikatais. Galima gauti ne tokį griežtą pažymėjimą, koks turėtų būti. „US-CERT“, cituojama „Journal of Technology Research“, perspėja apie šias atviras duris nuotoliniams užpuolikams, vykdantiems savavališką kodą.

Santykinai nedidelis „Java“ pažeidžiamumas siūlo įdomų kontrastą su C. „Java“ buvo sukurta ilgai po C, aplinkoje, kur grėsmės sąmonė buvo daug didesnė, todėl nenuostabu, kad „Java“ yra kur kas saugesnė. Panašiai, nors atrodo, kad „Ruby“ yra saugesnis nei „Java“, tai galima paaiškinti santykiniu kalbos jaunimu ir jos nišiniu pritaikymu.

Saugumo pažeidžiamumas didėja - tarsi

„WhiteSource“ praneša, kad „per pastaruosius dvejus metus žymiai išaugo žinomų atvirojo kodo saugumo pažeidžiamumų visomis kalbomis skaičius“. Nors bendras „Java“ pažeidžiamumų skaičius nuo 2015 m. Nuolat mažėjo, reikia paaiškinti naujausią pažeidžiamumų skaičiaus šuolį. Šį padidėjimą galime priskirti dviem veiksniams.

Pirma, yra klaidų gausos - gana nauja tendencija, kai tūkstančiai profesionalių profesionalų renkasi kalbą, kad rastų pažeidžiamumų. Tai lemia bent dalį padidėjusio atvirojo kodo saugumo pažeidžiamumo. Be to, paprastai daroma prielaida, kad grėsmių ieškotojai vienodai nuskaito visas kalbas, tačiau tai netiesa. Kaip viena iš dažniausiai naudojamų kalbų kuriant kalbas, „Java“ yra svarbus taikinys grėsmių ieškotojams. Šiame kontekste „Java“ trečioji vieta pagal žinomus pažeidžiamumus pradeda atrodyti gana žema.

Programinės įrangos sistemos taip pat yra sudėtingesnės nei prieš 10 metų, o tai yra dar vienas svarbus veiksnys didėjant „Java“ ir kitose kalbose aptinkamų pažeidžiamumų skaičiui. Pasaulyje, kuriame išmaniųjų telefonų programos gali būti infekcijos šaltinis ir kur kiekviena įmonė turi turėti „JavaScript“ įgalintą svetainę, nenuostabu, kad interneto pažeidžiamumų skaičius eksponentiškai išaugo. Pridėkite prie to ilgalaikį kibernetinio saugumo specialistų trūkumą, ir viskas pradeda atrodyti niūri dėl kibernetinio saugumo ateities.

Kaip išvengti „Java“ saugumo spragų

Perskaičius saugumo pažeidžiamumų tyrimus, jūsų širdis gali plakti greičiau, tačiau nebijokite: „Java“ kūrėjai yra tvirtoje pozicijoje, kalbant apie programų saugumą. Tūkstančiai profesionalų skenuoja kalbą dėl pažeidžiamumų, todėl yra didelė tikimybė, kad žinome apie didelę kalbos pažeidžiamumų dalį. Tos žinios yra jėga.

Naujausiame „JavaWorld“ straipsnyje buvo pasiūlyta 13 saugių „Java“ programų kūrimo taisyklių. Taip pat galite rasti daugybę straipsnių ir baltųjų dokumentų apie saugų „Java“ diegimą konkrečiose aplinkose, pvz., „Java“ debesies saugumą ir „Java“ žiniatinklio programų saugumą. Apsvarstykime keletą būdų, kaip sumažinti pažeidžiamumą, kurių galbūt nepastebėjote.

Perkelti į „DevSecOps“ darbo eigą

Vienas iš būdų sumažinti „Java“ kodo pažeidžiamumą yra pereiti prie „DevSecOps“ darbo eigos. Dėl tokio tipo darbo eigos saugumas tampa itin svarbiu visais kūrimo proceso etapais. Kaip kūrėjai dažnai pamirštame, kad mūsų programinę įrangą naudoja (o kartais ir pritaiko) visos organizacijos dalys, kuriose dirbame. Nėra gerai grūdinti žiniatinklio programas nuo įsilaužimo, jei rinkodaros komanda pasiryžusi pakenkti jūsų pastangoms. Įtraukite visas savo komandas į kūrimo procesą ir įsitikinkite, kad saugumas yra kiekvieno projekto aspektas.

Įvertinkite darbo eigos saugumą

Taip pat turėtumėte gerai įvertinti savo darbo eigos saugumą. Jūsų žiniatinklio programos savaime gali būti saugios, tačiau viena iš sparčiausiai besivystančių kūrėjų pažeidžiamumo šaltinių yra pati kūrimo sistema. Jei įsilaužta į jūsų kūrimo sistemą, ji tampa portalu, kuriame į jūsų programinę įrangą įleidžiami kenkėjiški kodai. Norėdami to išvengti, būtinai naudokite VPN, kad užšifruotumėte visus vidinius ryšius. Be to, būtinai įdiekite šifruotą duomenų saugyklą.

Išvada

Nors atlikus tyrimus nustatyta, kad „Java“ yra mažiau saugi nei kai kurios kitos kalbos, kūrėjai turėtų tai padaryti su žiupsneliu druskos. Naujesnės ir rečiau vartojamos kalbos gali atrodyti saugesnės, tačiau taip yra dėl to, kad daugelis jų pažeidžiamumų dar nebuvo atrasti, o dar blogiau - jie buvo rasti, bet nepranešta.

Nors turėtumėte žinoti riziką ir imtis visų pagrįstų atsargumo priemonių, kad apsaugotumėte savo „Java“ programas, per daug nesijaudinkite dėl reitingų. Kaip „Java“ kūrėjas jūs bent jau žinote, su kuo susiduriate.

Ši istorija: „Kiek„ Java “yra saugi, palyginti su kitomis kalbomis?“ iš pradžių buvo išleista „JavaWorld“.