Programovanie

Aká bezpečná je Java v porovnaní s inými jazykmi?

Rovnako ako v prípade ostatných aspektov kybernetickej bezpečnosti, úroveň bezpečnosti programovacieho jazyka závisí od toho, čo máme na mysli pod pojmom „zabezpečený“. Je pravda, že Java má menej identifikovaných zraniteľností ako niektoré iné bežne používané jazyky. Je tiež pravda, že niektoré novšie jazyky sa javia aspoň na prvý pohľad bezpečnejšie ako Java.

Mnoho bezpečnostných dier, ktoré sa našli v Jave, je výsledkom jej popularity. Široké použitie znamená, že tisíce hľadačov chýb sa venujú hľadaniu slabých miest v jazyku Java, čo dáva Jave nespravodlivú „výhodu“ v tejto oblasti. Rovnako implikovaná bezpečnosť niektorých novších jazykov, napríklad Ruby, by mohla viac odrážať ich využitie ich ník ako ich integritu.

[Tiež na JavaWorld: Existujú náznaky, že sa vývojári Java zlepšujú v zabezpečení.]

V tomto článku sa pozrieme na to, aké sú najčastejšie používané programovacie jazyky z hľadiska bezpečnosti. Vysvetlím niektoré faktory, ktoré spôsobujú, že jeden jazyk je menej bezpečný ako druhý, a prečo sa za posledných pár rokov toľko identifikovaných zraniteľností zvýšilo. Na záver navrhnem niekoľko spôsobov, ako môžu vývojári Java znížiť chyby zabezpečenia v kóde.

Zrátané a podčiarknuté: Z bezpečnostného hľadiska sú zraniteľnosti, o ktorých vieme, lepšie ako tie, ktoré nie.

Aká bezpečná je Java?

Posledný výskum zraniteľností najbežnejšie používaných programovacích jazykov vyšiel z platformy WhiteSource, bezpečnostnej platformy a platformy na zabezpečenie súladu s licenciami. WhiteSource sa zameral na sedem najpopulárnejších open-source programovacích jazykov: C, Java, JavaScript, Python, Ruby, PHP a C ++. Analytici potom použili rôzne zdroje na zoradenie jazykov podľa počtu identifikovaných slabých miest.

Prečo open source?

Rozhodnutie o hodnotení jazykov otvoreného zdroja nie je náhodné. Mnoho chránených jazykov - vrátane chránených implementácií jazykov otvorených zdrojov - je oveľa menej transparentných, pokiaľ ide o chyby zabezpečenia. Pre súkromnú spoločnosť nemá obchodný zmysel zverejňovať bezpečnostné chyby vo svojom produkte, a tak zostávame do značnej miery v temnote úrovne zraniteľnosti týchto jazykov. Chyby, o ktorých vieme, sú oveľa lepšie zvládnuteľné ako tie, ktoré nepoznáme.

Na základe štúdie WhiteSource bol najzraniteľnejším programovacím jazykom zďaleka jazyk C, s 47% všetkých hlásených zraniteľností. Toto poradie neprekvapí skúsených programátorov, ale možno budú mať aj ďalšie výsledky. Vo vzdialenej sekunde skončilo PHP so 17%, za ním nasledovala Java s 12% a prvé štyri zaokrúhli JavaScript s 11%. Nasledovaním týchto „vodcov“ boli Python, C ++ a Ruby.

Pochopenie bezpečnosti programovacieho jazyka

Ďalej by sme sa mali spýtať, prečo sú niektoré programovacie jazyky zraniteľnejšie ako iné. Na základe výskumu, ktorý som citoval, môžete dospieť k záveru, že C predstavuje obrovskú bezpečnostnú hrozbu. Ale zvážte, že C sa používa oveľa dlhšie ako akýkoľvek iný jazyk na zozname. Ako píše Stephen Turner v časopise Journal of Technology Research, „programovacie jazyky sú ako genetika, pretože existuje niekoľko predkov so spoločnými vlastnosťami, ktoré sa množili“.

Ako najstarší jazyk v zozname bol jazyk C vyvinutý v úplne odlišnom prostredí hrozieb ako relatívne nové jazyky ako Java a Ruby. Ako zdôrazňuje WhiteSource, relatívny vek jazyka C znamená, že má zodpovedajúcim spôsobom vyšší objem napísaného kódu. C je tiež jedným z jazykov používaných pre hlavné infraštruktúry ako OpenSSL a Linuxové jadro. Táto kombinácia objemu a centrálnosti môže viesť k vyššiemu počtu známych slabých miest otvoreného zdroja.

Aj keď si Java v tejto analýze vedie dobre, autori zdôrazňujú dva typy zraniteľnosti, ktoré majú na Java obzvlášť vplyv. Po prvé, berú na vedomie, že US-CERT nás už dlho varoval pred zraniteľnosťou Javy voči útokom injekčným protokolom, hlavne prostredníctvom webových prehliadačov. Takéto útoky je možné odvrátiť overením alebo autentifikáciou odoslaných vstupov, ale vývojári sú často zdržanliví pri dôkladnom overovaní vstupov zo strachu, že by to mohlo spôsobiť, že ich aplikácie budú menej užívateľsky prívetivé.

Po druhé, Java je obzvlášť zraniteľná voči zneužitiam dôveryhodnosti, ktoré nasledujú po zraniteľnostiach riadenia prístupu. Aj keď sa certifikačné procesy od roku 2013 zlepšili, mnoho vývojárov sa spolieha na certifikáty od orgánov, ktoré sú menej ako spoľahlivé. Je možné získať certifikát, ktorý je menej prísny, ako by mal byť. US-CERT, citovaný v časopise Journal of Technology Research, varuje pred týmito otvorenými dverami pre vzdialených útočníkov vykonávajúcich svojvoľný kód.

