Ubuntu 確認方法 – 近代的CPUの脆弱性

2018.7.25 追記
実行結果のサンプルについては、Fedora 確認方法 – 近代的CPUの脆弱性も併せてご参照ください。

目次

確認方法

下記サイトに確認方法のサンプルが記載されていました。
dmesg と proc/cpuinfo を利用するものなので、他ディストリビューションでも利用できます。

base on kernel - How to check that KPTI is enabled on my Ubuntu? - Ask Ubuntu

  • /proc/cpuinfo
    grep -q "cpu_insecure|cpu_meltdown|kaiser" /proc/cpuinfo && echo "patched :)" || echo "unpatched :("
  • dmesg
    dmesg | grep -q "Kernel/User page tables isolation: enabled" && echo "patched :)" || echo "unpatched :("

確認環境

Spec Details
OS Lubuntu 16.04.4 LTS x64
CPU Celeron Processor 847 (2M Cache, 1.10 GHz)
MEM 8GB

実行サンプル

$ dmesg | grep -q "Kernel/User page tables isolation: enabled" && echo "patched :)" || echo "unpatched :("
patched :)

私が確認した時は、dmesg の183行目に「Kernel/User page tables isolation: enabled」の表記があり、KPTI が有効になっていることを確認できました。

$ grep -q "cpu_insecure\|cpu_meltdown\|kaiser" /proc/cpuinfo && echo "patched :)" || echo "unpatched :("
patched :)

私の環境では、proc/cpuinfo の21行目に bugs 行があり、Meltdown・Spectre1・Spectre2 が認識されていました。
(bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass)。

なお、cpu_insecureは安全でないことを表すフラグです。
cpuinfo に当該表記があれば脆弱性を認識している、という確認方法です。

vulnerabilities(脆弱性)情報ディレクトリ

下記に情報ファイルが作成されているので、こちらを見ても確認できます。

  • /sys/devices/system/cpu/vulnerabilities
$ ls -lh /sys/devices/system/cpu/vulnerabilities/
合計 0
-r--r--r-- 1 root root 4.0K  6月 20 15:18 meltdown
-r--r--r-- 1 root root 4.0K  6月 20 15:18 spec_store_bypass
-r--r--r-- 1 root root 4.0K  6月 20 15:18 spectre_v1
-r--r--r-- 1 root root 4.0K  6月 20 15:18 spectre_v2

Meltdown・Spectre の区別が付きづらいので、表にしました。

脆弱性
CVE識別番号
脆弱性の属性 別名
spectre_v1
CVE-2017-5753
Variant 1 bounds check bypass (BCB)
spectre_v2
CVE-2017-5715
Variant 2 branch target injection (BTI)
meltdown
CVE-2017-5754
Variant 3 rogue data cache load (RDCL)
meltdown
CVE-2018-3640
Variant 3a rogue system register read (RSRE)
spec_store_bypass
CVE-2018-3639
Variant 4 Speculative Store Bypass (SSB), SpectreNG

※CVE識別番号 : 共通脆弱性識別子CVE (Common Vulnerabilities and Exposures) と呼ばれ、脆弱性情報が集められた辞書から採番されたユニークなID。

各ファイルの中身

各ファイルには、対応有無が記載されています。

$ cat /sys/devices/system/cpu/vulnerabilities/meltdown
Mitigation: PTI

$ cat /sys/devices/system/cpu/vulnerabilities/spec_store_bypass
Vulnerable

$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v1
Mitigation: OSB (observable speculation barrier, Intel v6)

$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Full generic retpoline, IBPB (Intel v4)

spec_store_bypass(Variant 4) が Vulnerable(脆弱性あり) と診断されています。

これについては、公式サイトでアナウンスがあります。
サイト内には実際のパッチ配布ページヘのリンクが貼られています。

base on SecurityTeam/KnowledgeBase/Variant4 - Ubuntu Wiki
last edited 2018-06-12 20:40:44
Update Status

