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++, vznesl námitky proti zjištěním zprávy NSA, která doporučila, aby organizace přestaly používat programovací jazyky jako C a C++, které přesouvají správu paměti na vývojáře, a upřednostňují jazyky jako C#, Go, Java, Ruby, Rust a Swift, které správu paměti zajišťují automaticky nebo provádět kontroly bezpečnosti paměti v době kompilace.

Podle Stroustrupa, bezpečné jazyky uvedené ve zprávě NSA nejsou ve skutečnosti lepší než C++ v důležitých aplikacích z vašeho pohledu.

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 onZákladní pokyny pro C++, které byly vyvinuty v posledních letech, pokrývají metody pro bezpečné programování a předepisují používání nástrojů, které zajišťují bezpečnou práci s typy a prostředky. Vývojáři, kteří nevyžadují tak silné bezpečnostní záruky, však mohou nadále používat starší vývojové metody.

Stroustrup věří, že dobrý statický analyzátor který je v souladu s C++ Core Guidelines může poskytnout potřebné záruky zabezpečení pro kód C++ za mnohem nižší náklady než přechod na nové zabezpečené 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 soustředila pouze na problémy s pamětí., takže mnoho dalších problémů s programovacím jazykem, které ovlivňují bezpečnost a spolehlivost, zůstává nevyřešeno.

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 máte zájem dozvědět se více o publikaci tvůrce C++, můžete konzultovat podrobnosti v následující odkaz.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.