Linux カーネルの投機的コード実行問題スキャナーである Kasper が利用可能になりました

アムステルダム自由大学の研究者チームは、プロセッサ上での投機的なコード実行によって引き起こされる Spectre クラスの脆弱性を悪用するために使用できる Linux カーネル内のコード スニペットを特定するように設計された Kasper ツールキットを公開しました。 ツールキットのソース コードは、Apache 2.0 ライセンスに基づいて配布されます。

メモリの内容を特定できる Spectre v1 などの攻撃を実行するには、特権コード内に特定のコマンド シーケンス (ガジェット) が存在する必要があり、これが命令の投機的な実行につながることを思い出してください。 。 最適化の目的で、プロセッサはそのようなガジェットを投機モードで実行し始め、分岐予測が正当でなかったと判断し、操作を元の状態にロールバックします。ただし、投機実行中に処理されたデータはキャッシュとマイクロアーキテクチャ バッファに保存され、サードパーティのチャネルを通じて残留データを決定するさまざまな方法を使用して、それらから取得できます。

典型的なパターンの検索に基づいてガジェットの Spectre 脆弱性をスキャンするために以前に利用できたツールは、非常に高いレベルの誤検知を示し、多くの実際のガジェットを見逃していました (実験では、そのようなツールによって識別されたガジェットの 99% が攻撃に使用できないことが示されました) 、攻撃につながる可能性のある動作中のガジェットの 33% は気付かれませんでした)。

問題のあるガジェットを特定する品質を向上させるために、Kasper は、Spectre クラスの攻撃を実行する各段階で攻撃者が悪用できる脆弱性をモデル化します。データ制御を可能にする問題がモデル化されます (たとえば、攻撃者のデータをマイクロアーキテクチャ構造に置き換えて、次の投機的実行に影響を与えるなど) LVI クラス攻撃)、機密情報へのアクセス(たとえば、バッファ境界を越える場合やメモリが解放された後にメモリを使用する場合)、機密情報の漏洩(たとえば、プロセッサ キャッシュの状態の分析や MDS メソッドの使用による)が行われます。

Linux カーネルの投機的コード実行問題スキャナーである Kasper が利用可能になりました

テスト時、カーネルは Kasper ランタイム ライブラリにリンクされ、LLVM レベルでの実行をチェックします。 チェック プロセスは、チェックポイント復元メカニズムを使用して実装された投機的なコード実行をエミュレートします。これは、具体的には、誤って予測されたコード分岐を実行し、分岐が開始される前の元の状態にロールバックします。 Kasper はまた、さまざまなソフトウェアおよびハードウェアの脆弱性をシミュレートし、アーキテクチャおよびマイクロアーキテクチャの影響を分析し、起こり得る攻撃者のアクションのファズ テストを実行しようとします。 実行フローを分析するには、Linux カーネルの DataFlowSanitizer ポートが使用され、ファジング テストには、syzkaller パッケージの修正バージョンが使用されます。

Linux カーネルの投機的コード実行問題スキャナーである Kasper が利用可能になりました

Kasper を使用した Linux カーネルのスキャンにより、命令の投機的実行中にデータ漏洩につながる可能性のある、これまで知られていなかった 1379 個のガジェットが特定されました。 おそらく、実際に問題を引き起こすのはそのうちの一部だけである可能性があることに注意してください。しかし、単なる理論上の危険ではなく、実際に危険があることを示すために、問題のあるコードの断片の XNUMX つに対してエクスプロイトの実用的なプロトタイプが開発され、情報が得られました。カーネルメモリからのリーク。

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

コメントを追加します