鈴の音情報局blog

携帯関連の将来や最新の技術情報や業界の行く末などを適当に綴るblogです。 内容の信憑性は?余り信じない方がいいと思います。
本家の鈴の音情報局はこちら→http://suzusuzu.dip.jp:8800/
スマホ・携帯端末アクセス[ランキング][アクセスシェア(グラフ)] (毎年10/1にログをクリア)

ここ最近騒がしいCPUの脆弱性のSpectre/Meltdownの危険度について、私なりに色々考えてみる

遅ればせながら、Google の Project ZEROが発見・発表したSpectre/Meltdownを触っていきます。

CPUの脆弱性[Spectre], [Meltdown] は具体的にどのような仕組みで攻撃する?影響範囲は? ~ SEの道標
2018/1/3にCPUに関する脆弱性 Spectre(スペクター)/Meltdown(メルトダウン) が Google の “Project ZERO”によって公開され話題になっています。発見された脆弱性は3つ(Variant 1~3とラベルされています)で、うち2つが Spectre、1つが Meltdown に分類されます。
3つともCPU性能向上のための「投機的実行(Speculative Execution)」というコンセプトを実装した仕組み(Branch Prediction/Out of Order Execution)が原因だと判明しています。

このブログの記事が比較的詳細に分かりやすく解説されていると思うので張っておきます。


私はそこらのメディアの記事では全く内容が解説されないのでどういう仕組みなのか気には
なっていたのですが、この記事のお陰でSpectreもMeltdownも実際の目的の処理が行われる
までの時差を利用した隙間アタックということが分かりました。

どれもミリ秒以下クラスの隙間時間を利用したアタックで、かなりトリッキーな仕組みで利用
出来ますが、これが実際に役に立つコードが書けるのか、私はかなり懐疑的な目で見ています。

取り敢えず解説されている仕組みを見ていきます。

 ■Variant 1: Bounds Check Bypass(CVE-2017-5753) の概要(Spectre-1)
 ■Variant 2: Branch Target Injection(CVE-2017-5715) の概要(Spectre-2)
 ■Variant 3: Rogue Data Cache Load(CVE-2017-5754)の概要(Meltdown)

記事では3つの脆弱性が解説されています。
Spectre-1/2は分岐予測時の投機実行を悪用したもの、Meltdownはアウト・オブ・オーダーと
投機実行をする際の実行タイミング差を悪用したものです。


確かに理屈では3つとも「読めるはずがないメモリを読める」脆弱性として解説されています。
3つの脆弱性とも共通しているのは、投機実行した成否の結果が判明するまでのタイミング差を
利用した僅かな時間で、投機実行の実行結果をキャッシュにこっそりと書き込んで、後で回収
するというものです。

理屈的には確かに「読めるはずのないメモリが読めてしまい、その結果を後から回収できる」と
思われますが、その回収できた結果が何であり、どれだけの価値があるのかということが大いに
問われると思います。

私からすればそんなデータはほぼカスであり、有用なデータを奪うことが可能だとは
余り思えません。不可能だとは言いませんが。

投機実行の成否が判明するまでのわずかなステップ数(クロック数)は、どれだけ多くても
せいぜい100~150クロックという所ではないでしょうか。その間に「メモリを読み」 「何らかの
演算をし」「演算結果を消されてしまわないキャッシュに書き込む」必要があり、

「何らかの演算をする」のは恐らく結果に細工することで、おかしな最適化をされてしまうことを
避けるためだと思います。なのでnotやxor、ror/rol等の簡単なビット演算で十分に役目を
果たせると思います。こんなところにステップを割いても仕方ないですしね。

それに世代の違う複数のCPUを対象にして、正常に動作するコードを書くには、分岐予測や
投機実行のリカバリーする時間が最短のCPUに合わせてコードを仕込む必要があるので、
それは非常に大変な作業になると思います。

私は16進数でハンドアセンブルによる機械語を書ける人ですけど、その私でも嫌な作業です。
それをどこに何のメモリがアサインされているのかまで予想しながらデータを奪っていつ消える
のか全く保証されていないキャッシュに一時保管して回収しなくてはならないので、成立する
コードを書くのは相当大変な作業になると思います。



もっとユーザーサイドに近い高級側のコードの話でしたら、有用なデータを選別して奪うのは
たやすいと思われますが、単なるビットを羅列しただけの文字列か数値かすら分からない、
最底辺レベルのバイナリデータを、有用なデータか全く関係のない無用なデータか、
調べるのもなかなか大変ですよ。

