Tvůrce C++ kritizoval zavedení bezpečných programovacích jazyků

Bjarne Stroustrup, tvůrce jazyka C++, zveřejnil námitky k závěrům zprávy NSA, která doporučila, aby organizace ustoupily od programovacích jazyků jako C a C++, které ponechávají správu paměti na vývojáři, ve prospěch jazyků. ​​​​​​​​​​​​​​​​​​, které jsou například C#, Go, Java, Ruby, Rust a Swift, které poskytují automatickou správu paměti nebo provádějí bezpečnostní kontroly paměti během kompilace.

Podle Stroustrupa nejsou zabezpečené jazyky zmíněné ve zprávě NSA ve skutečnosti nadřazené C++ v aplikacích, které jsou z jeho pohledu důležité. Zejména základní doporučení pro používání C++ (C++ Core Guidelines), vyvinutá v posledních letech, pokrývají metody bezpečného programování a předepisují používání nástrojů, které zaručují bezpečnou práci s typy a zdroji. To ponechává možnost vývojářům, kteří nevyžadují tak přísné bezpečnostní záruky, pokračovat v používání starých vývojových metod.

Stroustrup věří, že dobrý statický analyzátor, který se řídí C++ Core Guidelines, může poskytnout nezbytné záruky bezpečnosti kódu C++ za výrazně nižší náklady než migrace na nové zabezpečené programovací jazyky. Například většina základních pokynů je již implementována ve statickém analyzátoru a bezpečnostním profilu paměti, který je součástí Microsoft Visual Studio. Některá doporučení jsou také zohledněna ve statickém analyzátoru Clang tidy.

Zpráva NSA byla také kritizována za to, že se soustředila pouze na problémy s pamětí a vynechala mnoho dalších problémů s programovacím jazykem, které ovlivňují bezpečnost a spolehlivost. Stroustrup nahlíží na bezpečnost jako na širší koncept, jehož různých aspektů lze dosáhnout kombinací stylu kódování, knihoven a statických analyzátorů. Pro kontrolu zahrnutí pravidel, která zajišťují bezpečnost práce s typy a zdroji, se navrhuje používat anotace v možnostech kódu a kompilátoru.

V aplikacích, kde je výkon důležitější než bezpečnost, umožňuje tento přístup selektivní aplikaci funkcí, které zaručují bezpečnost pouze tam, kde je to potřeba. Bezpečnostní nástroje lze také aplikovat po částech, například začít s kontrolou rozsahu a inicializačními pravidly a poté postupně přizpůsobovat kód přísnějším požadavkům.

Zdroj: opennet.ru

Přidat komentář