UPnP (Universal Plug and Play) の仕組み、用途、セキュリティリスクを整理し、ホームネットワークで有効にすべきかを検討する。

UPnP とは

LAN 内のデバイスがルーターに対して 自動的にポートフォワーディングを要求 できるプロトコル。手動でルーターの管理画面からポート転送設定をしなくても、アプリやデバイスが必要なポートを自動で開放する。

インターネット → [ルーター:8080] → [LAN内デバイス:80]
                  ↑ UPnP で自動設定

ポートスキャンとの違い

ネットワーク監視ツールで行うポートスキャンとは視点が異なる。

手法 視点 わかること
ポートスキャン LAN 内部 → デバイス そのデバイスで何のポートが開いているか
UPnP マッピング確認 インターネット → ルーター 外部からどのポートが LAN 内に転送されているか

ポートスキャンで「LAN 内で SSH が動いている」とわかっても、それがインターネットに露出しているかはわからない。UPnP マッピングを確認して初めて、外部からの攻撃対象面がわかる。

UPnP を使うユースケース

用途 具体例 必要性
オンラインゲーム PS5/Switch の NAT タイプ改善 ゲーム機を使う場合は有効
P2P ファイル共有 BitTorrent クライアント ほぼ不要
メディアサーバー Plex の外部ストリーミング Plex を外部公開する場合のみ
ビデオ通話 旧世代の VoIP 現在は不要(後述)
IoT デバイス カメラの外部直接アクセス クラウド経由なら不要(後述)

現代では不要なケースが多い

多くのサービスは STUN/TURN/ICE(WebRTC 系の NAT 越え技術)やクラウド中継に移行しており、UPnP なしで動作する。

クラウド中継型(UPnP 不要)

Eufy カメラのようなクラウド経由のデバイスは、カメラ側からクラウドへアウトバウンド接続を張る。LAN 内から外への通信は NAT を越えられるため、ルーター側のポート開放は不要。

[スマホ] → [クラウドサーバー] ← [カメラ(LAN内)]
                                  アウトバウンド接続

NAT 越え技術(UPnP 不要)

Zoom、Google Meet、Discord などは STUN/TURN で NAT を越える。UPnP に依存しない。

セキュリティリスク

UPnP を有効にすると以下のリスクがある。

  1. マルウェアによるポート開放: 感染したデバイスが UPnP 経由で外部ポートを開放し、C2 サーバーとの通信経路を確保する
  2. 意図しないサービス露出: アプリが勝手にポートを開放し、ユーザーが気づかないまま内部サービスが外部に露出する
  3. UPnP 実装自体の脆弱性: 過去に miniupnpd 等で複数の CVE が報告されている

OpenWrt での確認方法

# UPnP デーモンの設定確認
uci show upnpd

# 主要な設定値
# upnpd.config.enabled='0'    ← デーモン有効/無効
# upnpd.config.enable_upnp='1' ← UPnP プロトコル有効/無効
# upnpd.config.secure_mode='1' ← セキュアモード

# 現在のポートマッピング確認
cat /var/run/miniupnpd.leases

enabled='0' ならデーモン自体が起動しておらず、enable_upnp の値に関わらず UPnP は動作しない。

結論

ゲーム機の NAT 改善など明確な用途がなければ、UPnP は無効のままが最も安全。現代のサービスはクラウド中継や STUN/TURN で NAT を越えるため、UPnP に頼る必要性は低下している。