Doporučené postupy zabezpečení pro jazyk C++

Tento článek obsahuje informace o nástrojích a postupech zabezpečení. Pomocí těchto aplikací nedojde ke odolnosti proti útokům, ale díky tomu jsou úspěšné útoky méně pravděpodobný.

Funkce zabezpečení Visual C++

Tyto funkce zabezpečení jsou integrovány do kompilátoru a linkeru jazyka Microsoft C++:

(povolit řízení Flow Guard)
Způsobí, že kompilátor analyzuje tok řízení pro cíle nepřímých volání v době kompilace a pak vloží kód pro ověření cílů za běhu.

(Kontrolu zabezpečení vyrovnávací paměti)
Instruuje kompilátor, aby vložil kód pro detekci přetečení do funkcí, které hrozí zneužít. Při zjištění překročení se spuštění zastaví. Ve výchozím nastavení je tato možnost zapnutá.

(obrázek obsahuje Sejf obslužné rutiny výjimek)
Instruuje linker, aby se zahrnul do výstupního obrázku tabulka, která obsahuje adresu každé obslužné rutiny výjimky. V době běhu operační systém používá tuto tabulku k tomu, aby se zajistilo, že budou provedeny pouze legitimní obslužné rutiny výjimek. To pomáhá zabránit spuštění obslužných rutin výjimek, které jsou zavedeny škodlivým útokem v době běhu. Tento parametr je standardně vypnutý.

/NXCOMPAT, /NXCOMPAT tyto možnosti kompilátoru a linkeru umožňují kompatibilitu s funkcí Zabránění spuštění dat (DEP). DEP chrání procesor před spouštěním nekódových stránek.

(Code Analysis)
Tato možnost kompilátoru aktivuje analýzu kódu, která hlásí potenciální problémy se zabezpečením, jako je přetečení vyrovnávací paměti, neinicializovaná paměť, přesměrování ukazatele null a nevracení paměti. Tento parametr je standardně vypnutý. další informace naleznete v tématu Code Analysis pro C/C++ – přehled.

(Použít náhodné přeskupování rozložení adresního prostoru)
Tato možnost linkeru umožňuje sestavovat spustitelnou bitovou kopii, která může být načtena do různých umístění v paměti na začátku provádění. Tato možnost také způsobí, že umístění zásobníku v paměti bude mnohem méně předvídatelné.

Security-Enhanced CRT

Běhová knihovna jazyka C (CRT) byla rozšířena tak, aby zahrnovala zabezpečené verze funkcí, které představují bezpečnostní rizika, například funkci nekontrolovaného strcpy řetězce kopírování. Vzhledem k tomu, že starší, nezabezpečené verze těchto funkcí jsou zastaralé, způsobují upozornění při kompilaci. Doporučujeme, abyste používali zabezpečené verze těchto funkcí CRT namísto potlačení upozornění kompilace. Další informace najdete v tématu funkce zabezpečení v CRT.

SafeInt – knihovna

Knihovna SafeInt pomáhá zabránit přetečení celých čísel a jiným zneužitým chybám, které mohou nastat, pokud aplikace provádí matematické operace. SafeIntKnihovna obsahuje SafeInt, třídu SafeIntException –a několik funkcí SafeInt.

SafeIntTřída chrání proti přetečení celého čísla a dělení nulou. Můžete ji použít ke zpracování porovnání hodnot různých typů. Poskytuje dvě zásady zpracování chyb. Výchozí zásada je určena pro SafeInt třídu, která vyvolá SafeIntException výjimku třídy, aby hlásila, proč nelze dokončit matematickou operaci. Druhá zásada je určena pro SafeInt třídu, která zastaví provádění programu. Můžete také definovat vlastní zásady.

Každá SafeInt funkce chrání jednu matematickou operaci před zneužitím chyby. Můžete použít dva různé druhy parametrů bez jejich převádění na stejný typ. Chcete-li chránit více matematických operací, použijte SafeInt třídu.

Checked – iterátory

Kontrolovaný iterátor vynutil hranice kontejneru. Ve výchozím nastavení, když je zaškrtnutý iterátor mimo hranice, vygeneruje výjimku a ukončí provádění programu. Kontrolovaný iterátor poskytuje další úrovně odezvy, které závisí na hodnotách, které jsou přiřazeny preprocesoru, například _SECURE_SCL_THROWS a _ITERATOR_DEBUG_LEVEL . Například u _ITERATOR_DEBUG_LEVEL=2 kontrolovaného iterátoru poskytuje komplexní kontroly správnosti v režimu ladění, které jsou zpřístupněny pomocí výrazů. Další informace najdete v tématu kontrolované iterátory a .

Analýza kódu pro spravovaný kód

Code Analysis pro spravovaný kód, označovaný také jako FxCop, kontroluje sestavení pro dodržování předpisů pro návrh the.NET Framework. FxCop analyzuje kód a metadata v každém sestavení a kontroluje nedostatky v následujících oblastech:

  • Návrh knihovny

  • Lokalizace

  • Zásady vytváření názvů

  • Výkon

  • Zabezpečení

Windows nástroj Ověřovatel aplikací

Nástroj Ověřovatel aplikací (AppVerifier) vám může pomáhat identifikovat potenciální problémy s kompatibilitou aplikací, stabilitou a zabezpečením.

AppVerifier sleduje, jak aplikace používá operační systém. Sleduje systém souborů, registr, paměť a rozhraní API, když je aplikace spuštěná, a doporučuje opravy zdrojového kódu pro problémy, které se zjistí.

AppVerifier můžete použít k těmto akcím:

  • Otestujte potenciální chyby kompatibility aplikací, které jsou způsobeny běžnými chybami programování.

  • Prověřte aplikaci pro problémy související s pamětí.

  • Identifikujte potenciální problémy se zabezpečením aplikace.

Windows uživatelské účty

použití Windows uživatelských účtů, které patří do skupiny Administrators, zveřejňuje vývojáře a – podle rozšíření – zákazníci na rizika zabezpečení. Další informace najdete v tématu spuštění jako člen skupiny Users a vliv řízení uživatelských účtů (UAC) na vaši aplikaci.

Pokyny pro spekulativní kanály na straně spuštění

Informace o tom, jak usnadní a zmírnit proti spekulativním softwarovým ohrožením zabezpečení kanálu na straně služby v C++, najdete v tématu pokyny pro vývojáře c++ pro spekulativní kanály na straně spuštění.

Viz také

System. Security
Zabezpečení
Jak ovlivňuje řízení uživatelských účtů (UAC) vaše aplikace