最近のニュースはそれを壊したeETHチューリッヒの研究者グループが新たな攻撃を特定しました CPUの間接ジャンプの投機的実行メカニズムに移行します。これにより、カーネルメモリから情報を抽出したり、仮想マシンからホストシステムへの攻撃を整理したりできます。
脆弱性はコードネームRetbleedでした (CVE-2022-29900、CVE-2022-29901ですでにカタログ化されています)および Spectre-v2攻撃と性質が似ています.
違いは、「jmp」命令を使用して間接的にジャンプしたり、メモリからアドレスをロードしたり、またはCPUレジスタ。
新しい攻撃については、 攻撃者はフォーク予測の条件を作成できます プログラムの実行ロジックによって意図されていないコードのブロックへの意図的な投機的ジャンプを誤って整理します。
結局、 プロセッサは、分岐予測が正当化されなかったと判断し、操作をロールバックします 元の状態に、 しかし、処理されたデータ 投機的実行中 彼らはキャッシュに座ります およびマイクロアーキテクチャバッファ。 誤って実行されたブロックがメモリアクセスを実行した場合、その投機的実行により、一般キャッシュにインストールされ、メモリからデータが読み取られます。
投機的操作の実行後にキャッシュに残っているデータを特定するために、攻撃者はメソッドを使用して、サードパーティのチャネルを介して残りのデータを特定できます。たとえば、キャッシュされていないデータのアクセス時間の変化を分析します。
異なる特権レベルの領域(カーネルメモリなど)から意図的に情報を抽出するために、「デバイス」が使用されます。カーネルに存在するスクリプトで、外部条件に応じて、影響を受ける可能性のあるメモリからのデータの投機的読み取りに適しています。攻撃者による。
間接分岐命令と条件分岐命令を使用する従来のSpectreクラスの攻撃から保護するために、ほとんどのオペレーティングシステムは、間接分岐操作を「ret」命令に置き換えることに基づく「retpoline」手法を使用します。これには、個別のスタック状態予測が必要です。ユニットはプロセッサで使用され、分岐予測ブロックを使用しません。
2018年にretpolineが導入されたとき、Spectreのようなアドレス操作は、「ret」命令を使用した投機的なフォークには実用的ではないと考えられていました。
攻撃方法を開発した研究者 Retbleedは、マイクロアーキテクチャ条件を作成する可能性を示しました 「ret」命令を使用して投機的移行を開始し、そのような状態が発生するLinuxカーネルの脆弱性を悪用する適切な命令シーケンス(ガジェット)を特定するための既製のツールキットをリリースしました。
研究の過程で、 実用的なエクスプロイトが準備されました これにより、Intel CPUを搭載したシステムでは、ユーザースペースの非特権プロセスから、カーネルメモリから毎秒219バイトの速度で98%の精度で任意のデータを抽出できます。
En プロセッサ AMD、エクスプロイトの効率ははるかに高いです、 リークレートは毎秒3,9KBであるため。 実際の例として、提案されたエクスプロイトを使用して/ etc/shadowファイルの内容を判別する方法を示します。 Intel CPUを搭載したシステムでは、ルートパスワードハッシュを決定する攻撃が28分で実行され、AMDCPUを搭載したシステムでは6分で実行されました。
攻撃は、6〜8世代のIntelプロセッサで確認されました 2019年第1四半期より前にリリースされたもの(Skylakeを含む)、および1年第2四半期より前にリリースされたZen 2021、Zen XNUMX+、およびZenXNUMXマイクロアーキテクチャに基づくAMDプロセッサ。 新しいプロセッサモデルの場合、AMDZen3やIntelAlder Lake、ARMプロセッサなど、 問題は既存の保護メカニズムによってブロックされます。 たとえば、IBRS(Indirect Branch Restricted Speculation)命令を使用すると、攻撃から保護するのに役立ちます。
LinuxカーネルとXenハイパーバイザーの一連の変更を準備しました、古いCPUでプログラムによって問題をブロックします。 提案されたLinuxカーネルパッチは68ファイルを変更し、1783行を追加し、387行を削除します。
残念ながら、保護にはかなりのオーバーヘッドコストがかかります。AMDおよびIntelプロセッサで作成されたテキストでは、パフォーマンスの低下は14%から39%の間であると推定されています。 新世代のIntelCPUで利用可能で、Linuxカーネル4.19以降でサポートされているIBRS命令に基づく保護を使用することをお勧めします。
最後に、それについてもっと知りたい場合は、 詳細は次のリンクをご覧ください。