パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

新たな「Spectre」関連の脆弱性が発見される」記事へのコメント

  • この論文 [mit.edu]で提案されている Spectre 1.1 と 1.2 の共通点は、投機的実行パスにおいて脆弱性を“仮想的に”突くことで、本来読めないデータを読めるようにするというものです。特に Spectre 1.2 は実際にリードオンリーに設定されたデータを書き換えるというわけではなく、投機的実行パス (のみ) において読み取り専用のデータを書き換え、投機的実行パスを任意のものに置き換えることによって本来読めないメモリ等を読み取ろうとする (サンドボックス等におけるコードの制約を回避する?) 攻撃のようです。

    これが成り立つのは、オリジナルの Spectre の一部バリアントでもそうですが投機的実行パスにおいて多くの権限チェックを飛ばすことに起因しており、普通は実行できないコードが投機的には実行されてしまうことで、その結果を間接的に推測できてしまうということにあります。

    • by Anonymous Coward

      ここのとこ、意味がよくわからない

      …実際にリードオンリーに設定されたデータを書き換えるというわけではなく
      投機的実行パス (のみ) において読み取り専用のデータを書き換え

      • 読み取り専用のデータを“書き換えた”コードを (少なくとも) 投機的実行パスで実行させるということです。普通に実行すると例外が発生するコードパスではありますが、投機的実行の際には幾つかのチェック (Meltdown の場合カーネル/ユーザーモードのページ権限フラグ、Spectre 1.2 の場合ページの読み取り専用フラグ) が飛ばされるため、本来実行できないはずのコードでも投機的には実行できてしまいます (しかも、秘密にすべき値に依存する投機的動作まで行ってしまう)。

        この結果は (分岐予測が外れるなどして) 実行されなければ実際の状態には表向きは反映されず、実行されたなら例外を引き起こしますが、投機的実行によって生まれたキャッシュ等の状況の差から秘密の値を読み取れてしまうというのが Spectre variant 1 系 (今回の攻撃含む) / Meltdown の大まかな説明です (間違ってたら申し訳ない)。

        親コメント
        • 自己レス。

          解説を Meltdown 寄りにしすぎて Spectre 1.0/1.1 の特徴を掴み損ねてましたね……。投機的実行においてハードウェア的に権限チェックをスキップすることだけではなく、(ソフトウェア的にも) 本来実行してはならないコードパスを投機的に実行した痕跡がキャッシュを通じて残ってしまうこと自体を悪用するのがだいたいの大枠と言っていいかと。

          親コメント

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

処理中...