GCE VMのCentOS7とCentOS6のMeltdown, Spectre対応状況まとめ

grasys加藤です。

2018年が始まってすぐに数多のエンジニアを恐怖させたCPUの実装に関連する3つのCVE=通称MeltDown, Spectreバグ。

CVE-2017-5753, CVE-2017-5715, CVE-2017-5754

本当はすべて終わってから記事にしようと思いましたが時間がかかりそうなので一旦まとめることにして、随時更新をしていきます。

2018-03-14 kernel情報更新 ひょっとしてCentOS7はSpectreも対応完了?!

背景やその技術的な説明は各所でなされているのでここで繰り返すつもりはありませんが、Google Project Zeroはとんでもないバグを掘り起こしていまいました(賞賛です)。

Project Zero: Reading privileged memory with a side-channel

この記事ではこの対応状況を追っていきたいと思います。

尚、 未だSpectre Variant 2は解消されていません 。 ちなみにこの脆弱性への攻撃はかなり難しいです。

脆弱性診断ツール

nixCraft社製の診断ツールを入れて測定します。素晴らしいスクリプト。

3つのCVE全てについて診断してくれます。

git clone https://github.com/speed47/spectre-meltdown-checker.git
cd spectre-meltdown-checker/
sudo sh spectre-meltdown-checker.sh

こちらはCentOS以外、DebianやUbuntuでも動作するようです(未確認)


CentOS7 imageの対応状況

バージョン : 3.10.0 リリース : 693.21.1.el7

2018-03-14 現在の最新image

yum update kernel してrebootすると自動的にこのカーネルになります。

Spectre Variant 2 のMitigation2: Retpolineを使用したコンパイルカーネルがYESになりました。 おぉ結局Retpoline採用したんですかね?関連記事見つけられませんでした。 しかし惜しいかなretpoline-aware compilerを使ったかUNKNOWNということでVulnerableなままです。

Retpolineについての詳細は こちら

でもこれ、だいぶ前進したんじゃないですかね?!

$ uname -a
Linux kato 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Screenshot of spectre-meltdown-checker.sh

バージョン : 3.10.0 リリース : 693.17.1.el7

本脆弱性については前バージョンと変化なし。

$ uname -a
Linux kato 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 20:13:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Screenshot of spectre-meltdown-checker.sh

バージョン : 3.10.0 リリース : 693.11.6.el7

こちらで Spectre Variant 1Meltdown の対策がなされました。 コンパイルされたのは1月4日です。

Linux Kernel開発者たちの対応のおかげです。もう足を向けて眠れません(だいぶ前から)

Meltdown and Spectre Linux Kernel Status

$ uname -a
Linux kato 3.10.0-693.11.6.el7.x86_64 #1 SMP Thu Jan 4 01:06:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Screenshot of spectre-meltdown-checker.sh

バージョン : 3.10.0 リリース : 693.el7

昨年8月から提供されているバージョンがこちら。脆弱性があります!!

$ uname -a
Linux kato 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Screenshot of spectre-meltdown-checker.sh

CentOS6 imageの対応状況

バージョン : 2.6.32 リリース : 696.20.1.el6

2018-01-31 現在の最新image

yum update kernel してrebootすると自動的にこのカーネルになります。

$ uname -a
Linux kyouhei 2.6.32-696.20.1.el6.x86_64 #1 SMP Fri Jan 26 17:51:45 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Screenshot of spectre-meltdown-checker.sh

バージョン : 2.6.32 リリース : 696.18.7.el6

el6の脆弱性対応カーネル。

$ uname -a
Linux kyouhei 2.6.32-696.18.7.el6.x86_64 #1 SMP Thu Jan 4 17:31:22 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Screenshot of spectre-meltdown-checker.sh

バージョン : 2.6.32 リリース : 696.16.1.el6

昨年11月から提供されているバージョンがこちら。脆弱性があります!!

$ uname -a
Linux kyouhei 2.6.32-696.16.1.el6.x86_64 #1 SMP Wed Nov 15 16:51:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Screenshot of spectre-meltdown-checker.sh

対策について

Google側が管理するホストマシーンはすでにMeltdownはもちろん、Spectreにも対応済みです。 この対策にはRetpolineという新しいテクノロジーが使われています。Retpolineはカーネルコンパイル用のコードが配布されているので試すことができますし、今回使った脆弱性診断ツールも対応しています。

ただしユーザのVMには対策が必要です。しかし、カーネルアップデートはデリケートな問題です。 もちろん脆弱性などない環境に越したことはありませんが、システム停止につながってしまっては本末転倒。十分に検証を行ってからアップデートを行いましょう。