コンピュータ セキュリティ

新年早々CPUに深刻な脆弱性が発表されたっぽい

2018年1月5日

CPUの脆弱性が2018年にGoogleより2つ発表されたみたいです。
まだ2018年になって4日しか経ってないぞ…

2018年1月6日 脆弱性に対する情報の修正・対象CPUを追記しました。

脆弱性概要

簡単に言うと投機的実行機能をもつCPUにてとある手法にてサイドチャネル攻撃されるとメモリ情報をのぞき見が可能になるようです。
サイドチャネル攻撃ってことばセキュスペの午前問題で覚えたなぁ。

ほとんどのCPUは特定のプロセスで実行する必要のあるコードを予測して実行する機能によりパフォーマンスと効率が大幅に向上することができ、

脆弱性は3つ公開され、攻撃手法に「Spectre」「Meltdown」と名付けられました。どちらともCPUの投機的実行機能に基づく脆弱性です。
投機的実行機能はほとんどのCPUに搭載されている為、大混乱になっています。

 攻撃手法脆弱性CVE
Variant1SpectreBounds Check BypassCVE-2017-5753
Variant2Branch Target InjectionCVE-2017-5715 
Variant3MeltdownRogue Data Cache LoadCVE-2017-5754

投機的実行機能とは

投機的処理というのは、CPUがプログラムの分岐を先読みして実行する機能です。
分岐後の処理が必要かどうかを知る前に予め処理を行い、必要だった場合はその処理を利用し、不要だった場合は処理結果を無視する機能のこと。
こうすることで、分岐の度に処理させることなく高速化を行えるようです。
投機的実行はこちらのサイトがわかりやすいかもです。

サイドチャネル攻撃とは

サイドチャネルとは処理時間・消費電力・音・電磁波・熱などコンピュータが物理的に動作を観測し、情報を得ようとする攻撃です。

Spectre

この脆弱性はIntel、AMD、ARMプロセッサ全てが対象のようです。
(AMDは1つの脆弱性については否定していますが、もう1つの脆弱性は認めています。)


spectre論文(抜粋)

Bounds Check Bypass

これは投機的実行によって命令の結果が予測した通りなのか予測外なのかによって変動する処理時間・メモリ使用を観測・解析し、投機的実行中のデータを予測する方法です。

Branch Target Injection

投機的実行するには分岐先の処理を実行することから分岐予測が必要になってきます。

分岐予測には2分岐を予測する分岐方向予測(直接分岐)と多分岐の分岐先も予測する分岐先アドレス予測(間接分岐)の2つあります。

攻撃対象となるのは間接分岐のほうです。
間接分岐とは分岐先のアドレス値をインデックス付けされたバッファに格納し、格納された分岐先アドレスに基づいて予測する手法です。
この手法に悪意のあるプログラムが間接分岐先のメモリアドレスの作成状況を観測・解析・予測し、悪意のあるメモリ空間に情報を書き込ませるよう分岐アドレスを追加・実行させることで実行結果を得られる方法です。

このバッファ値はセキュリティレベルが低いようで、全体アドレスのサブセットのみでインデックスを予測することができるし。ハイパースレッディング搭載CPUだと別スレッドの予測に影響させることもできるようです。

Meltdown

対象となるCPUは現時点で1995年から発売された全てのIntel製CPU(Intel Itanium・Intel Atomは除く)
AMD、ARMも現時点はこの脆弱性は見つかっていないが、可能性としてはあるようです(Google’s Project Zero teamより)。
ただし、AMD社からはMeltdownに対してアーキテクチャの違いによってこの脆弱性は発生しないということです。

Rogue Data Cache Load

アプリケーションがカーネルメモリを参照できてしまう手法です。

通常、カーネル内のメモリ領域はデータ保護のため通常のアプリケーションのメモリ領域と区別して管理しているのですが、投機的処理にてCPU内のL1キャッシュメモリへ断続的に実行(負荷をかけ)させるとカーネルが管理しているメモリ情報にアクセスできてしまうとのこと。

区別(壁)を壊してアクセスできることからメルトダウン(炉心融解)と名付けられたようです。

さらに詳細を知りたい場合は

英語サイトですが以下のサイトを見てください。

Meltdown and Spectre
 ⇒Meltdown及びSpectreについて論文が発表されています。

