Linux kernelに脆弱性「CVE-2016-5195」(別名:Dirty COW)が報告されました。
とは言っても、古くから存在していたバグで11年前に一度は修正が試みたものの、S390アーキテクチャーで問題が発生したために修正できなかったまま放置されていた模様です。
※Source:kernel/git/torvalds/linux.git – Linux kernel source tree(Accessed Oct 28)
この脆弱性は、Linux kernelのメモリサブシステムにおいて「copy-on-write(COW)」を処理する方法に起因しており、権限を持たないユーザーがRead-Onlyメモリへの書込可能な権限を取得できてしまうことにより、システム上のroot権限を取得される可能性があるそうです。
先週から注目していましたが、CentOS 7や6にパッチが降りてきたので、記事にしました。
参考サイト
- Dirty COW (CVE-2016-5195)
- Linux カーネルのメモリサブシステムに実装されている copy-on-write 機構に競合状態が発生する脆弱性
- CVE-2016-5195 – Red Hat Customer Portal
対策
各ディストリビューターが提供する情報に従って、パッチを適用することです。
例:CentOS 7系の場合、「kernel-3.10.0-327.36.3.el7.x86_64」
診断
筆者の環境はCentOSなので、RedHat社提供の診断ツールを使用しました。
(配布元:https://access.redhat.com/security/vulnerabilities/2706661)
▼ 診断ツールをダウンロード
wget https://access.redhat.com/sites/default/files/rh-cve-2016-5195_2.sh
--2016-10-25 10:41:29-- https://access.redhat.com/sites/default/files/rh-cve-2016-5195_2.sh
...(略)
2016-10-25 10:41:29 (38.5 MB/s) - `rh-cve-2016-5195_2.sh' へ保存完了 [16478/16478]
▼ パッチ適用前
bash ./rh-cve-2016-5195_2.sh
Your kernel is 3.10.0-327.36.1.el7.x86_64 which IS vulnerable.
Red Hat recommends that you update your kernel. Alternatively, you can apply partial
mitigation described at https://access.redhat.com/security/vulnerabilities/2706661 .
▼ パッチ適用後
bash ./rh-cve-2016-5195_2.sh
Your kernel is 3.10.0-327.36.3.el7.x86_64 which is NOT vulnerable.
検証
GitHubにてPoCを公開しています。
dirtycow (DirtyCow) · GitHub
検証方法
root以外の一般ユーザーでシステムにログインして、以下の手順で検証しました。
※dirtyc0w.cで検証しました。
▼ 上記リンク先のコードを記述
vi dirtyc0w.c
sudo -s
echo this is not a test > foo
chmod 0404 foo
exit
exit
ls -lah foo
-r-----r-- 1 root root 19 10月 25 11:14 foo
cat foo
this is not a test
gcc -lpthread dirtyc0w.c -o dirtyc0w
./dirtyc0w foo m00000000000000000
mmap 7fdadfb33000
...(略)
▼ 脆弱性がある場合(書き換えられている)
cat foo
m00000000000000000
▼ 脆弱性がない場合orパッチ適用後(書き換えられていない)
cat foo
this is not a test
※他のPoCも公開されています。
PoCs · dirtycow/dirtycow.github.io Wiki · GitHub
まとめ
運用しているサービス次第では、それほど大きな影響を受けないかもしれません。
しかし、Linux kernelの脆弱性なので、影響範囲は大きく、予期しない方向に広がるかもしれません。
それに、記事公開日時点でRHEL 5には、パッチが公開されていないのが心配ですね。
CentOS 5系のサーバーもかなり多いでしょうし・・・。(筆者の勤務先もまだまだ現役ですし)
早くパッチが降りてきてくれることを祈っています。
【10/31 追記】CentOS 5系にもパッチが降りてきました。