次の方法で共有


C++ のセキュリティ推奨事項

ここでは、セキュリティ ツールと手法について説明します。これらを使用しても、アプリケーションを攻撃からがない場合、攻撃が成功する可能性を低減できます。

Visual C++ セキュリティ機能

これらのセキュリティ機能は、Visual C++ コンパイラおよびリンカーにビルド:

  • /GS (バッファーのセキュリティ チェック)
    コンパイラに利用される危険性がある関数にオーバーラン検出コードを挿入します。オーバーランが検出されると、実行が停止します。既定では、このオプションはオンです。

  • /SAFESEH (安全な例外ハンドラーがあるイメージ)
    リンカーに出力イメージに各例外ハンドラーのアドレスを含むテーブルを含めるように指示します。実行時に、オペレーティング システムは適切な例外ハンドラーのみが実行されるようにこのテーブルを使用します。これにより、実行時の悪意のある攻撃で導入された例外ハンドラーの実行を防止できます。既定では、このオプションはオフになっています。

  • /NXCOMPAT, /NXCOMPAT (データ実行防止との互換性)
    これらのコンパイラ オプションとリンカー オプションはデータ実行防止 (DEP) の互換性を有効にします。DEP は、コード ページの実行に対して CPU をされます。

  • /analyze (コード分析)
    このコンパイラ オプションを使用すると、潜在的なセキュリティ上の問題 (バッファー オーバーラン、非初期化メモリ、null ポインターの逆参照、メモリ リークなど) を報告するコード解析がアクティブになります。既定では、このオプションはオフになっています。詳細については、「C/C++ のコード分析の概要」を参照してください。

  • /DYNAMICBASE (ASLR (Address Space Layout Randomization) の使用)
    このリンカー オプションは、実行開始時にメモリの異なる位置で読み込むことができる実行可能イメージを構築できます。また、このオプションを使用すると、メモリ内のスタックの位置を予測することが非常に難しくなります。

セキュリティが拡張された CRT

C のランタイム ライブラリ (CRT) は例のセキュリティ リスクをもたらす関数、チェックを行わない strcpy の文字列コピー関数の安全なバージョンが導入されました。これらの関数の古い、セキュリティが万全ではないバージョンが使用されなくなっているため、によりコンパイル時に警告が表示されます。ここでは、コンパイル警告を抑制するのではなく、これらの CRT 関数の安全なバージョンを使用する結果になります。詳細については、「CRT のセキュリティ機能」を参照してください。

SafeInt ライブラリ

SafeInt ライブラリ で、アプリケーションで数値演算を実行するときに発生する可能性のある他の開発できるエラーや整数オーバーフローを防止できます。SafeInt ライブラリには、SafeInt クラスSafeIntException クラス、および複数の SafeInt 関数が含まれます。

SafeInt クラスを使用することで、整数オーバーフローおよびゼロ除算による攻撃を防止できます。異なる型の値の比較を処理するために使用できます。I 一つは 2 種類のエラー処理ポリシーを提供します。SafeInt クラスの既定のポリシーは、SafeIntException クラス例外をスローして、数値演算を完了できない理由を報告することです。SafeInt クラスの 2 番目のポリシーは、プログラムの実行を停止することです。カスタム ポリシーも定義できます。

SafeInt 関数は、対応する 1 つの数値演算で、攻撃に利用される可能性のあるエラーが発生しないようにします。同じ型に変換せずに、2 種類のパラメーターを使用できます。複数の数値演算を保護するには、SafeInt のクラスを使用します。

チェックを行う反復子

チェックを行う反復子はコンテナーの境界を実装します。既定では、チェックを行う反復子が境界の外側にあると、例外が生成され、プログラムの実行が終了します。チェックを行う反復子は _SECURE_SCL_THROWS_ITERATOR_DEBUG_LEVELのようなプリプロセッサ定義に再配置する値に依存する他の応答のレベルを提供します。たとえば、_ITERATOR_DEBUG_LEVEL=2で、チェックを行う反復子は包括的な性チェックインのデバッグ モードが用意されていますに使用できるように保持するされます。詳細については、「チェックを行う反復子」を参照してください。

マネージ コードのコード分析

マネージ コード (FxCop のコード分析は .NET Framework デザイン ガイドラインに準拠するために、アセンブリをチェックします。FxCop は、次の領域の問題をチェックするように各アセンブリのコードとメタデータを解析します:

  • ライブラリ デザイン

  • ローカリゼーション

  • 名前付け規則

  • パフォーマンス

  • セキュリティ

Windows アプリケーション検証ツール

アプリケーション検証ツール (AppVerifier) は、アプリケーションの互換性、安定性、およびセキュリティ上の問題を特定するのに役立ちます。

AppVerifier は、アプリケーションがどのようにオペレーティング システムを使用するのかを監視します。これは、アプリケーションの実行中にし、AppVerifier がカバーしない問題のソース・コードの修正を推奨してファイル システム、レジストリ、メモリ、および API が。

AppVerifier を使用する:

  • 共通のプログラミング ミスによる潜在的なアプリケーションの互換性エラーをテストします。

  • アプリケーションにメモリ関連の問題がないかどうかを調べます。

  • アプリケーションの潜在的なセキュリティ上の問題を特定します。

AppVerifier は TechNet Web サイトから アプリケーションの互換性 使用できるある Application Compatibility Toolkit の一部です。

.NET Framework のセキュリティ機能

Configuring Security Policy は、.NET Framework のセキュリティ ポリシーを調整するためのガイドラインおよびツールについて説明します。

Windows ユーザー アカウント

Administrators グループに属する Windows ユーザー アカウントを使用すると、開発者とユーザー (機能拡張により) がセキュリティ上の危険にさらされます。詳細については、「ユーザー グループのメンバーとしての実行」および「ユーザー アカウント制御 (UAC: User Account Control) がアプリケーションに与える影響」を参照してください。

参照

関連項目

System.Security

概念

ユーザー アカウント制御 (UAC: User Account Control) がアプリケーションに与える影響

その他の技術情報

.NET Framework におけるセキュリティ