ILLUSTRATION: ELENA LACEY; GETTY IMAGES

CPUの深刻な脆弱性として問題になった「Spectre」や「Meltdown」、そしてその変種を利用した攻撃は、チップのセキュリティ確保がいかに難しいかを過去2年にわたって証明してきた。これらの攻撃は、どれもさまざまなプロセッサーをだまし、機密データを吐き出させるものだ。

こうした攻撃を可能にする脆弱性に対して、インテルのような企業がすぐに対応した場合と、1年以上もきちんと対応できなかった場合とでは大きな差が出る。

1年あまり無視されてきた脆弱性

こうしたなか、オランダのアムステルダム自由大学、ベルギーのルーヴァン・カトリック大学、ドイツのヘルムホルツ情報セキュリティセンター、オーストリアのグラーツ工科大学の研究者らは、インテルのチップに根深く残る脆弱性を利用した新たなハッキング手法を11月12日に公表した。

今回使われた脆弱性は、「ZombieLoad」や「RIDL（Rogue In-Flight Data Load）」「MDS（マイクロアーキテクチャ・データサンプリング）」などと呼ばれる脆弱性の変種だ。

グラーツ工科大学の研究者らが2018年はじめの発見にかかわったSpectreやMeltdownと同様、MDSの変種を利用すれば、ハッカーは標的となるコンピューター上でコードを実行し、プロセッサーから機密データを漏洩させられるという。攻撃シナリオには、被害者のブラウザーで実行されているウェブサイトのJavaScriptや、クラウドサーヴァー上で実行されている仮想マシン、同じ物理コンピューター上の仮想マシンなども含まれている。

研究者らの指摘によれば、今回のケースは単なるバグではなく、インテル側の重大な不手際だという。新たに見つかったMDSの変種については、研究者たちが2018年9月時点でインテルに警告していたにもかかわらず、同社はその後14カ月にわたってこれらの脆弱性への対処を怠ってきたというのだ。

また、インテルは12日、新たに数十の欠陥にパッチを適用したと発表したが、これらの修正ではMDS攻撃を完全に防ぐことはできないと研究者らは指摘している。そして当のインテルもこれを認めている。

研究者たちが沈黙を守ってきた理由

インテルが最初にMDS脆弱性の一部に対して修正を実施したのは、19年5月のことだった。しかし、自由大学の研究者らは当時、その措置では不完全だとインテルに警告していたという。

インテルの要請により、彼らはこれまで沈黙を守ってきた。それは同社が脆弱性に対して最終的な修正を実施する前に、ハッカーにパッチ未適用の脆弱性を悪用されることを恐れたからだ。

「インテルが5月に公表した措置では、ハッカーにくぐり抜けられてしまう可能性があることはわかっていました。効果的ではなかったのです」と、自由大学のセキュリティグループVUSecの研究者であるカーヴェ・ラザヴィは言う。「われわれが検証した攻撃のなかで、最も危険なものを完全に見過ごしてしまいました」

実際にVUSecの研究者らは、この脆弱性をインテルに開示したあと、それを使ってたった数秒で機密データを盗みだす方法を見つけだしている。

時間短縮の仕組みを利用し、機密情報を盗む

このMDS攻撃の方法は、VUSecとグラーツ工科大が、ミシガン大学やアデレード大学、ベルギーのルーヴァン・カトリック大学、ウースター工科大学、ドイツのザールラント大学のほか、セキュリティ企業のCyberus、BitDefender、Qihook360、オラクルの研究者らとともに、5月にすでに公開していたものだ。

それによると、被害者のプロセッサー上でコードを実行できれば、ハッカーはインテルのプロセッサーの奇妙な仕組みを使うことによって、コンピューター上のアクセスできないはずの部分から機密データを盗み出せる可能性があるという。

その仕組みはこうだ。インテル製チップでは、いくつかの場面で「投機的に」コマンドが実行されたり、コンピューターメモリーの一部にアクセスされたりする。時間短縮のため、実際に要求が行われる前に、そのプログラムが必要とするであろう処理を推測して実行するのだ。

しかし、この投機的実行の結果として、メモリー内の無効な場所にアクセスしてしまうケースがある。この場合、推論的プロセスはアボート（放棄）されることになるわけだが、そのときプロセッサーは代わりにバッファから任意のデータを取得する。バッファとは、プロセッサーとそのキャッシュなど、異なるコンポーネント間の「パイプ」として機能するチップの一部をいう。

