Nessusで遊んでいて、「まったくパッチのあたっていないCentOS6.0」を診断してみたら、カーネルパニックで落ちてしまった。こういうことは、たまに(まれに)あって、流石にインターネットからだと滅多にないけど、ローカルから診断するとポートスキャンだけでもサーバーがダウンすることがある。久しぶりに見かけたし、手元の環境では初めてだったので、追いかけることにした。
デーモンが落ちるのではなくカーネルがいきなり落ちることから、NFSかなと思って切り分けたらビンゴだった。NFS単体の脆弱性ではなく(という言い方は変か、とにかくNFS関連のモジュール)、カーネルの脆弱性(どれだろう)のようだ。NFSサーバーではなく、クライアントとしてNFSマウントしているだけで落ちる。
netstat でNFSが開いてるポートを探して
$ sudo netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10022 0.0.0.0:* LISTEN 1159/sshd
tcp 0 0 0.0.0.0:49862 0.0.0.0:* LISTEN 1086/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1060/rpcbind
tcp 0 0 0.0.0.0:41523 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 1306/0
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1235/master
tcp 0 0 0.0.0.0:220 0.0.0.0:* LISTEN 1159/sshd
上記の場合だと、PIDが - になっている41523ポートにnmapをかけてやる
nmap -A -p 41523 192.168.0.24
この手順で100%クラッシュする。
Kernelのパッチをあてるとクラッシュしなくなるので筋は通っているのだけど、一つ疑問なのは、「いくらなんでも弱すぎないか」ということで、CentOS6+NFSなんて極めてありふれた環境で、ポートスキャンかけただけで落ちるのでは、すぐに問題になったと思うのだけれど、どうなんでしょうか。
追記
- YouTube動画制作した: まったくパッチのあたっていないCentOS6を脆弱性診断したら驚きの結果に
- 再検証したところ、CentOS6.0の64ビット版では再現せず、32ビット版では再現することがわかった