Ubuntu users are recommended to update to the latest kernel, qemu, libvirt, and intel-microcode packages.
Ubuntu 18.04 LTS, 17.10, 16.04 LTS, and 14.04 LTS were affected. 12.04 ESM remains affected but updates are in progress.

INTEL
The required intel-microcode updates are not available at this time. Canonical will continue to work with Intel and release intel-microcode updates once they're production ready.

AMD
Additional QEMU, libvirt, and kernel updates were released to allow virtual machines to make use of SSBD support with x86 AMD processors.

Verifying Your System

To check if your system is protected against CVE-2018-3639, you can run the following command and compare the output:

$ cat /sys/devices/system/cpu/vulnerabilities/spec_store_bypass
Mitigation: Speculative Store Bypass disabled via prctl and seccomp

The example above shows a system that is mitigated against CVE-2018-3639.

A system that is not running an updated kernel will not have the file indicating the vulnerability status and the system should be considered vulnerable:

$ cat /sys/devices/system/cpu/vulnerabilities/spec_store_bypass
cat: /sys/devices/system/cpu/vulnerabilities/spec_store_bypass: No such file or directory

If the file exists but the system does not have updated microcode, or an updated hypervisor in the case of a virtual machine, the output will indicate that the system is vulnerable:

$ cat /sys/devices/system/cpu/vulnerabilities/spec_store_bypass
Vulnerable


最新状況

Ubuntuユーザーは、最新のカーネル、qemu、libvirt、およびintel-microcodeパッケージに更新することをお勧めします。
Ubuntu 18.04 LTS、17.10,16.04 LTS、および14.04 LTSが影響を受けました。 12.04 ESMは影響を受けますが、更新は進行中です。

INTEL
必要なインテルマイクロコードの更新は現時点では利用できません。 Canonicalは引き続き、インテルと協力し、生産準備が整い次第、インテルマイクロコードのアップデートをリリースします。

AMD
仮想マシンがx86 AMDプロセッサーでSSBDサポートを利用できるように、追加のQEMU、libvirt、およびカーネルのアップデートがリリースされました。

システムの確認

システムがCVE-2018-3639に対して保護されているかどうかを確認するには、次のコマンドを実行して出力を比較します。

$ cat/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
Mitigation: Speculative Store Bypass disabled via prctl and seccomp

上記の例は、CVE-2018-3639に対して緩和されたシステムを示しています。

更新されたカーネルを実行していないシステムには、脆弱性の状態を示すファイルがないため、システムは脆弱であるとみなされます。

$ cat /sys/devices/system/cpu/vulnerabilities/spec_store_bypass
cat: /sys/devices/system/cpu/vulnerabilities/spec_store_bypass: No such file or directory

ファイルが存在するが、システムに更新されたマイクロコードがない、また仮想マシンの場合は更新されたハイパーバイザがない場合、出力はシステムが脆弱であることを示します。

$ cat /sys/devices/system/cpu/vulnerabilities/spec_store_bypass
Vulnerable

脆弱性の解説

ファイルは存在するので、上記、公式サイト引用部分の最後に該当します。
つまり、CPUのマイクロコードがあたっていないというメッセージです。
メーカーから配布されていないので・・・。

文末に記載した公式サイトを確認すると、配布カーネルよりも新しいものが適用されています。

  • linux-image-4.13.0-43-generic - 4.13.0-43.48~16.04.1
$ uname -r
4.13.0-45-generic

おまけ

カーネル更新

dist-upgrade でカーネル更新できます。

base on Security/Upgrades - Ubuntu Wiki
last edited 2011-10-12 21:02:00

$ sudo apt-get update
$ sudo apt-get dist-upgrade
パッチ配布

Ubuntu 16.04 のシステムに適用するには、公式サイトからアクセスできます。

リンクを辿って行くと、ファイルは Launchpad で公開されています。