AMDプロセッサの投機的実行メカニズムの脆弱性

Grsecurity プロジェクトは、無条件転送操作後の命令の投機的実行に関連する AMD プロセッサーの新しい脆弱性 (CVE-2021-26341) の詳細と攻撃方法のデモを公開しました。 攻撃が成功すると、この脆弱性により任意のメモリ領域の内容が特定される可能性があります。 たとえば、研究者らは、ePBF カーネル サブシステムで特権のないコードを実行することで、アドレス レイアウトを決定し、KASLR (カーネル メモリのランダム化) 保護メカニズムをバイパスできるエクスプロイトを準備しました。 カーネル メモリの内容の漏洩につながる可能性のある他の攻撃シナリオも排除できません。

この脆弱性により、プロセッサがプリエンプティブ実行中に、メモリ内のジャンプ命令の直後の命令を投機的に処理する条件 (SLS、直線投機) が作成される可能性があります。 さらに、このような最適化は、条件付きジャンプ演算子だけでなく、JMP、RET、CALL などの直接の無条件ジャンプを暗黙的に含む命令にも機能します。 無条件ジャンプ命令の後には、実行を目的としない任意のデータを配置できます。 分岐に次の命令の実行が含まれないと判断した後、プロセッサは単に状態をロールバックし、投機的実行を無視しますが、命令実行のトレースは共有キャッシュに残り、サイドチャネル取得技術を使用した分析に利用できます。

Spectre-v1 脆弱性の悪用と同様、この攻撃では、投機的実行を引き起こす特定の命令シーケンス (ガジェット) がカーネル内に存在する必要があります。 この場合の脆弱性のブロックは、コード内のそのようなガジェットを特定し、投機的実行をブロックする追加の命令をそれらに追加することになります。 投機的実行の条件は、eBPF 仮想マシンで実行される特権のないプログラムによっても作成される可能性があります。 eBPF を使用してガジェットを構築する機能をブロックするには、システム内の eBPF への非特権アクセスを無効にすることをお勧めします (「sysctl -w kernel.unprivileged_bpf_disabled=1」)。

この脆弱性は、AMD EPYC および AMD Ryzen Threadripper プロセッサの第 1 世代および第 2 世代、AMD Ryzen 2000/3000/4000/5000、AMD Athlon、AMD Athlon X、AMD Ryzen Threadripper を含む、Zen3 および ZenXNUMX マイクロアーキテクチャに基づくプロセッサに影響します。 PRO および APU シリーズ プロセッサ A. 命令の投機的実行をブロックするには、分岐操作 (RET、JMP、CALL) の後に INTXNUMX または LFENCE 命令を呼び出すことをお勧めします。

出所: オープンネット.ru

コメントを追加します