__security_init_cookie

グローバル セキュリティ クッキーを初期化します。

構文

void __security_init_cookie(void);

解説

グローバル セキュリティ クッキーは、/GS (バッファーのセキュリティ チェック) を指定してコンパイルされたコードおよび例外処理を使用するコードでバッファー オーバーランから保護するために使用されます。 オーバーランから保護されている関数を開始するときにクッキーはスタックに配置され、関数が終了するときにスタックの値がグローバルなクッキーと比較されます。 違いがある場合はバッファー オーバーランが発生したことを意味し、プログラムは直ちに終了します。

通常は、CRT の初期化時に、CRT によって __security_init_cookie が呼び出されます。 CRT の初期化をバイパスする場合 (たとえば、エントリ ポイントの指定に使用 /ENTRY する場合)、自分で呼び出す __security_init_cookie 必要があります。 呼び出されない場合 __security_init_cookie 、グローバル セキュリティ Cookie は既定値に設定され、バッファー オーバーラン保護が侵害されます。 攻撃者がこの既定のクッキー値を悪用してバッファー オーバーランのチェックをすり抜けることがあるため、独自のエントリ ポイントを定義するときには、常に __security_init_cookie を呼び出すことをお勧めします。

__security_init_cookie の呼び出しは、オーバーランから保護されている関数に入る前に行う必要があります。そうしないと、実際には発生していないバッファー オーバーランが検出されます。 詳細については、「C Runtime Error R6035」(C ランタイム エラー R6035) をご覧ください。

C Runtime Error R6035」(C ランタイム エラー R6035) の例をご覧ください。

必要条件

ルーチンによって返される値 必須ヘッダー
__security_init_cookie <process.h>

__security_init_cookie は、標準の C ランタイム ライブラリの Microsoft 拡張機能です。 互換性の詳細については、「互換性」を参照してください。

関連項目

Microsoft Security Response Center