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

mconditional-branch、Qconditional-branch

条件付き分岐のスペキュレーション・ミスによりセキュリティーで保護されたデータが漏洩する可能性のある、投機的実行のサイドチャネル攻撃に対して脆弱なコードを特定および修正できます。

構文

Linux* および macOS*:

-mconditional-branch=keyword

Windows*:

/Qconditional-branch:keyword

引数

keyword

コンパイラーのとるべき動作を示します。設定可能な値は以下のとおりです。

keep

脆弱なコードの検出と修正を行わないようにコンパイラーに指示します。-mconditional-branch オプションを指定しない場合と同じです。

pattern-report

コンパイル中に脆弱なコードの検索を実行して、すべての結果を stderr に出力するようにコンパイラーに指示します。

pattern-fix

コンパイル中に脆弱なコードの検索を実行して、検出されたデータアクセスが投機的に実行されないコードを生成するようにコンパイラーに指示します。修正されたパターンはすべて stderr に出力されます。

この設定は、完全な排除を保証するものではありません。コンパイラーによって脆弱性のすべての要素が確認または決定できるケースのみ修正します。O3 オプションや -ipo (または /Qipo) オプションなどの高度な最適化オプションが指定されたまたは有効な場合、パターン検出はより完全なものになります。

all-fix

脆弱なコードが投機的に実行されたり、投機的実行のサイドチャネル問題が生成されないように、脆弱なコードをすべて修正するようにコンパイラーに指示します。この設定は、Spectre Variant 1 攻撃に対する完全な緩和策であるため、ランタイム・パフォーマンス・コストが最も高くなります。

pattern-fix 設定とは対照的に、コンパイラーは不正な投機的実行を引き起こした可能性のある条件付き分岐を特定しません。

デフォルト

-mconditional-branch=keep/Qconditional-branch:keep

コンパイラーは、脆弱なコードの検出と修正を試みません。

説明

このオプションは、条件付き分岐のスペキュレーション・ミスによりセキュリティーで保護されたデータが漏洩する可能性のある、投機的実行のサイドチャネル攻撃に対して脆弱なコードを特定できるようにします。選択する設定に応じて、脆弱性が検出され、セキュリティー・リスクを軽減するコードが生成されます。

IDE オプション

Visual Studio*: [Code Generation [Intel C++] (コード生成 (インテル® C++))] > [Spectre Variant 1 Mitigation (Spectre Variant 1 に対する緩和策)]

Eclipse*: なし

Xcode*: なし

代替オプション

なし