Tvůrce jazyka C++ kritizoval zprávu NSA o bezpečných programovacích jazycích

bjarne stroustrup

Bjarne Stroustrup reaguje na doporučení NSA a odporuje klasifikaci C++

Bjarne Stroustrup, tvůrce jazyka C++, zveřejnil námitky proti závěrům zprávy NSA, která doporučila, aby se organizace odklonily od používání programovacích jazyků, jako jsou C a C++, které přesouvají správu paměti na vývojáře, ve prospěch jazyků, jako jsou C#, Go, Java, Ruby, Rust a Swift, které poskytují automatickou správu paměti nebo provádějí kontroly bezpečnosti paměti v době kompilace.

Podle Stroustrupa nejsou zabezpečené jazyky zmíněné ve zprávě NSA z jeho pohledu ve skutečnosti v důležitých aplikacích nadřazené C++.

NSA doporučuje organizacím, aby zvážily strategickou změnu v programovacích jazycích, které používají. poskytují malou nebo žádnou vlastní ochranu paměti, jako je C/C++, jazyku bezpečnému pro paměť
když je to možné

Zejména základní pokyny pro C++ , které byly vyvinuty v posledních letech, se zabývají metodami bezpečného programování a předepisují používání nástrojů, které zajišťují bezpečnou práci s typy a zdroji. Vývojáři, kteří takové robustní bezpečnostní záruky nevyžadují, však mohou i nadále používat starší vývojové metody.

Stroustrup se domnívá, že dobrý statický parser , který splňuje základní pokyny C++, může poskytnout potřebné bezpečnostní záruky pro kód C++ za mnohem nižší cenu než přechod na nové, bezpečné programovací jazyky.

Například většina základních pokynů je již implementována ve statickém analyzátoru Microsoft Visual Studio a Memory-Safe Profile. 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 zaměřuje pouze na problémy s pamětí , a mnoho dalších problémů s programovacími jazyky, které ovlivňují bezpečnost a spolehlivost, ponechává bez povšimnutí.

Bohužel, velká část použití C++ také uvízla v dávné minulosti a ignoruje vylepšení, včetně způsobů, jak drasticky zlepšit zabezpečení. Pokud bych měl uvažovat o některém z těch „bezpečných“ jazyků lepších než C++ v rozsahu použití, které mě zajímají, nepovažoval bych zánik C/C++ za špatnou věc, ale není tomu tak. .

Bjarne Stroustrup nesouhlasí s tím, že publikace NSA omezuje pojem ochrany softwaru na ochranu paměti. Ve skutečnosti je tento aspekt společným jmenovatelem všech publikací, které doporučují upustit od jazyka C nebo C++ ve prospěch jazyka Rust kvůli zárukám zabezpečení softwaru, který několik velkých společností (Microsoft, Amazon atd.) uznává.

„Neexistuje jediná definice ‚zabezpečení‘ a můžeme dosáhnout různých typů zabezpečení kombinací programovacích stylů, podpůrných knihoven a využití statické analýzy,“ říká. Bjarne Stroustrup tak naznačuje, že to, co lze z C++ z hlediska softwarového zabezpečení získat, závisí mimo jiné na vývojáři a zejména na znalosti nástrojů, které daný jazyk nabízí, jeho zvládnutí kompilátoru atp.

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 kódu a možnosti kompilátoru.

V aplikacích, kde je výkon důležitější než bezpečnost, umožňuje tento přístup selektivní použití nástrojů, které zajišťují bezpečnost pouze tam, kde je potřeba. Částečně lze použít i nástroje pro zvýšení bezpečnosti, jako je nejprve omezení kontroly rozsahu a inicializační pravidla a poté postupné přizpůsobení kódu přísnějším požadavkům.

A konečně, pokud se chcete dozvědět více o publikaci od tvůrce C++, podrobnosti naleznete na následujícím odkazu.


Přidat jako preferovaný zdroj v Googlu