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のリフレクション攻撃の踏み台になりうる不具合が確認できたと考える。
  FWバージョン 結果
1. Ver.1.10(R10.05/B3.00) DNSクエリに対してRefusedを返す
2. Ver.1.50(R13.32/B3.00) DNSクエリに対して応答しない
なお本検証手順の環境では応答がRefusedとなるが、WAN側にDNSサーバを構築すれば正常に名前解決がされて、オープンリゾルバの挙動を取ることも確認している。 ちなみに1.についてnmapでポートの状態を確認すると、下記のようにopenであった。2.の場合はopen|filteredとなる。
# 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

最後に

最後に個人的な考えを。読売新聞はインターネットをよくする取り組みに貢献したともいえるが、8/2の記事の内容では、結果的にBAFFALO一社のみを攻撃する事態となってしまった。おそらく売り上げにも影響があったことだろう。 サイバー攻撃を助長する不具合は、さまざまなインターネット接続機器に実在する。我々情報セキュリティ技術者は、よりよいインターネットをつくるため、新聞をはじめメディアの力、そして国や捜査機関の力をうまく活用してこうした不具合を減らす取り組みをするべきだが、その際に特定の企業が不利益になることを最低限に抑えなければならない。