Intel Analysis of Speculative Execution Side Channels
 ⇒Intelによる調査結果を記載されています。

対象のCPU

2018年1月6日時点の情報になります。

Intel

Intel製品だとほとんどがVariant1Variant2Variant3に該当するようです。

インテル®Core™i3プロセッサー(45nmおよび32nm)

インテル®Core™i5プロセッサー(45nmおよび32nm)

インテル®Core™i7プロセッサー(45nmおよび32nm)

インテル®Core™Mプロセッサー・ファミリー(45nmおよび32nm)

第2世代インテル®Core™プロセッサー

第3世代インテル®Core™プロセッサー

第4世代インテル®Core™プロセッサー

第5世代インテル®Core™プロセッサー

第6世代インテル®Core™プロセッサー

第7世代インテル®Core™プロセッサー

第8世代インテル®Core™プロセッサー

インテル®X99プラットフォーム用インテル®Core™Xシリーズプロセッサー・ファミリー

インテル®X299プラットフォーム用インテル®Core™Xシリーズプロセッサー・ファミリー

インテル®Xeon®プロセッサー3400番台

インテル®Xeon®プロセッサー3600番台

インテル®Xeon®プロセッサー5500番台

インテル®Xeon®プロセッサー5600番台

インテル®Xeon®プロセッサー6500番台

インテル®Xeon®プロセッサー7500シリーズ

インテル®Xeon®プロセッサーE3ファミリー

インテル®Xeon®プロセッサーE3 v2ファミリー

インテル®Xeon®プロセッサーE3 v3ファミリー

インテル®Xeon®プロセッサーE3 v4ファミリー

インテル®Xeon®プロセッサーE3 v5ファミリー

インテル®Xeon®プロセッサーE3 v6ファミリー

インテル®Xeon®プロセッサーE5ファミリー

インテル®Xeon®プロセッサーE5 v2ファミリー

インテル®Xeon®プロセッサーE5 v3ファミリー

インテル®Xeon®プロセッサーE5 v4ファミリー

インテル®Xeon®プロセッサーE7ファミリー

インテル®Xeon®プロセッサーE7 v2ファミリー

インテル®Xeon®プロセッサーE7 v3ファミリー

インテル®Xeon®プロセッサーE7 v4ファミリー

インテル®Xeon®プロセッサースケーラブル・ファミリー

インテル®Xeon®プロセッサー3200,5200,7200シリーズ

インテル®Atom®プロセッサーCシリーズ

インテル®Atom®プロセッサーEシリーズ

IntelAtom®プロセッサーAシリーズ

IntelAtom®プロセッサーx3シリーズ

Intel AtomプロセッサZシリーズ

インテル®Celeron®プロセッサーJシリーズ

インテル®Celeron®プロセッサーNシリーズ

インテル®Pentium®プロセッサーJシリーズ

インテル®Pentium®プロセッサーNシリーズ

AMD

An Update on AMD Processor Securityを見ている限りなさそう

ARM

CPUによって影響度合いが変わるようです。

また、ARM独自でVariant 3a(Variant 3に関連する脆弱性)が記載されています。

Processor

Variant 1

Variant 2

Variant 3

Variant 3a

Cortex-R7

影響あり*

影響あり*

影響なし

影響なし

Cortex-R8

影響あり*

影響あり*

影響なし

影響なし

Cortex-A8

影響あり (審議中)

影響あり

影響なし

影響なし

Cortex-A9

影響あり

影響あり

影響なし

影響なし

Cortex-A15

影響あり (審議中)

影響あり

影響なし

影響あり

Cortex-A17

影響あり

影響あり

影響なし

影響なし

Cortex-A57

影響あり

影響あり

影響なし

影響あり

Cortex-A72

影響あり

影響あり

影響なし

影響あり

Cortex-A73

影響あり

影響あり

影響なし

影響なし

Cortex-A75

影響あり

影響あり

影響あり

影響なし

*…Cortex-Rの一般向けのモデルはアプリケーションやプロセスが厳密に管理されているため、今回の脆弱性に影響受けません。

対処方法

CPUの物理的構造に問題がある為、完全に対策するには今後出てくる新しいCPUを購入するか方法はないようです。

