新たななコンピューター脆弱性をめぐって昨日(米国時間1/3)から発生している記事、声明、論文の雪崩に当惑している読者も多いだろう。これらには相互に矛盾する主張も多い。ほぼあらゆるコンピューターとOSに影響するMeltdownとSpectreという2つの欠陥は一体どんなどんなものなのか? 昨日の記事に引き続き、さらに詳しく現在判明している情報を紹介する。
どんな欠陥なのか?
要約:コンピューター・アーキテクチャーの本質的な欠陥により、プロセッサーのもっとも深いレベルに位置する重要情報へのアクセスが可能になる。
セキュリティー専門家は公式文書を発表して問題を確認している。 深刻な2つの脆弱性にはそれぞれ名前とロゴが与えられている(上の図で左がMeltdown、右がSpectre)。この欠陥は現在利用されているほとんどあらゆる中央演算処理装置―CPUに影響を与えている。
これらはCPUの物理的機能に関連する問題ではないし、WordやChromeにもときおり見られるようなプログラミングのミスによるソフトウェアのバグでもない。これは現代のCPUのアーキテクチャーそのものに内在する問題だ。
現代のCPUアーキテクチャーにはあらゆるデータが生で、つまり暗号化されずに処理される部分が存在する。このスペースは当然不可侵の領域でなければならない。CPUのアーキテクチャーの根本をなす部分、カーネルがそうした領域だ。またシステム・メモリー中にも他のアプリケーションからアクセスできないよう慎重に隔離された領域が存在する。これらの領域内のデータは機密であり、他のアプリケーションやプロセスからアクセスできないよう強力な保護壁が設けられている。
MeltdownとSpectreは セキュリティー専門家が発見した2つの攻撃手法。これらはデータ保護機能を回避してコンピューターが処理するほとんどあらゆるデータへのアクセスを可能にする。つまりパスワード、暗号化データ等の決定的に重要な情報もすべて他のプロセスからアクセス可能となる。
MeltdownはIntel CPUに固有の弱点で、カーネル・メモリー中のデータを保護する機能を迂回する。Intelプロセッサーではカーネル中のあるプロセスが偶然他のプロセスに干渉したり、悪意あるソフトウェアが権限のないデータにアクセスすることを防ぐため、アプリケーション領域とOS領域の間に障壁が設けられている。Meltdownはこの障壁を迂回して保護を無効化する。
SpectreはIntel、AMD、ARM各社のプロセッサーに影響する。つまりデスクトップ・コンピューターだけでなく、各種のモバイル・デバイスその他なんであれCPUが内蔵されているすべてのデバイスが対象となる。つまりスマート・サーモスタットや赤ちゃん見守り用ウェブ・カメラも含まれる。
SpectreはMeltdownとは異なり、アプリケーション間に設けられている障壁を迂回するためにある種の巧妙な罠を仕掛ける。これにより通常であれば他のプロセスからアクセスすることが不可能な領域にあるデータをアプリケーションに暴露させる。現代のコンピューターに多く見られるマルチコア・アーキテクチャーをベースにしているため実行はMeltdownより困難だが、同時にこの脆弱性を取り除くことを一層困難にもしている。
誰が影響されるのか?
要約: コンピューターのユーザーほぼ全員。
2011年に製造されたチップもテストされ、これらの脆弱性を持っていることが確認された。理論的には1995年以降に製造されたCPUすべてが影響を受けているとされる。
繰り返すがMeltdownとSpectreはCPUアーキテクチャー上の弱点であり、チップ・メーカー側の人為的ミスによるバグではない。またWindows、OS X、AndroidはじめあらゆるOSプラットフォームが等しく対象となる。
理論的にはデスクトップ、ノート、サーバー、スマートフォン、組み込みデバイスその他あらゆるデバイスが影響される。簡単にいえば、テストの結果安全だと確認されたプラットフォーム以外はすべてこれらの脆弱性を持つと考えるべきだろう。
Meltdownはまたクラウド・プラットフォームにも影響する点で深刻だ。ただしMeltdown攻撃をリモートで実行するのは非常に困難だという。これはクラウド・サービスにとってグッドニュースだ。
対策はあるのか?
要約:: 完全にではないが修正できる。ただし時間がかかる。
上述のように影響されるデバイスの数は膨大だが、だからといってこうしたデバイスが無防備だというわけではない。またIntel、AMD、ARMその他のチップ・メーカーは数か月にわたって「緩和策」(簡単にいえば絆創膏)を開発してきた。
カーネルのメモリ間の障壁を強化することがMeltdown対策となる。技術用語では「カーネル・ページ・アイソレーション」という。ただしこれには副作用もある。現代のCPUアーキテクチャーはカーネルの動作にある前提を設けている。この前提を変えることはCPUの処理効率を落とすことになる。
Meltdown脆弱性の修正策がチップのパフォーマンスに与える影響は少ない場合で5%、最大で30%に上るものとみられている。いずれにせよなにがしかのパフォーマンス低下は避けられない。しかし脆弱性を取り除くことができるのであればやむを得ない代償だろう。
これと違って、Spectreには当分の間根本的な解決策は得られそうにない。Spectre攻撃はCPUの物理的特性に極めて密接に関連するため、セキュリティー専門家もソフト的にこれを完全に避ける方策を発見することはできなかった。いくつかの回避策が提案されているものの、結論はこうだ。
前節で紹介した一時的回避策は現実の攻撃を短期間防止する役に立つはずだ。しかし今後書かれるコードについてはもちろん現に存在するコードについても、どんな構成であればCPUにとって安全であるか(それとも危険であるか)を判断する方法は知られていない。
今後どのような対策が取られるか予測することは難しいが、もっとも大きな被害をもたらしそうな攻撃を防止するためのソフトウェアのアップデートが相次ぐだろう。MicrosoftはすでにWindows OSに対してアップデートをリリースしている。ARMも一連の緩和策を用意している。Amazonはクラウド・サービスの膨大なサーバー群をアップデート中だ。【略】
ひとつはっきりしているのはデバイスのリコールはないということだ。Samsungのスマートフォンのバッテリー問題のように、問題が特定のハードウェアの特定の部品にある場合、リコールはあり得る。しかし今回の問題で影響されるのは何億ないし何十億にも上る膨大なデバイス群なのでリコールはあり得ない。
なぜ今突然報道されたのか?
要約: チップ・メーカーは来週合同で発表を予定していたがメディアに先回りされた。
実はチップメーカーは数か月前にMeltdownとSpectreという脆弱性について報告を受けていた。セキュリティー専門家は以前からこの問題に注目し研究を続けていた。脆弱性の内容自体は秘密にされていが、理由不明のアップデートが相次いだことで、外部にも少しずつ情報が漏れ始めていた。
仮にセキュリティー専門家が脆弱性を発見すると同時に、たとえばTwitterでそれを公開したとすれば、CPUメーカーよりむしろ悪意あるハッカーを利するだけに終わっただろう。セキュリティー上の問題では情報は「責任ある公開」が求められる。つまりまずそのプロダクトを提供しているメーカー、ベンダーに秘密に通知し、必要なら対応策の開発に協力するわけだ。
今回のケースではGoogleは数か月前にIntelにコンタクトを取っている。もちろん程度の差はあれ、問題の存在を知っていたメーカーは多いはずだ。Microsoftが理由を明かさずにパッチをリリースしていたのもその一例だろう。Linuxの各種ディストリビューションも、脆弱性については詳細を示さないまま、アップデートを行っていた。
セキュリティー問題ではメーカーやベンダーが対応策を得て密かにアップデートを完了して初めて脆弱性の存在が告知されるのが通例だ。今回もその方式を取ることが予定されていた。
しかしThe Registerがいくつかの情報をつなぎ合わせスクープ記事を出した。そのためIntelは来週に予定していた共同発表の前に急きょ「報道は不正確だ」という反論の声明を発表するなどの対応に追われることになったわけだ。
The Registerはセキュリティー問題に関する通例を守るべきだったという声もたしかにある。しかし一方でIntelなどの巨大企業が情報を全面的にコントロールするという状況も好ましくないだろう。もしスクープがなければこの問題に対する関心も現在のように高まることはなかったはずだ。
いずれにせよ、セキュリティー専門家はSpectreを説明した論文の結論として次のように述べている。
この論文で検討した脆弱性は、他の多くの脆弱性と同様、パフォーマンス向上を至上命令として開発を行ってきたテクノロジー業界の長い伝統に根ざすものだ。この結果、CPU、コンパイラ、ドライバー、OS、その他すべての重要な要素が最適化のために複雑にレイヤー化され、セキュリティー・リスクを生じさせることとなっている。パフォーマンス向上の代償としてセキュリティーを犠牲にするこのようなデザイン手法は見直しの時期に来ている。多くの場面でセキュリティーの最大化を目的とする実装が求められるている。
[原文へ]
(翻訳:滑川海彦@Facebook Google+)