Posted at

CVE-2016-7117脆弱性のチェックと対応

More than 1 year has passed since last update.


この記事は


  • Linuxカーネルのやばげな脆弱性CVE-2016-7117の対応をした時のメモです


CVE-2016-7117

この辺によると、


Linux Kernel の net/socket.c の __sys_recvmmsg 関数には、解放済みメモリの使用 (Use-after-free) により、任意のコードを実行される脆弱性が存在します。


で、


基本値: 10.0 (危険) [NVD値]

攻撃元区分: ネットワーク

攻撃条件の複雑さ: 低

攻撃前の認証要否: 不要

機密性への影響(C): 全面的

完全性への影響(I): 全面的

可用性への影響(A): 全面的

[参考] CVSS v3 による深刻度

基本値: 9.8 (緊急) [NVD値]

攻撃元区分: ネットワーク

攻撃条件の複雑さ: 低

攻撃に必要な特権レベル: 不要

利用者の関与: 不要

影響の想定範囲: 変更なし

機密性への影響(C): 高

完全性への影響(I): 高

可用性への影響(A): 高


なんかやばそうですね。。


再現・影響チェック


reproducerツール



  • RedhatのBugzillaを見ていたところ、この投稿にreproducerツールがついていました。

  • これを使うことで、脆弱性の再現=チェックができるようです


ツールのコンパイル


  • 下記の手順でコンパイルします

# wget https://bugzilla.redhat.com/attachment.cgi?id=1227131 -O try_recvmmsg.c

# yum install -y glibc-static
# gcc -Wall -Werror -pthread -static try_recvmmsg.c -o try_recvmmsg


  • 若干warningが出たりしますが、try_recvmmsgという実行ファイルがカレントディレクトリに出力されます


ツールの実行


  • 単発で実行してみます

# ./try_recvmmsg 

++ running!
++ no panic? got hello!.


  • このメッセージが出た時点でだめっぽいです

  • 下記のように大量実行すると、数分後にサーバがハングして謎のメッセージがたくさん出ました

# while true;do ./try_recvmmsg; done


カーネルアップデート


  • アップデートします

# yum update


ツールの再実行


  • 再度実行してみると何もメッセージが出なくなっていました。直ったのでしょう。

# ./try_recvmmsg 

(何も出ない)