ただ、完全対応とまではいかないまでも、緩和策として各ブラウザ・OS・CPUメーカが対応取っていってるようです。
しかし、緩和策といってもサイドチャネル攻撃しにくくさせるのが有力手段となってしまうため、パッチを適用すると確実に処理能力はダウンします。
(最悪の場合20%~30%以上も処理能力が落ちるようです。)
※通常使用の場合はそこまで能力は落ちないとのことだが、仮想通貨掘削部隊等CPU高負荷作業を行う人にとっては痛手になりそうです。

CPUの物理的構造の問題となり、アンチウイルスソフト等はこの脆弱性について判断はつかない可能性が高いです。

Intel

Intel Issues Updates to Protect Systems from Security Exploitsによると
過去5年間に導入されたプロセッサ製品のアップデートを準備しており、1月14日までに過去5年間に導入されたプロセッサ製品の90%のアップデートを公開する予定だそうです。

2013年1月導入分からだからIvy Bridgeの一部分以降対応ということなのかな。

AMD

An Update on AMD Processor Securityによると

Bounds Check Bypassに対してはシステムベンダーやメーカーが提供するソフトウェア・OSのアップデートによって解決されたようです。

他の脆弱に対してはAMDではアーキテクチャの違いで脆弱性実証されていないとのことです。

ARM

Vulnerability of Speculative Processors to Cache Timing Side-Channel MechanismによるとOS、CPUによって対応策が異なるようです。

上記URLに対応策が記載されていますので確認してください。

また、ARMのホワイトペーパーにはソフトウェアに対する軽減策も記載されていました。

Linux

今回の攻撃手法に対する対策として「KAISER」あるいは「KPTI」と呼ばれる機能が実装されているみたい。

カーネルアップデートで対策される模様。

Redhat、Ubuntu

Windows

EdgeとIEに関してはセキュリティ更新プログラム(KB4056890)を配布しているみたい。
ただし、これはWindows10のみだそうです。
こちらを見るとアンチウイルスソフトと相性問題があるみたい。相性が確認できたアンチウイルスソフトを使用しているWindows10から順次アップデートしていっているみたい。
※無理やりインストールするとブルースクリーン多発する模様。

OSに関しては探したけど見つからなかったです。今対応中なのかも

Apple

macOS10.13.2で既に対処してるみたい。

Android

こちらによると最新(2018-01)のセキュリティパッチにて対応したようです。

Chrome

Chromeの設定を変更することで対応ができるとのこと。

chrome://flags/#enable-site-per-processでChromeの設定を開きます。

「Strict site isolation」と黄色マーカがかかっている項目にて「有効にする」をクリックで有効にすればOKです。(Chrome再起動がかかります。)

Azure

Securing Azure customers from CPU vulnerabilityによると2018年1月3日15時30分(米国時間)にて対応している模様。

AWS

Processor Speculative Execution Research Disclosure対象顧客には既に通知済みとのこと。
EC2の全体インスタンスのうち、再起動が必要な割合は数%レベルだそうです。

対象となるインスタンスについては数時間で対応が完了するとのこと。

徐々に情報は収束中

あれこれとネットニュースが出ており、今のところ情報が入り混じっていましたが日が経つにつれ収束していっています。

また、新しい情報がわかれば更新しようと思います。

見ている限りIntel CPUに対してダメージが大きいようですね。
シェア率74%(価格.comより)のCPUなので影響度も大きいですね。サーバ用途だとほとんどの会社がXeon使ってそうですし。

新年早々から低レベル(BIOSやCPUなどハードウェアより)の脆弱性とかきついっす。

参考

Reading privileged memory with a side-channel(Google’s Project Zero team)

Today's CPU vulnerability: what you need to know(Google Security Blog)

Intel Analysis of Speculative Execution Side Channels(Intel)

An Update on AMD Processor Security(AMD)

Intel Responds to Security Research Findings(Intel)

Vulnerability of Speculative Processors to Cache Timing Side-Channel Mechanism(ARM)

LKML: [PATCH 00/23] [v4] KAISER: unmap most of the kernel from userspace page tables(Linux)

Securing Azure customers from CPU vulnerability(Azure)

Mozilla Security Blog: Mitigations landing for new class of timing attack(Mozilla)

投機的実行機能を持つ CPU に対するサイドチャネル攻撃(JVN)

Exploiting Speculative Execution (Meltdown/Spectre) via JavaScript

投機的実行に関する最新技術動向

-コンピュータ, セキュリティ
-, , , , ,