ポートを表示したり、追加・削除するのはちょっとコード量やら衝突やらで面倒だし、結果も判りにくいからサンプルが少ないのでしょうかね? WAN IFのIPアドレスを持ってくるだけなら引数なしで簡単ですし、結果が正しいかどうかも直ぐ判りますから。 一応UPnP COM [microsoft.com]のControl Point API [microsoft.com](IUPnPDeviceFinder等から始まる奴)経由で操作すると好き勝手出来ます。 動的ポートマッピング関連を手抜きで楽をしたければ、XP以降にあるNetwork Address Translation Traversal Interfaces [microsoft.com](IUPnPNATから始まる奴)で手軽にコントロール出来ます。 # 両者ともWeb上で情報が少ないのでこの機会に書いてみた。
危険性を認識して使ってるんだろうか? (スコア:0)
穴のあるなし以前に UPnP なんておっかないもの、それも外部接続ルータでなんて、
とても使う気がしません。
暴露ウイルスが UPnP でルータの設定変更して感染 PC のディスクを
全世界に公開してくれてたのも記憶に新しい、と思ったらもう 7 年前なのね。
# 歳はとりたくないものだ。
もちろんウイルスに感染した時点でいくらでも外部に送信できるじゃんというのは
もっともなのですが、やはり発信力にだいぶ違いがありますし。
よくわかってない人でも簡単に使えるように、というのもわからないではないですが、
それならそれでファクトリリセット直後のみ UPnP 有効として設定完了後は無効化するとか、
なにか方法はなかったもんでしょうかね?
Re: (スコア:1)
この場合のUPnPは、Skypeやらリモートアシスタンスやらネットゲームといったアプリが必要な時にWANからLAN内の特定PC(大抵は自分)の特定ポートに転送するための機能なので、アプリ起動時にUPnPが有効になってないと意味がないです。
# UPnP IGD(ルータとか)を設定するのはWindowsXP以降なら簡単に実装できます、WSHでも弄ることが可能ですし。
必要なのは設定が変わった時にユーザーに通知して許可を求めるUIなのかも。
Re: (スコア:1)
Windowsだと「アプリhogehogeが外部への通信設定を行おうとしています。許可しますか?」みたいなのをUPnP利用時に出すような実装になるのかな。
通信先のIPとWHOISの結果も出してくれると嬉しいかも(特定国との通信とか微妙にイヤンなので)。
認識しているUPnPデバイスの現在のポート開放状況とかってXP以降で確認出来ましたっけ?
アプリhogehogeはポートfugafugaを開けているとかグラフィカルに確認出来るような実装だと親切かなぁと。
#UPnP IGDのプロパティでは取得しているグローバルIPくらいしかなかったような記憶だったので。
Re:危険性を認識して使ってるんだろうか? (スコア:1)
私も適当な理解ですが……
UPnPと一口に言っても幅広く [upnp.org]、家電等のDLNAもUPnPを利用してます。 [dlna.org]
実際、#2316900 [srad.jp]のNECの例はDLNA絡みで該当したようですね。
で、IGD(Internet Gateway Device) V1.0 [upnp.org]だと、動的NAT設定以外にもPPPやPPPoEセッションの管理等も出来るものが多いかと。
# IGD V2.0 [upnp.org]は実際に触ってないのですが、IPv6対応とかしてるっぽいですね。
問題になるのが、別にWindowsだけが使っているわけでなく、050IP電話アダプタ [flets.com]や、ゲーム機(Xbox360 [xbox.com]/PS3 [playstation.net])も利用している事ですね。
攻撃例で言えばスマホ、解りやすい例だとAndroidのアプリで「完全なインターネットアクセス」を求めるアプリがありますが、これを許可していればUPnPを利用可能です。
こういった、PCを触っている自分以外の家族の行動に伴った設定変更や誰も見張っていない時間帯を如何に守るかですね。
不許可にした結果「誰も居なかったから電話が005IP電話が不通になりました。」では困る訳で。
やはり、プロトコル自体が性善説で出来ているのがネックかと。
出来てメーカーがこのIPアドレスやMACアドレスを持つノードのみ変更を受け付けるとか、PCやスマホにアプリを常駐させて、変更時に許可を求めるようにする位でしょうか。
WindowsのUPnP対応度ですが、WindowsXP時代から前述のPPPセッション管理と動的ポートマッピングに対応しています。
※XPの場合、コントロールパネルでWindowsコンポーネントの追加が必要かもしれません。 [microsoft.com]
正常に動作していればXPなら、ネットワーク接続 [shell]、Vista以降ならネットワークを開く [shell]にルータが表示されていると思います。
XPだと「状態」が恐らくデフォルトとなっており、パケット通信量を確認できるかもしれません。
Vista以降だと「無効にする」が恐らくデフォルトでうっかり同一ネットワーク上の誰かが好奇心からダブルクリックしてしまうとWANが切断されて同じ画面から「有効にする」必要がありますが、これでWANのセッションの管理が可能です。
現在のポート開放状況はルータのアイコンの右クリックからプロパティを出すか、Alt+ダブルクリック/Enterでプロパティが出ます。
そのプロパティウィンドウの「全般」タブ右下に「設定」ボタンがあり、この「設定」を押すとGUIで動的ポートマッピングの確認と追加、削除、編集が可能です。
とはいえ、リストの名前は自己申告で自由に出来るので信頼性には問題がありますが。
ポートを表示したり、追加・削除するのはちょっとコード量やら衝突やらで面倒だし、結果も判りにくいからサンプルが少ないのでしょうかね?
WAN IFのIPアドレスを持ってくるだけなら引数なしで簡単ですし、結果が正しいかどうかも直ぐ判りますから。
一応UPnP COM [microsoft.com]のControl Point API [microsoft.com](IUPnPDeviceFinder等から始まる奴)経由で操作すると好き勝手出来ます。
動的ポートマッピング関連を手抜きで楽をしたければ、XP以降にあるNetwork Address Translation Traversal Interfaces [microsoft.com](IUPnPNATから始まる奴)で手軽にコントロール出来ます。
# 両者ともWeb上で情報が少ないのでこの機会に書いてみた。
ちなみに、今回再提起された問題(WANからUPnPで動的ポートマッピングを設定出来ちゃう脆弱性持ち)は忘れずに対応が必要かと。
繋がってるのが電話機やゲーム機やスマホのみで外から中を見られても平気だと思っていても、実装によってWANからWANへ転送する設定が出来るケースが有るので。
Wi-Fiの暗号化や無線LAN無しの機種で踏み台対策はバッチリだと思ったら、ルータ自体が外から踏み台にされて濡れ衣というシナリオですね。
PCと違い24時間通電が当たり前なので何時でも踏み台可能で、動的ポートマッピングは一定時間経過で自動削除する仕組みもありますし。
# そもそもログが残らない機種とか、今回話題のBoFバグ等を利用して証拠隠滅されたら捜査も行き詰まりになりかねないかと。