エクスプロイト&脆弱性
UPnPが有効化された家庭向けコネクテッドデバイスを対象に既知の脆弱性を調査
2019年の初め、メディアストリーミング用デバイス「Chromecast」、スマートスピーカー「Google Home」、そしてスマートTVがハッキングを受け、YouTubeアカウント「PewDiePie」の宣伝動画が再生されるという事例がありました。背後にいるハッカーは、現在進行中のチャンネル登録者獲得競争の一部として、UPnP(Universal Plug and Play)の設定に不備があるルータを利用してこの攻撃を行ったと報告されています。
2019年の初め、メディアストリーミング用デバイス「Chromecast」、スマートスピーカー「Google Home」、そしてスマートTVがハッキングを受け、YouTubeアカウント「PewDiePie」の宣伝動画が再生されるという事例がありました。背後にいるハッカーは、現在進行中のチャンネル登録者獲得競争の一部として、UPnP(Universal Plug and Play)の設定に不備があるルータを利用してこの攻撃を行ったと報告されています。 UPnPは、ネットワークカメラ、プリンタ、そしてルータのようなローカルネットワーク内のデバイスがその他のデバイスを自動認識しデータ共有やメディアストリーミングなどのために相互通信する技術です。UPnPはIPに基づいたネットワークプロトコルを使用して通信します。デバイスをネットワークに接続するだけですぐに利用できるという利便性の反面、UPnPにセキュリティ上の欠陥があった場合、攻撃者にデバイスの管理やファイアウォールの回避などを許してしまう結果となります。 上述したハッキング事例を受け、トレンドマイクロは家庭用ネットワークにおけるUPnP関連のイベントを調査しました。本記事ではこの調査の結果と、既知のUPnPの脆弱性について解説します。
■UPnPを有効化しているデバイスの割合
表1は、トレンドマイクロが提供する無料オンラインスキャンツールから収集した2019年1月のデータに基き、UPnPが有効化されている主なデバイスを種類別に集計したものです。
デバイスの種類 | デバイス数 | UPnPが有効化されているデバイス数 | UPnPが有効化されているデバイスの割合(%) |
ルータ | 46,614 | 35,400 | 76% |
メディアデバイス | 21,496 | 5,832 | 27% |
ゲームコンソール | 5,138 | 960 | 19% |
PC | 33,173 | 5,778 | 17% |
NAS | 4,333 | 474 | 11% |
カメラ | 2,105 | 189 | 9% |
スマートTV | 10,005 | 503 | 5% |
プリンタ | 17,265 | 568 | 3% |
表1:UPnPが有効化されている主なデバイスの種類と有効化されている割合(%)
表1のように、ルータの約76%、DVDプレイヤーやメディアストリーミングデバイスのようなメディアデバイスの約27%でUPnPが有効化されていました。UPnPの実装に脆弱性が存在する場合、ルータやその他のデバイスは、ボットネットの構築や分散型サービス拒否(distributed denial-of-service、DDoS)、スパムメールの送信といった攻撃の踏み台として利用される恐れがあり、不正活動の発信源の追跡はほぼ不可能となります。
■脆弱なUPnPを利用した攻撃事例
脆弱なUPnPの実装を利用した攻撃は、ルータに接続したデバイスのポートがインターネットに開放された事例や、スパムメール送信のために広く利用されているメールサービスと通信するボットネットの事例のように、これまでも多く報告されています。 その一例がIoTボットネット「Satori」です。SatoriはRealtek SDK miniigd UPnP SOAPインターフェイスでコマンド注入が可能になる脆弱性「CVE-2014-8361」を利用します。この脆弱性に関するセキュリティ勧告は、適用可能な回避策と共に2015年5月に公開されていますが、調査によって収集したデータは、依然として多くのデバイスが脆弱性を持つ古いバージョンのUPnPを使用していることを示しています。
■インターネットに露出したUPnP
トレンドマイクロは、インターネットに接続したデバイスを対象とするオンライン検索エンジン「Shodan」に調査の範囲を広げました。UPnPが標準的に使用する1900番ポートを検索したところ、2019年3月5日の時点で1,649,719件の検索結果が表示されました。
図1:インターネットに露出した1900番ポート (2019年3月5日時点でのShodanの検索結果)
Shodanの検索結果からはよく知られているUPnPのライブラリも確認することができました。中でも「MiniUPnPd」と、「Broadcom」のUPnPライブラリ「Custom」が検索結果の上位となりました。
UPnPライブラリ | 割合(%) |
MiniUPnPd | 35% |
Custom | 20% |
LibUPnP(Portable SDK/Intel SDK) | 1% |
表2:UPnPライブラリのトップ3 (2019年3月5日時点のShodan検索結果)
■UPnPライブラリの脆弱性と家庭および小規模ネットワークでの使用状況
トレンドマイクロは、独自のスキャンツールを使用し、家庭および小規模ネットワーク環境で使用されているUPnPについて調査し、それらのデバイスが攻撃に対して脆弱となり得る要因を特定しました。その要因とは、端的に言ってほとんどのデバイスが古いバージョンのUPnPライブラリを使用していることです。UPnPに関連した脆弱性は数年前から確認されているため、新しいバージョンに更新されていない場合、攻撃に対して脆弱なままとなっています。
MiniUPnPd
スキャンツールを使用した調査の結果、UPnPを有効化しているデバイスの16%がMiniUPnPdを使用していました。MiniUPnPdは、NAT(Network Address Translation)ルータにポートマッピングサービスを提供するよく知られたUPnPデーモンです。興味深いことに、ほとんどのデバイスが古いバージョンのMiniUPnPdを使用していました。約24%がMiniUPnP 1.0、そして約30%がMiniUPnP 1.6を使用し、約5%のデバイスだけが2.xを使用していました。本記事執筆時点(2019年3月6日)での最新バージョンは2.1です。
バージョン | 割合(%) |
miniupnpd 1.0 | 24.47% |
miniupnpd 1.1 | 0.00% |
miniupnpd 1.2 | 0.28% |
miniupnpd 1.3 | 0.49% |
miniupnpd 1.4 | 3.68% |
miniupnpd 1.5 | 10.81% |
miniupnpd 1.6 | 29.98% |
miniupnpd 1.7 | 4.23% |
miniupnpd 1.8 | 8.48% |
miniupnpd 1.9 | 11.34% |
miniupnpd 2.0 | 4.96% |
miniupnpd 2.1 | 0.39% |
その他 | 0.89% |
合計 | 100.00% |
表3:MiniUPnPd のバージョン内訳
MiniUPnPdの古いバージョンでは危険度の高い脆弱性が確認されています。例えば、MiniUPnPd 1.0では、「ExecuteSoapAction」関数におけるスタックベースのバッファオーバーフロー脆弱性「CVE-2013-0230」によって任意のコード実行が可能になります。1.4より前のMiniUPnPdでは、「ProcessSSDPRequest」関数の脆弱性「CVE-2013-0229」によって、細工したリクエストを介したバッファオーバーリードにより、遠隔からのサービス拒否(DoS)攻撃が可能になります。2.0より前のMiniUPnPdでは、初期化されていないスタック変数の脆弱性「CVE-2017-1000494」によってセグメンテーション違反とメモリ破壊が発生し、DoS攻撃が可能になります。
Windows UPnP Server
UPnPを有効化しているデバイスの約18%はWindowsベースのUPnPを利用していました。Windows XP(Windows NT 5.1)のWindows UPnP Serverでは、同一サブネット内の遠隔の攻撃者が任意のコードを実行可能になるメモリ破壊脆弱性「CVE-2007-1204」が確認されています。この脆弱性に対処する修正プログラム「MS07-019」は2007年4月に公開されています。Windows XPのサポートは2014年4月に終了していることに留意してください。
libupnp
UPnPを有効化しているデバイスの約5%で「libupnp(portable SDK for UPnP Devices)」が確認されました。libupnpは、複数のOSに対応したよく知られたUPnPライブラリです。5%という数字は大きなものではありませんが、そのほとんどで1.6.18または1.6.19よりも古いバージョンが使用されていました。1.6.18より前のバージョンでは、、「unique_service_name」関数におけるスタックベースのバッファオーバーフロー脆弱性「CVE-2012-5958」が確認されています。この脆弱性を利用すると、遠隔の攻撃者はUDP(User Datagram Protocol)パケットを介して任意のコードを実行することが可能になります。本記事執筆時点の最新バージョンは1.8.4です。
■被害に遭わないためには
UPnPに関連した脆弱性や感染の有無を判断することは一般のユーザにとっては難しいかもしれません。デバイスの中にはNATの後ろに隠れているものもあり、もし脆弱性が存在していても、ユーザはその影響をすぐに確認することができません。UPnPに関連した脆弱性を利用する攻撃を防ぐために、ユーザはデバイスのファームウェアが更新されていることを確かめてください。もし感染の疑いがある場合、当該デバイスを再起動するか、慎重を期して工場出荷時の設定に戻す必要があります。UPnPを利用しない場合は、設定上可能であれば無効化することが推奨されます。ただし、UPnPを無効化することによって、ローカルデバイスの認識のような機能が使用できなくなることに留意してください。
■トレンドマイクロの対策
家庭用ネットワークのユーザは以下の手順でUPnPの設定を変更することが可能です。
- 「オンラインスキャン for Home Network」を使用し、UPnPが使用する1900番ポートが開放されているか確認
- デバイスの設定ページでUPnPを無効化
- 必要であればポートフォワーディングの設定を変更
トレンドマイクロの「Trend Micro Smart Home Network™」を搭載したルータや、家庭用ルータを中心に構成されるホームネットワークを保護する「ウイルスバスター for Home Network」では、トレンドマイクロがクラウド上に保有するWebレピュテーションデータベースと連携し、フィッシング詐欺サイトやウイルスの配布サイトなど不正サイトへのアクセスをブロックします。また、家庭内に接続されている各デバイスへの脆弱性を悪用する攻撃をネットワークレイヤでブロックし、ルータなどの脆弱性を悪用する攻撃に対応します。 組込み型ホームネットワークセキュリティ「Trend Micro Smart Home Network™」をご利用のお客様は、以下の侵入防御ルールによって保護されています。
- 1134286 WEB Realtek SDK Miniigd UPnP SOAP Command Execution (CVE-2014-8361)
- 1134287 WEB Huawei Home Gateway SOAP Command Execution (CVE-2017-17215)
参考記事:
- 「UPnP-enabled Connected Devices in the Home and Unpatched Known Vulnerabilities」 by Tony Yang (Home Network Researcher)
翻訳: 澤山 高士(Core Technology Marketing, TrendLabs)