Expert ocenil radu NSA zakázať C a C++: ako to ovplyvní Rusko

Americká Národná bezpečnostná agentúra (NSA) požiadala vývojárov z celého sveta , aby sa vyhli

staršie programovacie jazyky ako C a C . Predpokladá sa, že sú náchylnejšie na útoky hackerov pri prechode na nové, pamäťovo bezpečné jazyky. 

Aký je problém s C ?

Na vykonanie pokynov v kóde potrebujete systémové prostriedky, napríklad pamäť. V dôsledku toho , zodpovednosť za správu pamäte spočíva na vývojárovi.Jednoduché chyby programátorov vedú k "poruche" systému a vzniku bezpečnostných problémov .

Táto sloboda vedie k určitým rizikám.Vyskytujú sa v dôsledku jednoduchých preklepov a zabudnutých riadkov kódu alebo v dôsledku zložitých štruktúrpamäť a neočakávané interakcie.

vyhlásenie Atlantickej rady pre Organizáciu Severoatlantickej zmluvy

V niektorých prípadoch môže útočník použiť tieto chyby na získanie prístupu do systému alebo na spustenie škodlivého kódu.

Široko používané jazyky, naprRovnako ako C a C++ poskytujú nielen väčšiu slobodu a flexibilitu pri správe pamäte, ale v tejto veci sa tiež „spoliehajú“ na programátora. NSA verí, že to dáva hackerom príležitosť využiť zraniteľné miesta pre svoje vlastné účely.

Názor IT gigantov

Podľa technologických firiem podielStaré jazyky ako C a C++ predstavujú až 65 % všetkých chýb. Microsoft, Google a ďalší IT giganti si teda všímajú zraniteľné miesta vo svojich kódoch kvôli problémom so zabezpečením pamäte.

Aké jazyky sú bezpečné?

Nové programovacie jazyky ako Python,Java* a Rust prideľujú pamäť automaticky. Mnohé z nich buď prakticky eliminujú bezpečnostné chyby, alebo ich znemožňujú. Predstavitelia NSA pridali C#, Go a Swift na „zoznam bezpečných“.

Odpoveď od „otca zakladateľa“ C a C++

Tvorca programovacieho jazyka C++ BjörnStroustrup reagoval na výzvu NSA opustiť používanie starších programovacích jazykov, v ktorých zodpovednosť za správu pamäte nesie vývojár.

Vo svojom otvorenom liste zverejnenomStroustrup na stránke open-std.org vyjadril nesúhlas s pozíciou agentúry. Uviedol, že jeho zástupcovia „zlúčili“ C a C++, napriek tomu, že jazyky sa za posledných 30 rokov vyvíjali nezávisle. Zároveň obvinil vývojárov, že „často ignorujú zmeny v jazyku, ktoré môžu radikálne zlepšiť bezpečnosť kódu“.

V skutočnosti podľa jeho názoru nie je C++ v žiadnom prípade horší ako moderné takzvané bezpečné jazyky ako C#, Go, Java, Ruby, Rust a Swift.

Odborný názor

Aby sme zistili, ako vážne brať varovanie NSA, Hi-Tech sa porozprával s Andrei Naichenkom, popredným architektom predpredaja produkčnej platformy softvéru Sphere.

Verí, že nebezpečenstvo tohto zákazupre trh a kóderov netreba preceňovať. „Časy, keď sa aplikačné systémy vyvíjali v C++, sú minulosťou a prechod na odporúčané jazyky (C#, Go, Java, Ruby a Swift) už väčšina vývojárov dokončila,“ vysvetľuje odborník.

Dnešné využitie C++obmedzené na špecializované riešenia v oblasti operačných systémov, vývoja hier a herných enginov (Unreal Engine, Unity), výpočtovej techniky GPU (kryptomeny, hlboké učenie), vývoja vysoko zaťažených a vysokovýkonných algoritmov. Vzhľadom na objem vyvinutého kódu a počet špecialistov je nepravdepodobné, že by sa prechod na iné jazyky v týchto oblastiach v blízkej budúcnosti uskutočnil. Pre zvyšok (hlavnú) časť trhu toto odporúčanie NSA nič neohrozuje.

Čo sa týka právoplatnosti tohto rozhodnutiaAndrey Naichenko podporil tvorcu jazyka C++ Bjarna Stroustrupa. „Jazyk C++ v moderných vydaniach štandardu poskytuje širokú a vyspelú sadu nástrojov, ktoré vám umožňujú úspešne riešiť problémy bezpečnej práce s pamäťou,“ vysvetlil odborník.

Ako rozhodnutie NSA ovplyvní Rusko?

Problémy identifikované v správe NSA sú pravdepodobnejšieCelkovo sa našli v riešeniach implementovaných na skorých jazykových štandardoch. V konečnom dôsledku nebude mať rozhodnutie NSA žiadny významný vplyv na vývojárov softvéru, ktorí sa zameriavajú na ruský trh.

Čítaj viac:

Vedci vymenovali 6 najlepších spôsobov, ako „zachrániť“ pamäť starších ľudí

Tajomný odtlačok podzemia vedcov prekvapil. Má viac ako 1000 rokov

Meč považovaný za falošný sa ukáže ako 3000-ročný artefakt z doby bronzovej

*Napriek tomu, že Java je klasifikovaná ako nový jazyk, je to dosť starý programovací jazyk (poznámka - “High-tech”)