fcf-protection、Qcf-protection

脆弱性を悪用する特定の攻撃からプログラムを保護するインテル® インテル コントロールフロー・エンフォースメント・テクノロジー (インテル® CET) を有効にします。このオプションは、インテル® CET を試験的にサポートします。

構文

Linux*:

-fcf-protection[=keyword]

macOS*:

なし

Windows*:

/Qcf-protection[:keyword]

引数

keyword

保護レベルを指定します。設定可能な値は以下のとおりです。

shadow_stack

シャドウスタックの保護を有効にします。

branch_tracking

エンドブランチ (EB) の生成を有効にします。

full

シャドウスタックの保護と EB の生成を有効にします。

これは、keyword なしでこのコンパイラー・オプションを指定するのと同じです。

none

インテル® CET による保護を無効にします。

デフォルト

-fcf-protection=none または /Qcf-protection:none

インテル® インテル コントロールフロー・エンフォースメント・テクノロジー (インテル® CET) による保護は行われません。

説明

このオプションは、脆弱性を悪用する特定の攻撃からプログラムを保護するインテル® インテル コントロールフロー・エンフォースメント・テクノロジー (インテル® CET) を有効にします。

インテル® CET による保護は、インテル® CET をサポートするプロセッサーで実行されます。インテル® CET をサポートしないプロセッサーでは無視されるため、さまざまなプロセッサーで実行されるプログラムで安全に使用することができます。

shadow_stack を指定すると、ROP (Return-Oriented Programming) 攻撃からプログラムを保護するのに役立ちます。ROP (Return-Oriented Programming) は、コールスタックを制御することで非実行メモリーやコード署名のようなコンピューター・セキュリティー防護を悪用して、プログラムの制御フローを変更し、特定のマシン命令シーケンスを実行する手法です。

branch_tracking を指定すると、COP/JOP (Call/Jump-Oriented Programming) 攻撃からプログラムを保護するのに役立ちます。JOP (Jump-Oriented Programming) は ROP の一種で、間接ジャンプ/呼び出しを悪用してリターン命令をエミュレートします。COP (Call-Oriented Programming) も ROP の一種で、間接呼び出しを悪用します。

両方の保護を有効にするには、keyword を指定しないでこのコンパイラー・オプションを使用するか、-qcf-protection=full (Linux*) または /Qcf-protection:full (Windows*) を指定します。

IDE オプション

なし

代替オプション

Linux* および macOS*: -qcf-protection

Windows*: なし