インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

qcf-protection、Qcf-protection

脆弱性を悪用する特定の攻撃からプログラムを保護する Control-flow Enforcement Technology (CET) を有効にします。このオプションは、CET を試験的にサポートします。

構文

Linux*:

-qcf-protection[=keyword]

macOS*:

なし

Windows*:

/Qcf-protection[:keyword]

引数

keyword

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

shadow_stack

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

branch_tracking

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

full

シャドウスタックの保護とエンドブランチ (EB) の生成を有効にします。

これは、keyword なしで [q または Q]cf-protection を指定するのと同じです。

none

Control-flow Enforcement Technology (CET) による保護を無効にします。

デフォルト

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

Control-flow Enforcement Technology (CET) による保護は行われません。

説明

このオプションは、脆弱性を悪用する特定の攻撃からプログラムを保護する Control-flow Enforcement Technology (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 を指定しないで [q または Q]cf-protection を使用するか、-qcf-protection=full (Linux*) または /Qcf-protection:full (Windows*) を指定します。

IDE オプション

なし

代替オプション

なし

関連情報