2018/01/26

盾とお化けのLinux用チェックツールを試した件

広範なCPUで影響を受ける “スペクター(スペクトレではない)” と “メルトダウン” の問題の影響を現在も受けるかどうかが気になっていたので、Linuxで使えるチェックツールを試してみた。

  1. GNU/Linux向けのチェックツール
  2. 使用結果 (Ubuntu 17.10上)

GNU/Linux向けのチェックツール

GitHub上で公開されているLinux用チェックツールがあり、リリース一覧からリリース版をダウンロードするか、spectre-meltdown-checker.shのリンクをたどってソースが表示されているページから “Raw” をたどったURLから直接ダウンロード後に実行属性を付けておく。

これは管理者権限で実行する必要があり、実行中のカーネルについてのみチェックが行われる。

2018年1月時点では頻繁に更新されているので、使う前にはできるだけ最新バージョンを確認する。

使用結果 (Ubuntu 17.10上)

$ sudo ./spectre-meltdown-checker-0.32/spectre-meltdown-checker.sh
Spectre and Meltdown mitigation detection tool v0.32

Checking for vulnerabilities against running kernel Linux 4.13.0-31-lowlatency #34-Ubuntu SMP PREEMPT Fri Jan 19 17:27:03 UTC 2018 x86_64
CPU is  Intel(R) Pentium(R) CPU G4400 @ 3.30GHz

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  YES
> STATUS:  NOT VULNERABLE  (114 opcodes found, which is >= 70, heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation
*     The SPEC_CTRL MSR is available:  NO
*     The SPEC_CTRL CPUID feature bit is set:  NO
*   Kernel support for IBRS:  YES
*   IBRS enabled for Kernel space:  NO
*   IBRS enabled for User space:  NO
* Mitigation 2
*   Kernel compiled with retpoline option:  NO
*   Kernel compiled with a retpoline-aware compiler:  NO
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES
* PTI enabled and active:  YES
* Checking if we're running under Xen PV (64 bits):  NO
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

A false sense of security is worse than no security at all, see --disclaimer

端末のスクリーンショット

重要なのが “STATUS:” の行で

  • CVE-2017-5753: Spectre Variant 1
  • CVE-2017-5715: Spectre Variant 2
  • CVE-2017-5754: Meltdown (別名 Variant 3)

の3つに分類されるセキュリティ問題についてそれぞれ

  • NOT VULNERABLE: 問題なし(緑背景)
  • VULNERABLE: セキュリティ問題が未対策である(赤背景)

のいずれかが表示される。 “Mitigation” という言葉はセキュリティ問題による影響を軽減・緩和させるための対処を示し、複数の緩和策が見つかっている問題もある。

OS側での対処は他のOSでも行われているが、GNU/Linuxでは本家のカーネル開発において対処が試みられ、各ディストリに更新が提供されているところ。

Ubuntu 17.10ではカーネルの更新により、手元のG4400では “Spectre Variant 2” 以外は安全との結果が出るようになっているが、Web上にはこれと同じ結果が出る状態でも対策前と比較して性能低下が確認(測定)されたとの報告が見られる。

“Spectre Variant 2” については、 “CPUの脆弱性[Spectre], [Meltdown] は具体的にどのような仕組みで攻撃する?影響範囲は?” によると、発見したチームによる検証では攻撃が成立するための条件が現実離れした環境(攻撃への利用が非常に困難と考えられる)であり、更に、手元のCPUが “Intel Hyper-Threading” には対応していない上に日常のデスクトップ用途での使用なのだが、これを実質的に安全と解釈してよいものかは自分の理解度では何とも言えない。しばらくは情報を集めながら様子を見ることになりそう。

なお、ここではカーネルのテストを行ったが、Webブラウザなど各種アプリケーションからもこれらの問題による影響を受けにくくする緩和策が色々なプロジェクトから行われているところで、それらを早期に適用(最新バージョンに更新)するのも重要となる。例えば、Firefoxは57.0.4以上、Chrome系は64以上のバージョンに早めに上げておく。

使用したバージョン:
  • Linux 4.13.0-31-lowlatency
  • Spectre and Meltdown mitigation detection tool 0.32