研究者たちは5月に、このバッファを操作して暗号鍵やパスワードなどの機密データを格納させることや、投機的なメモリーアクセスをアボートさせることが可能であると証明した。これによって、チップのバッファから機密情報が盗まれる可能性があるのだ。

対応ミスで見逃された変種

インテルはこの問題の修正にあたり、メモリへの不正アクセスが発生した際に、プロセッサーがバッファから任意のデータを取得しないようにする方法をとらなかった。その代わり、チップ内のマイクロコードをアップデートし、データ漏洩につながるような特定の状況を回避するという策をとったのだ。

だがこのせいで、インテルはいくつかの変種を見落としたと研究者らは言う。例えば、「TSX Asynchronous Abort（TAA）」という手法はプロセッサーをだまし、TSXという機能を使わせることによって情報を盗み出すものだ。

TSXとは、プロセスが競合した場合に、メモリ内の「セーブポイント」に戻るようにする機能である。ハッカーはプロセスの競合を引き起こすことによって、これまでのMDS攻撃と同様に、チップのバッファから機密データを強制的にリークさせられるのである。このTAAは、特に深刻であることが判明した。

インテルが5月時点でMDS脆弱性を軽視していた理由のひとつに、攻撃に数日かかると考えられていたことが挙げられる。しかし、VUSecの研究者ジョナス・タイスは、TAAを利用して標的のマシンをだまし、わずか30秒で管理者のパスワードのハッシュを表示させる方法を発見した（下記動画を参照）。

ハッカーはハッシュを解読し、使用可能なパスワードを生成しなくてはならない。それでも、これはインテルによる深刻な見落としである。

「インテルは、この種のMDS攻撃を悪用するのは非常に難しいと言っていました」と、VUSecのクリスティアーノ・ジュフリーダは言う。「そこでわたしたちは考えました。特に効果的な変種を使って、これを効率的に実行することが可能であることを証明して見せようと」

続くパッチワーク式の対応

MDS脆弱性に取り組んでいる研究者らとインテルは、最初のやり取りから衝突している。

インテルは自社製品の脆弱性を報告したハッカーに対し、最大10万ドル（約1,100万）の「バグ報奨金」を出している。しかし、VUSecの研究者らが2018年9月にインテルにMDS攻撃について警告した際、インテルは彼らに4万ドルしか提示しなかった。そして、それに8万ドルの「プレゼント」をつけようとしたのである。

インテルのこのやり方は、発見されたバグを軽度なものに見せるための偽装だとして、研究者らはこれを拒否した。最終的に、インテルは10万ドル全額を報奨金として彼らに支払っている。

VUSecのチームはまた、5月にインテルの修正の不完全さを警告していた。TAA攻撃を見落としただけでなく、機密データのバッファをクリアするという別の修正部分もハッカーに回避される可能性があったからだ。

グラーツ工科大の研究者らは5月の公表に先立ち、両方の問題についてインテルに警告したと言う。「攻撃は難しくなりますが、防ぐことはできません」と、グラーツ工科大の研究者のひとりであるミヒャエル・シュヴァルツは言う。

インテルが12日に公開した全面的なアップデートがこの長引く問題に対処できるものかどうか、研究者らはいまもなお確信がもてないという。VUSecチームいわく、同社はバッファコンポーネントの一部から機密データを遮断したが、完全に遮断したわけではない。

今後も間違いなく続く

インテルは声明のなかで、修正が不完全なままであることを事実上認めた。同社は12日のブログ投稿で「このTAAとMDSへの処置によって、攻撃対象となる領域が実質的に減るとわれわれは考えています」と説明している。

「しかしながら、本開示を行う直前、TAAとMDS（TAAについてはTSXが有効な場合のみ）を用いることで、サイドチャネルを介してある程度のデータが依然として推測可能であることが確認されました。それらについては、今後のマイクロコードの更新で対処予定です。われわれは、継続してこれらの問題に対処するための技術改善に努めており、当社と提携関係にある学術研究者の皆様に感謝しています」

パッチに含まれているこうした問題について、VUSecの研究者らがインテルに説明したところ、またしても同社は問題の公表を遅らせるよう求めてきたという。今回、研究者らはこれを拒否した。

「これが難しい問題であることはわかっていますが、インテルにはとても失望しています」とジュフリーダは言う。「このプロセス全体に対するわたしたちの不満は、セキュリティエンジニアリングの欠如が見受けられることです。インテルは変種を一つひとつ潰していっているだけで、根本的な原因への対処ができていない印象があるのです」

この2年間、次から次へと現れるマイクロアーキテクチャー攻撃がインテルのチップを苦しめてきたが、この流れはまず間違いなく今後も続くだろう。