徳丸先生が纏めているので、twitterなどから来た方はこちらを見ることをオススメします。
なお、レアケースとしてリスク増加は有りうるとの指摘が
kazuho氏 http://togetter.com/li/380068
mala氏 https://gist.github.com/3788589
からあり、自分の下記の議論は状況によっては正しく無いことがわかりました。
を参照してください。
(/追記)
https://twitter.com/shigecchi2007/status/249880380189061120
ウイルス対策ソフトのブラックリストに間違った情報が入ったら問題が起こる、というのと同じなので、信頼出来ないソフトやhostsファイルを使うな、という趣旨の話でまったくもってそのとおり。
これは事実でないと思われたのだが、自分の説明が不十分で伝わらなかったようなのでここでまとめる。
root権があれば、ソケットを開くOSのシステムコール自体をフックして、全ての通信を傍受できる。HTTPSの復号をOSやライブラリに頼る場合、HTTPSも完全かつ隠密裏に傍受できる。証明書チェックをしていなければ、アプリ内実装したHTTPSでも思いのまま。(最悪デバッガ使えばいいんだけど)
攻撃者が端末のrootをとれるのなら、hosts設定などという難しい前提をとらず、いくらでも情報を搾取できる。rootedなデバイスに入れるroot取得アプリは厳選しましょう。というだけ。
編集にrootが必要。公開されているhostsファイルに、悪意あるIPがリストされれいる可能性があり、得体のしれないhostsは信用しないようにずべきだが、自分で内容を知った上で設定すること自体に問題はない。
なお、昔のwindowsのように、hostsが保護されていなかった時代は、スパイウェアなどが簡単に書き換えできた。winVista以降アクセス制御がまともになってからは現在は正しく保護されている、はず。
loppbackアドレスへの書き換え
well known port =< 1023 をlistenするにはrootが必要なので、http://127.0.0.1/への通信を傍受できるならそもrootでソケットを〜の繰り返し。
リンク先のポート指定で例えばlocalhost:8080にアクセスした場合、通常ユーザ権限のアプリをloopbackにbindすれば傍受可能だが、それはローカルに攻撃専用アプリがインストールされているか酷い脆弱性のあるアプリなので、そちらを削除する方が先。
本来エンドユーザ向けのブラウザはそんなアクセスを禁止すべきかもしれないが、現在の実装としては許されている。(ウェブアプリ開発者といった人にはローカルのウェブサーバで開発するために必要)
既に、UPnPが対策不十分のために、外部から操作できる、という問題が発生している。これは192.168.1.1など、ルータのLAN側IPを決め打ちしてアクセスさせ、UPnP実装の脆弱性を突いてポート開放などを行う手口だった。これはブラウザではなく、UPnP実装側の脆弱性として扱われている。
ファイアーウォールソフトなどによっては、このようなLANへのアクセスをブロックしてくれるものもあるかもしれないが、根本的な対策ではない。LAN内の同じファイアウォールを動作させていない他のマシンから、自分やルータにアクセスされた場合、攻撃が回避されうる。


