BAFFALOの無線LANルータWHR-300HP2はオープンリゾルバとなるのか?
BAFFALOが、8/2の読売新聞の記事に対し公表した、無線LANルータがDNSのオープンリゾルバとなる不具合について確認する。
「ルーターがオープンリゾルバになっている」「プロバイダーのDNSサーバーに対して過剰なDNS要求が送られている」と指摘を受けました(WHR- 300HP2シリーズ、WHR-600Dシリーズ、WMR-300シリーズ) - アンサー詳細 | BUFFALO バッファロー
手元の環境で、当該不具合に起因すると思われる挙動が再現したため、その手順をメモしておく。
ネットワーク構成図
|------| |------| |------| | | LAN| |WAN | | | PC 2 |-----------------------|ROUTER|-----------------------| PC 1 | | |192.168.11.1 DHCP| |172.16.0.2 172.16.0.1| | |------| |------| |------|
無線LANルータはWHR-300HP2を採用した。本日時点でも大手電気店で購入できる。ただし購入時には不具合がすでに修正されたファームウェアがインストールされていた。
環境構築
WAN側インタフェースに接続するPCの設定
インターネットからのDNSクエリを擬似的に発生させるため、scapyおよびnmapをインストールしておく。IPアドレス等を以下のようにする。
IPADDR=172.16.0.2 NETMASK=255.255.255.0 GATEWAY=172.16.0.1
LAN側インタフェースに接続するPCの設定
無線LANルータの設定はLAN側に接続したPCのウェブブラウザを利用して行う。無線LANルータがデフォルト設定のままであれば、「http://192.168.11.1」にアクセスし「admin/password」でログインしてアクセスできる。PCのIPアドレスはDHCPによる自動払い出しにしておく。
BAFFALOルータの設定
製品名:WHR-300HP2 Ver.1.10(R10.05/B3.00) 動作モード:ルータモードON インターネット: IPアドレス取得方法:手動設定 IPアドレス:172.16.0.1 サブネットマスク:255.255.255.0 デフォルトゲートウェイ:未設定 DNS(ネーム)サーバーアドレス プライマリー:未設定 Internet側からのPINGに応答しない:使用しない
本検証ではルータの起動直後の挙動を調査したいが、起動直後にPPPoEやルーティングの設定を扱うのが難しいため、WAN側のIPアドレスは手動設定とした。ファームウェアは、BAFFALOが不具合を公表したVer.1.10にダウングレードした。また、不具合が修正されていることを確認するため、現在最新のVer.1.50でも検証する。この他はデフォルト設定のまま。
検証手順
1. パケット生成ツールscapyによって、WAN側インタフェースに接続したPCからDNSのクエリを0.1秒毎に連射する。
# scapy >>> conf.L3socket = L3RawSocket >>> pkt = IP(dst='172.16.0.1',src='172.16.0.2')/UDP()/DNS(qd=DNSQR(qname='example.com'), rd=1) >>> ls(pkt)>>> srloop(pkt, inter=0.1)2. 無線LANルータを電源ケーブルの抜き差しで起動する。 3. 1〜2分ほど待ってから、無線LANのWAN側インタフェースからの応答の有無を確認する。 例. 応答なしの場合のscapyの挙動fail 1: IP / UDP / DNS Qry "example.com" fail 1: IP / UDP / DNS Qry "example.com" fail 1: IP / UDP / DNS Qry "example.com" fail 1: IP / UDP / DNS Qry "example.com" ・・・
例. 応答ありの場合のscapyの挙動RECV 1: IP / UDP / DNS Ans RECV 1: IP / UDP / DNS Ans RECV 1: IP / UDP / DNS Ans RECV 1: IP / UDP / DNS Ans ・・・
検証結果
起動直後から無線LANルータのWAN側インタフェースへDNSのクエリを投げ続けた場合の応答挙動を調べた。ファームウェアがVer.1.10の場合に、起動から約1分後にDNSの応答が起きることが確認できた。検証結果から、DNSのリフレクション攻撃の踏み台になりうる不具合が確認できたと考える。なお本検証手順の環境では応答がRefusedとなるが、WAN側にDNSサーバを構築すれば正常に名前解決がされて、オープンリゾルバの挙動を取ることも確認している。 ちなみに1.についてnmapでポートの状態を確認すると、下記のようにopenであった。2.の場合はopen|filteredとなる。
FWバージョン 結果 1. Ver.1.10(R10.05/B3.00) DNSクエリに対してRefusedを返す 2. Ver.1.50(R13.32/B3.00) DNSクエリに対して応答しない # nmap -p 53 -sU 172.16.0.1 Starting Nmap 5.51 ( http://nmap.org ) at 2014-XX-XX XX:XX JST Nmap scan report for 172.16.0.1 Host is up (0.00078s latency). PORT STATE SERVICE 53/udp open domain MAC Address: XX:XX:XX:XX:XX:XX (Unknown) Nmap done: 1 IP address (1 host up) scanned in 13.39 seconds