
UPnP(元々はUniversal Plug and Play )は、インターネットプロトコルに基づいたネットワークプロトコルのセットであり、 パーソナルコンピュータ、プリンタ、インターネットゲートウェイ、Wi-Fiアクセスポイント、モバイルデバイスなどのネットワークデバイスが、ネットワーク上で互いの存在をシームレスに検出して、機能的なネットワークサービスを確立することを可能にします[ 1 ] 。UPnPは主に、エンタープライズクラスのデバイスを含まない家庭用ネットワークを対象としています[ 2 ] 。公式には、UPnPとUPnP+の略称のみが商標登録されています[ 3 ] 。
UPnPは、ネットワークがIPで動作することを前提とし、IP上でHTTPを使用してデバイス/サービスの説明、アクション、データ転送、およびイベント通知を提供します。デバイス検索要求と広告は、マルチキャスト(HTTPMUとして知られる)を使用してUDP(ポート1900)上でHTTPを実行することでサポートされます。検索要求に対する応答もUDPで送信されますが、代わりにユニキャスト(HTTPUとして知られる)を使用して送信されます。
概念的には、UPnPはプラグアンドプレイ(デバイスをコンピュータに直接動的に接続する技術)を、住宅およびSOHOワイヤレスネットワーク向けのゼロコンフィギュレーションネットワークに拡張したものです[ 1 ] 。UPnPデバイスは、ネットワークに接続されると、他のデバイスとの動作構成を自動的に確立するため、ユーザーがIPアドレスを介してデバイスを手動で構成および追加する必要がなくなります。[ 4 ]
UPnPは、経済性、複雑さ、一貫性といった理由から、一般的にビジネス環境での導入には不向きだと考えられています。マルチキャストを基盤としているため通信量が多く、デバイス数の多いネットワークではネットワークリソースを過剰に消費します。また、簡素化されたアクセス制御は、複雑な環境にはうまく対応できません。
UPnPアーキテクチャは、家電製品、モバイルデバイス、パーソナルコンピュータ、ネットワーク接続された家庭用電化製品のデバイス間ネットワーク接続を可能にします。これは、インターネットプロトコルスイート(TCP/IP)、HTTP、XML、SOAPなどの確立された標準に基づいた分散型オープンアーキテクチャプロトコルです。UPnP制御ポイント(CP)は、UPnPプロトコルを使用してUPnP制御デバイス(CD)を制御するデバイスです。 [ 5 ]
UPnPアーキテクチャは、設定不要のネットワーク接続をサポートします。あらゆるベンダーのUPnP互換デバイスは、ネットワークに動的に参加し、IPアドレスを取得し、自身の名前を通知し、要求に応じて自身の機能をアドバタイズまたは伝達し、他のデバイスの存在と機能に関する情報を取得できます。DHCP (動的ホスト構成プロトコル)およびDNS(ドメインネームシステム)サーバーはオプションであり、ネットワーク上で利用可能な場合にのみ使用されます。デバイスは、状態情報を残さずにネットワークから自動的に切断できます。
UPnPは、2008年12月に73部からなる国際規格ISO/IEC 29341として発行されました。 [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ]
その他のUPnP機能は以下のとおりです。
UPnP は一般的なインターネット技術を使用します。ネットワークがインターネット プロトコル(IP) を実行する必要があることを前提とし、IP 上でHTTP、SOAP、XMLを使用して、デバイス/サービスの説明、アクション、データ転送、イベントを提供します。デバイス検索要求と広告は、マルチキャスト(HTTPMU として知られています)を使用してUDP上で HTTP を実行することでサポートされます。検索要求に対する応答も UDP で送信されますが、代わりにユニキャスト(HTTPU として知られています) を使用して送信されます。UPnP は、受信データの確認や破損したパケットの再送信を必要としないため、オーバーヘッドが低い UDP を使用します。HTTPU および HTTPMU 仕様は、当初インターネット ドラフトとして提出されましたが、2001 年に期限切れになりました。[ 12 ]これらの仕様は、その後実際の UPnP 仕様に統合されました。
UPnPはUDPポート1900を使用し、使用されるすべてのTCPポートはSSDPの生存メッセージと応答メッセージから派生しています。[ 13 ]
UPnP ネットワークの基盤は IP アドレスです。各デバイスは DHCP クライアントを実装し、デバイスが最初にネットワークに接続されたときに DHCP サーバーを検索する必要があります。DHCP サーバーが利用できない場合、デバイスは自身にアドレスを割り当てる必要があります。UPnP デバイスが自身にアドレスを割り当てるプロセスは、UPnP デバイス アーキテクチャではAutoIPとして知られています。UPnP デバイス アーキテクチャ バージョン 1.0 [ 6 ]では、 AutoIP は仕様自体で定義されています。UPnP デバイス アーキテクチャ バージョン 1.1 [ 7 ]では、 AutoIP はIETF RFC 3927を参照しています。DHCP トランザクション中に、デバイスが DNS サーバーまたはDNS フォワーディングを介してドメイン名を取得した場合、デバイスは後続のネットワーク操作でその名前を使用する必要があります。そうでない場合は、デバイスは IP アドレスを使用する必要があります。
デバイスがIPアドレスを確立すると、UPnPネットワークにおける次のステップは検出です。UPnP検出プロトコルは、シンプルサービス検出プロトコル(SSDP)として知られています。デバイスがネットワークに追加されると、SSDPによってそのデバイスはネットワーク上の制御ポイントにサービスを通知できるようになります。これは、SSDPアライブメッセージを送信することによって実現されます。制御ポイントがネットワークに追加されると、SSDPによってその制御ポイントはネットワーク上で関心のあるデバイスをアクティブに検索したり、デバイスからのSSDPアライブメッセージをパッシブに受信したりできるようになります。基本的なやり取りは、デバイスの種類、識別子、より詳細な情報へのポインタ(ネットワーク上の場所)など、デバイスまたはそのサービスに関するいくつかの重要な詳細情報を含む検出メッセージです。
制御ポイントがデバイスを検出した後も、デバイスに関する情報はほとんど得られません。制御ポイントがデバイスとその機能についてさらに詳しく知るため、またはデバイスとやり取りするためには、検出メッセージでデバイスから提供された場所 ( URL ) からデバイスの説明を取得する必要があります。UPnP デバイスの説明はXMLで表現されます。これには、モデル名と番号、シリアル番号、製造元名、ベンダー固有の Web サイトへの (プレゼンテーション) URL など、ベンダー固有の製造元情報が含まれます。説明には、組み込みサービスの一覧も含まれます。デバイスの説明ドキュメントには、各サービスについて、制御、イベント処理、およびサービスの説明の URL が一覧表示されます。各サービスの説明には、サービスが応答するコマンド(アクション)の一覧と、各アクションのパラメーター (引数)が含まれます。サービスの説明には、変数の一覧も含まれます。これらの変数は、実行時のサービスの状態をモデル化し、データ型、範囲、およびイベント特性の観点から説明されます。
デバイスの記述情報を取得した後、制御ポイントはデバイスのサービスにアクションを送信できます。これを行うには、制御ポイントは、デバイス記述情報に記載されているサービスの制御URLに適切な制御メッセージを送信します。制御メッセージは、 SOAP( Simple Object Access Protocol )を使用してXML形式で表現されます。関数呼び出しと同様に、サービスは制御メッセージに応答してアクション固有の値を返します。アクションの効果(存在する場合)は、サービスの実行時状態を表す変数の変更によってモデル化されます。
UPnP ネットワークのもう 1 つの機能は、イベント通知、またはイベント処理です。UPnP デバイス アーキテクチャで定義されているイベント通知プロトコルは、汎用イベント通知アーキテクチャ (GENA) として知られています。サービスの UPnP 記述には、サービスが応答するアクションのリストと、実行時にサービスの状態をモデル化する変数のリストが含まれます。サービスは、これらの変数が変更されると更新を公開し、制御ポイントはこの情報を受信するために購読できます。サービスは、イベント メッセージを送信することによって更新を公開します。イベント メッセージには、1 つ以上の状態変数の名前とその現在の値が含まれます。これらのメッセージは XML で表現されます。制御ポイントが最初に購読すると、特別な初期イベント メッセージが送信されます。このイベント メッセージには、すべてのイベント変数の名前と値が含まれており、購読者がサービスの状態のモデルを初期化できるようにします。複数の制御ポイントを持つシナリオをサポートするために、イベント処理は、すべての制御ポイントがすべてのアクションの影響について均等に通知されるように設計されています。したがって、すべての購読者にはすべてのイベントメッセージが送信され、購読者は変更されたすべての「イベント発生」変数に関するイベントメッセージを受信し、状態変数が変更された理由(要求されたアクションへの応答、またはサービスがモデル化している状態の変更)に関係なくイベントメッセージが送信されます。
UPnP ネットワークの最終ステップはプレゼンテーションです。デバイスにプレゼンテーション用の URL がある場合、制御ポイントはこの URL からページを取得し、Web ブラウザーにページを読み込み、ページの機能に応じて、ユーザーがデバイスを制御したり、デバイスの状態を表示したりできるようにします。[ 14 ]これらのそれぞれがどの程度実現できるかは、プレゼンテーション ページとデバイスの特定の機能によって異なります。
UPnP AVアーキテクチャは、UPnPのオーディオおよびビデオ拡張機能であり、テレビ、ビデオデッキ、CD/DVDプレーヤー/ジュークボックス、セットトップボックス、ステレオシステム、MP3プレーヤー、静止画カメラ、ビデオカメラ、電子ピクチャーフレーム(EPF)、パーソナルコンピュータなど、さまざまなデバイスをサポートしています。UPnP AVアーキテクチャにより、デバイスはMPEG2、MPEG4、JPEG、MP3、Windows Media Audio(WMA)、ビットマップ(BMP)、NTSC、PAL、ATSCフォーマットなど、さまざまなエンターテイメントコンテンツフォーマットをサポートできます。IEEE 1394、HTTP、RTP、TCP/IPなど、複数の種類の転送プロトコルがサポートされています。[ 15 ]
2006 年 7 月 12 日、UPnP フォーラムは、UPnP オーディオおよびビデオ仕様のバージョン 2 [ 16 ]を、 MediaServer (MS) バージョン 2.0 およびMediaRenderer (MR) バージョン 2.0 クラスとともにリリースすることを発表しました。これらの機能強化は、MediaServer および MediaRenderer デバイス クラスに機能を追加することによって実現され、異なるメーカーの製品間の相互運用性のレベルが向上します。これらの規格に準拠した初期のデバイスの一部は、PhilipsがStreamiumブランド名で販売しました。
2006年以降、UPnPオーディオおよびビデオデバイス制御プロトコルのバージョン3と4が公開されています。[ 17 ] 2013年3月には、更新されたデバイス制御プロトコルを組み込んだ更新されたUPnP AVアーキテクチャ仕様が公開されました。[ 15 ] UPnPデバイスアーキテクチャ2.0は2020年4月にリリースされました。
UPnP AV規格は、Digital Living Network Alliance Networked Device Interoperability Guidelines [ 18 ] 、 International Electrotechnical Commission IEC 62481-1 [ 19 ]、Cable Television Laboratories OpenCable Home Networking Protocol [ 20 ]など、他の組織が発行した仕様で参照されています。
一般的に、UPnPオーディオ/ビデオ(AV)アーキテクチャは以下で構成されます。[ 21 ]
AUPnP AVメディアサーバーは、メディアライブラリ情報を提供し、オーディオ、ビデオ、画像、ファイルなどのメディアデータをネットワーク上のUPnPクライアントにストリーミング配信するUPnPサーバー(「マスター」デバイス)です。写真、映画、音楽などのデジタルメディアを保存し、他のデバイスと共有するコンピュータシステムまたは同様のデジタル機器です。
UPnP AVメディアサーバーは、UPnP AVクライアントデバイス(いわゆるコントロールポイント)に対して、サーバーのメディアコンテンツを閲覧したり、再生のためにファイルをコントロールポイントに送信するようメディアサーバーに要求したりするためのサービスを提供します。
UPnPメディアサーバーは、ほとんどのオペレーティングシステムと多くのハードウェアプラットフォームで利用可能です。UPnP AVメディアサーバーは、ソフトウェアベースとハードウェアベースに分類できます。ソフトウェアベースのUPnP AVメディアサーバーはPC上で実行できます。ハードウェアベースのUPnP AVメディアサーバーは、 NASデバイスや、 DVRなどのメディア配信専用ハードウェア上で実行できます。2008年5月時点では、ハードウェアベースのサーバーよりもソフトウェアベースのUPnP AVメディアサーバーの方が多く存在していました。
NATトラバーサルを実現するソリューションの一つとして、インターネットゲートウェイデバイス制御プロトコル(UPnP IGD)があり、これはUPnPを介して実装されます。多くのルーターやファイアウォールはインターネットゲートウェイデバイスとして動作し、ローカルのUPnP制御ポイントから、デバイスの外部IPv4アドレスの取得、既存のポートマッピングの列挙、ポートマッピングの追加や削除など、さまざまな操作を実行できます。ポートマッピングを追加することで、IGDの背後にあるUPnPコントローラは、外部アドレスから内部クライアントへのIGDのトラバーサルを有効にできます。
非常に大規模で、実際には下位互換性のある IGDv1 および IGDv2 仕様の解釈の違いにより、多くの互換性の問題が生じています。その 1 つは、認定済みの IGDv2 ルーターを備えた現在の Microsoft Windows および Xbox システムに統合されている UPnP IGD クライアントです。互換性の問題は、 2001 年にWindows XPに IGDv1 クライアントが導入されて以来続いており、回避策のない IGDv2 ルーターではルーターのポート マッピングが不可能になります。[ 23 ]
UPnP がルーターのポート マッピングとピンホールの制御にのみ使用される場合、 PCPやNAT-PMPなど、より新しく、はるかにシンプルで軽量な代替プロトコルがあり、どちらも IETF によって RFC として標準化されています。これらの代替プロトコルは、異なるクライアントとサーバー間で互換性の問題があることはまだ知られていませんが、採用はまだ低いです。コンシューマー ルーターの場合、現在、UPnP の代替として PCP をサポートしていることが知られているのは、 AVMとオープンソース ルーター ソフトウェア プロジェクトOpenWrt、OPNsense、pfSense だけです。AVM のFritz!Box UPnP IGDv2 および PCP の実装は、導入以来バグが多く、多くの場合、動作しません。[ 24 ] [ 25 ] [ 26 ] [ 27 ] [ 28 ]
UPnP プロトコルは、デフォルトでは認証を実装していないため、UPnP デバイスの実装では、追加のデバイス保護サービス[ 29 ]を実装するか、デバイスセキュリティサービスを実装する必要があります。[ 30 ]また、UPnP デバイスとアプリケーションのユーザー認証および認可メカニズムを可能にする拡張機能を提案する、UPnP-UP (Universal Plug and Play – User Profile) [ 31 ] [ 32 ]と呼ばれる非標準のソリューションも存在します。多くの UPnP デバイスの実装には認証メカニズムがなく、デフォルトではローカル システムとそのユーザーは完全に信頼できるものと想定しています。[ 33 ] [ 34 ]
認証メカニズムが実装されていない場合、 UPnP IGD プロトコルを実行するルーターとファイアウォールは攻撃に対して脆弱です。たとえば、ブラウザのサンドボックス外で実行されるAdobe Flashプログラム (たとえば、セキュリティ上の問題が認識されている特定のバージョンの Adobe Flash が必要) は、特定のタイプのHTTPリクエストを生成することができ、UPnP IGD プロトコルを実装するルーターが、UPnP 対応ルーターを持つユーザーがその Web サイトにアクセスしたときに悪意のある Web サイトによって制御される可能性があります。[ 35 ]これは、UPnP の「ファイアウォールの穴あけ」機能にのみ適用され、ルーター/ファイアウォールが UPnP IGD をサポートしていない場合、またはルーターで無効になっている場合は適用されません。また、すべてのルーターで、UPnP によって DNS サーバー設定などを変更できるわけではありません。仕様の大部分 (LAN ホスト構成を含む) は、UPnP 対応ルーターではオプションとなっているためです。[ 9 ]その結果、セキュリティ対策として、一部の UPnP デバイスはデフォルトで UPnP が無効になっています。
2011年、研究者のダニエル・ガルシアは、インターネットからのUPnPリクエストを許可する一部のUPnP IGDデバイススタックの欠陥を悪用するように設計されたツールを開発しました。[ 36 ] [ 37 ]このツールはDEFCON 19で公開され、デバイスから外部IPアドレスへのポートマッピングリクエストとNATの背後にある内部IPアドレスを可能にします。この問題は世界中に広く蔓延しており、スキャンでは一度に数百万台の脆弱なデバイスが示されています。[ 38 ]
2013年1月、ボストンのセキュリティ企業Rapid7は、6か月にわたる研究プログラムについて報告した[ 39 ]。チームは、インターネット接続が可能であることを通知するUPnP対応デバイスからの信号をスキャンした。1500社の約6900のネットワーク対応製品が8100万のIPアドレスで要求に応答した。デバイスの80%は家庭用ルーターで、その他にはプリンター、ウェブカメラ、監視カメラなどがある。UPnPプロトコルを使用すると、これらのデバイスの多くにアクセスしたり操作したりすることができる。
2013年2月、UPnPフォーラムはプレスリリース[ 40 ]で、使用されているUPnPスタックのより新しいバージョンを推奨し、同様の問題が再発しないようにチェックを含めるように認証プログラムを改善することで対応しました。
UPnPは、デジタルホームネットワークで使用される唯一の重要なマルチキャストアプリケーションであることが多いため、マルチキャストネットワークの設定ミスやその他の不具合が、根本的なネットワークの問題ではなく、UPnPの問題として現れることがあります。
スイッチ、あるいはより一般的には無線ルーター/スイッチでIGMPスヌーピングが有効になっている場合、設定が不適切または不完全な場合(例えば、アクティブなクエリアやIGMPプロキシがない場合)、UPnP/DLNAデバイス検出(SSDP)に干渉し、UPnPが信頼できないように見えることがあります。
よく見られるシナリオとしては、サーバーまたはクライアント(スマートテレビなど)が電源投入後に表示され、IGMPグループメンバーシップの有効期限切れにより数分後(デフォルトでは多くの場合30分後)に消えるというものがあります。
2020年6月8日、また別のプロトコル設計上の欠陥が発表されました。[ 41 ]発見者によって「CallStranger」[ 42 ]と名付けられたこの欠陥は、攻撃者がイベント購読メカニズムを悪用し、DDoS攻撃で使用するためのリクエストの増幅、列挙、データ漏洩など、さまざまな攻撃を実行できるようにします。
OCFは2020年4月にプロトコル仕様の修正版を公開した。[ 43 ]しかし、UPnPを実行している多くのデバイスは簡単にアップグレードできないため、CallStrangerは今後も長期間脅威であり続ける可能性が高い。[ 44 ] CallStrangerは、その設計と実装のセキュリティ上の度重なる失敗により、エンドユーザーにUPnPを放棄するよう求める声を煽った。[ 45 ]
UPnPプロトコルは、UPnPフォーラム(1999年10月設立)[ 46 ]によって推進されました。これは、さまざまなベンダーのスタンドアロンデバイスやパーソナルコンピュータへのシンプルで堅牢な接続を可能にするためのコンピュータ業界のイニシアチブです。フォーラムには、家電製品からネットワークコンピューティングまで、あらゆる分野に関わる800社以上のベンダーが参加していました。2016年以降、すべてのUPnP関連の取り組みは、Open Connectivity Foundation(OCF)によって管理されています。
2008 年秋、UPnP フォーラムは UPnP 1.0 デバイス アーキテクチャの後継である UPnP 1.1 を承認しました。[ 47 ] Web サービス用デバイス プロファイル( DPWS) 標準は UPnP の後継候補でしたが、UPnP フォーラムは UPnP 1.1 を選択しました。IGD のバージョン 2 が標準化されています。[ 48 ]
UPnPインターネットゲートウェイデバイス(IGD)[ 9 ]標準には、 IETF標準ポート制御プロトコルと同様の機能を提供するWANIPConnectionサービスがあります。NAT -PMP仕様には、NAT-PMPとその後継であるPCPの作成を促したIGDP [ 49 ]の問題点のリストが含まれています。
UPnPデバイスアーキテクチャに関して、さらにいくつかの標準規格が定義されています。
urn:schemas-wifialliance-org:device:WFADeviceに関連する「WFAデバイス」()サービスのセットを定義しています。