そもそも読めるメモリが1命令で読める64bit(8バイト)、これを何セット行えるのか、それを冷静に
見極める必要が有ります。RISCプロセッサは基本は1命令1クロックで実行できるはずですが、
例えキャッシュでもメモリアクセスが噛むと1クロックで実行できないものが少なくありません。
この1GHzを超える超高クロック時代にはもうそれは常識のようなものです。
データを奪うのに100クロック使えるとして、精々10セット、最大で80バイトを奪えたら御の字って
ところじゃないかなと。実際にはもっと少ないと思いますけど。


まあこういうのは「1バイトでもデータを奪えるならば一応脆弱性として考えなくてはならない」と
考えるフェールセーフの思想で考えないといけないので、やはりこれは重大事だとは思いますが、
必要なデータが誤った・悪意のある投機実行でアクセスできる範囲のメモリになるのか等の
確率を考えると、悪用できる可能性は非常に低いと私は考えます。

アクセスできてもそれが有用な情報である確率は非常に低いですから。


まあでも世の中、制度や法の悪用に関しては天才的な孫正義氏のような頭のいい人もいますので、
こういう脆弱性も有効に活用できる人が居るのかもしれません。なので一応記事的にはフェールセーフ
の精神で、危険なので気を付けた方がいいとは言っておきます。


でも私的には心配し過ぎるのもどうかなとは思っているのも一応書いておきます。

関連記事
  1. 2018/01/17(水) 19:22:02|
  2. 携帯
  3. | トラックバック:1
  4. | コメント:4
<<コメント欄の書き込みのハンドルネームについて(名無し系の名前の排除関連) | ホーム | 緊急事態でXperia X Compactを購入、Z3Cを壊してしまったので…>>

コメント

誤:必要なデータが謝った・悪意のある
正:必要なデータが誤った・悪意のある
ごめんなさいw

誤:精度や法の悪用に関しては天才的な孫正義氏
正:制度や法の悪用に関しては天才的な孫正義氏
ラーメン返せw

こういう脆弱性よりも、アプリに仕込まれた脅威のほうがよほど怖いですね。
そして一番怖いのはその脆弱性に対応したとして実行速度を「合理的に落として新製品購入に結び付けさせるどこぞ」ですかね。
  1. URL |
  2. 2018/01/17(水) 20:03:54 |
  3. 9SUXEN #22s72cIM
  4. [ 編集]

>9SUXENさん
そうなんですよ。
実際には重要なデータかどうか簡単に判別できるアプリや簡易な
スクリプトレベルのモノの方が100倍危険だと思います。
CPUレベルでデータを抜き出せるのは絶対的な強さは有っても、
何でもかんでも抜き出せる可能性がある代わりに、重要なデータの
判別が出来なさすぎなんですよね。
しかもナノ秒単位かそれ以下の時間的猶予が与えられていませんし。
  1. URL |
  2. 2018/01/22(月) 14:44:33 |
  3. 鈴 #GpEwlVdw
  4. [ 編集]

野暮なツッコミになっちゃいますがフェイルセーフではなくリスクマネジメントかリスク管理の方が内容的に正しいかと フェイルセーフは故障等が発生しても安全を保つ設計等を指すので脆弱性をツカレタ万が一を指すには不適当かと(例で言えば踏切の遮断器は下げる方ではなく持ち上げる側に力を掛けるよう設計されていて停電や故障で遮断機が動かなくなった場合に重力で遮断機が降りるように設計されています)
  1. URL |
  2. 2018/01/23(火) 22:01:25 |
  3. 404 #-
  4. [ 編集]

攻撃は確認されてないですがこの脆弱性を利用したウイルスは見つかったそうですね
https://pc.watch.impress.co.jp/docs/news/1104573.html
Googleも検証してパスワード盗めたそうなので対策しといて間違いはないかなと
  1. URL |
  2. 2018/02/02(金) 17:11:04 |
  3. 404 #-
  4. [ 編集]

コメントの投稿(投稿時には必ず何らかの名前を付けてください)


管理者にだけ表示を許可する

(名前を入れないとクリックできません)

トラックバック

トラックバックURLはこちら
http://suzunonejh.blog15.fc2.com/tb.php/7390-18a38dc7
この記事にトラックバックする(FC2ブログユーザー)

偶然で儲けた人は確実に損をする。

【ここ最近騒がしいCPUの脆弱性のSpectre/Meltdownの危険度につい...
  1. 2018/01/18(木) 22:57:11 |
  2. 【小人閑居シテ駄文記ス】

最近の記事

機能リンク

最近のコメント

カテゴリー

ブログ内検索

ブログリンク

RSSフィード

QRコード

QR

月別アーカイブ



メールフォーム

お問い合わせ・ご質問はこちらから。

名前:
メール:
件名:
本文:

suzunone.m(あっと)gmail.com に
直メでもOKです。