__security_init_cookie

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

構文

void __security_init_cookie(void);

解説

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

通常は、CRT の初期化時に、CRT によって __security_init_cookie が呼び出されます。 CRT の初期化をバイパスする場合 (たとえば、/ENTRY を使用してエントリ ポイントを指定する場合) は、ユーザー自身で __security_init_cookie を呼び出す必要があります。 __security_init_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