spectre

Microsoft 固有の仕様

関数の Spectre バリアント 1 予測実行バリア命令を挿入しないようコンパイラに指示します。

構文

__declspec( spectre(nomitigation) )

解説

/Qspectre コンパイラ オプションを指定すると、コンパイラは予測実行バリア命令を挿入します。 これらは挿入されます。分析では、Spectre バリアント 1 セキュリティ脆弱性が存在することを示します。 出力される具体的な手順は、プロセッサによって異なります。 これらの手順は、コードのサイズやパフォーマンスに最小限の影響を与える必要がありますが、コードが脆弱性の影響を受けない場合や、最大限のパフォーマンスが必要な場合もあります。

専門家による分析では、Spectre バリアント 1 の境界確認のバイパスの欠陥から、関数が安全であると判断する場合があります。 その場合は、関数宣言に __declspec(spectre(nomitigation)) を適用することによって、関数内で軽減コードを生成しないようにすることができます。

注意事項

/Qspectre 予測実行バリアの指示は、重要なセキュリティ保護を提供し、パフォーマンスにわずかに影響を与えます。 したがって、関数のパフォーマンスが重視され、関数が安全であることが判明しているまれなケースを除き、チェックを抑制しないことをお勧めします。

__declspec(spectre(nomitigation))の使用例を次のコードに示します。

// compile with: /c /Qspectre
static __declspec(spectre(nomitigation))
int noSpectreIssues() {
    // No Spectre variant 1 vulnerability here
    // ...
    return 0;
}

int main() {
    noSpectreIssues();
    return 0;
}

Microsoft 固有の仕様はここまで

関連項目

__declspec
キーワード
/Qspectre