
Meltdown エクスプロイト / 概念実証 / システムがVariant 3: rogue data cache load(CVE-2017-5754)、別名MELTDOWNの影響を受けるかどうかをチェックします。

概念実証 /
エクスプロイト /
システムがVariant 3: rogue data cache load(CVE-2017-5754)、別名MELTDOWNの影響を受けるかどうかをチェックします。
基本的なアイデアは、実行中のシステムが、例えばKAISERパッチセット(https://lkml.org/lkml/2017/10/31/884)のようなもので適切にパッチされているかどうかを、ユーザーが知ることができるようにすることです。
Meltdownの概念実証を解説した私のブログ記事もご覧ください: http://funwithbits.net/blog/programmers-guide-to-meltdown/
*** 現在はLinuxでのみ動作します ***
/proc/kallsyms を使用してシステムコールテーブルを見つけ、MELTDOWNを悪用して見つけたシステムコールのアドレスが、/proc/kallsyms 内の対応するアドレスと一致するかをチェックすることで動作します。
クローンして、make を実行してプロジェクトをコンパイルし、meltdown-checker を実行します:
git clone https://github.com/raphaelsc/Am-I-affected-by-Meltdown.git
cd ./Am-I-affected-by-Meltdown
make
taskset 0x1 ./meltdown-checker
Unable to read /proc/kallsyms...
これは、システムが /proc/sys/kernel/kptr_restrict を 1 に設定しており、プログラムによる /proc/kallsyms 内のカーネルシンボルの読み取りを妨げている可能性があるためです。
次のコマンドで解決できます:
sudo sh -c "echo 0 > /proc/sys/kernel/kptr_restrict"
Unable to read /boot/System.map-.
これはおそらく、システムが /boot をマウントしていないためです。このプログラムはそのパーティションに依存しているため、先に /boot パーティションをマウントする必要があります。
このシナリオで別のアプローチにフォールバックする方法についてアイデアがあれば、issueを開いてください。

Checking whether system is affected by Variant 3: rogue data cache load (CVE-2017-5754), a.k.a MELTDOWN ...
Checking syscall table (sys_call_table) found at address 0xffffffffaea001c0 ...
0xc4c4c4c4c4c4c4c4 -> That's unknown
0xffffffffae251e10 -> That's SyS_write
System affected! Please consider upgrading your kernel to one that is patched with KAISER
Check https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html for more details