Relatívne nízka zraniteľnosť Java ponúka zaujímavý kontrast s C. Java bola vyvinutá dlho po C, v prostredí, kde bolo vedomie hrozieb oveľa vyššie, takže nie je prekvapením, že Java je oveľa bezpečnejšia. Aj keď sa zdá, že Ruby je bezpečnejšia ako Java, dalo by sa to vysvetliť relatívnou mladosťou jazyka a jeho špecifickou aplikáciou.

Zraniteľnosti zabezpečenia sú na vzostupe - akosi

WhiteSource hlási „výrazný nárast počtu známych zraniteľností zabezpečenia otvoreného zdroja vo všetkých jazykoch za posledné dva roky“. Aj keď sa celkový počet zraniteľností v Jave od roku 2015 ustavične znižuje, novší nárast počtu zraniteľností si vyžaduje vysvetlenie. Toto zvýšenie môžeme pripísať dvom faktorom.

Po prvé, existujú prémie za chyby, relatívne nový trend, v ktorom si tisíce technologických profesionálov vyberajú prostredníctvom jazyka a nachádzajú zraniteľné miesta. Tieto zodpovedajú za prinajmenšom časť nárastu zraniteľností zabezpečenia otvoreného zdroja. Ďalej sa všeobecne predpokladá, že lovci hrozieb prehľadávajú všetky jazyky rovnako, ale to nie je pravda. Ako jeden z najbežnejšie používaných jazykov pri vývoji webových aplikácií je Java významným cieľom pre lovcov hrozieb. V tejto súvislosti sa zdá, že tretie miesto v rebríčku Java pre známe chyby zabezpečenia je dosť nízke.

Softvérové ​​systémy sú tiež rádovo komplikovanejšie ako pred 10 rokmi, čo je ďalší hlavný faktor zvyšujúceho sa počtu zraniteľností v prostredí Java a ďalších jazykoch. Vo svete, kde môžu byť aplikácie pre smartfóny zdrojom infekcie, a kde každá spoločnosť musí mať web s povoleným JavaScriptom, nie je prekvapením, že počet zraniteľností webových stránok exponenciálne vzrástol. Keď sa k tomu pridá dlhodobý nedostatok odborníkov v oblasti kybernetickej bezpečnosti, začne to vyzerať hrozne pre budúcnosť kybernetickej bezpečnosti.

Ako sa vyhnúť zraniteľnostiam zabezpečenia Java

Čítanie výskumu o slabých miestach zabezpečenia vám môže biť rýchlejšie, ale nebojte sa: vývojári Java sú v silnej pozícii, pokiaľ ide o bezpečnosť aplikácií. Vďaka tisícom profesionálov, ktorí prehľadávajú jazyk, či nie sú ohrození, existuje veľká šanca, že vieme o dobrom pomere k zraniteľnostiam v danom jazyku. To poznanie je sila.

Nedávny článok o JavaWorld ponúkol 13 pravidiel pre vývoj bezpečných aplikácií Java. Môžete tiež nájsť veľa článkov a správ o bezpečnej implementácii Java v konkrétnych prostrediach, ako napríklad cloudové zabezpečenie pre Javu a zabezpečenie webových aplikácií pre Javu. Zvážme niekoľko spôsobov, ako znížiť zraniteľnosť, ktorú ste možno prehliadli.

Prejdite na pracovný tok DevSecOps

Jedným zo spôsobov, ako znížiť zraniteľnosť v kóde Java, je prejsť na pracovný tok DevSecOps. Tento typ pracovného toku robí zo zabezpečenia najdôležitejšiu záležitosť vo všetkých fázach vývojového procesu. Ako vývojári často zabúdame, že náš softvér používajú (a niekedy sú prispôsobené) všetky časti organizácie, pre ktoré pracujeme. Nie je dobré posilňovať vaše webové aplikácie proti vniknutiu, ak je váš marketingový tím odhodlaný podkopať vaše úsilie. Zahrňte do vývojového procesu všetky svoje tímy a zabezpečte, aby bola bezpečnosť zohľadnená pri všetkých aspektoch projektu.

Vyhodnoťte zabezpečenie pracovného toku

Mali by ste sa tiež dobre pozrieť na bezpečnosť vlastného pracovného toku. Vaše webové aplikácie môžu byť samy o sebe bezpečné, ale jedným z najrýchlejšie rastúcich zdrojov zraniteľnosti vývojárov je samotný vývojový systém. Ak dôjde k napadnutiu vášho vývojového systému, stane sa z neho portál pre vstrekovanie škodlivého kódu do vášho softvéru. Ak sa tomu chcete vyhnúť, nezabudnite na šifrovanie všetkej svojej internej komunikácie použiť sieť VPN. Nezabudnite tiež implementovať šifrované úložisko dát.

Záver

Aj keď výskumy zistili, že Java je menej bezpečná ako niektoré iné jazyky, vývojári by mali toto zistenie brať so štipkou soli. Novšie a menej často používané jazyky sa môžu javiť bezpečnejšie, ale je to pravdepodobné, pretože mnohé z ich zraniteľností ešte neboli objavené - alebo v horšom prípade boli nájdené, ale neboli hlásené.

Aj keď by ste mali poznať riziká a prijať všetky primerané preventívne opatrenia na zabezpečenie svojich aplikácií Java, s rebríčkom si nerobte veľké starosti. Ako vývojár Java aspoň viete, proti čomu stojíte.

Tento príbeh: „Ako bezpečná je Java v porovnaní s inými jazykmi?“ pôvodne vyšla vo vydavateľstve JavaWorld.

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