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

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

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

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

    • by Anonymous Coward

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

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

      • by Anonymous Coward

        投機実行中のプロセッサはメモリアクセスの権限チェックをさぼり、読み取り専用領域へのストアもストアバッファに格納し、ロードはそっちを優先的に参照してしまうので、投機実行中のプログラムはあたかも(書き込み禁止であるはずの)データを書き換えたかのように振る舞う
        特に分岐テーブルなどは通常は読み取り専用領域に格納されているが、これを書き換えて本来ならあり得ない先に分岐したかのように投機実行中は振る舞うことができる
        投機失敗が判明すると投機実行の痕跡は跡形もなく消去され、なにごともなかったことになる
        が、キャッシュやTLBや分岐予測器などにごくわずかな痕跡が残ってしまうので脆弱性となる

        • by Anonymous Coward

          プロセッサはどういう命令を実行すると投機実行モードに入るのかというと
          ・条件分岐命令
          ・間接分岐命令
          ・メモリアクセス例外、算術例外、特権例外などを起こす命令
          なので、整数演算以外の大半は投機実行の要因となります
          実際、プロセッサはほとんどは投機実行モードで動いているので、権限チェックをさぼって後でまとめて解決するとおいしい
          富士通のプロセッサはそこをきちんと理解した上でさぼらなかったのでしょう
          実にすばらしい

          • by Anonymous Coward

            ページング方式でメモリアクセス例外を検出するには、アクセスされる実効仮想アドレスを計算し、それに基づきページテーブルエントリを取得し、エントリの属性を見る必要がある
            ほぼすべてのOoOプロセッサはメモリアクセス命令は実効アドレスの計算とロード/ストア操作の2つのuopに分解して実行する
            セグメント方式であれば、メモリアクセス命令を修飾しアクセス対象のセグメントを指定する
            ストア命令をフェッチした時点でストア対象のセグメントの属性を取得し直ちに例外を起こすことができる
            ページングでなにもかもやろうとしたunixの汚い部分がモロに出ましたな

            • by Anonymous Coward

              unixよりはページングの方が古いんじゃないの?

              • by Anonymous Coward on 2018年07月19日 2時06分 (#3445179)

                ページングは1960年代に現れたそうな。UNIX以前ね。
                そして、オリジナルのUNIX(AT&T系)はページングじゃなくてスワッピング。
                UNIX界隈でのページングはBSDが初出かな。

                親コメント

物事のやり方は一つではない -- Perlな人

処理中...