2012年09月24日

ループバックやLAN内ホストでの脆弱性対策について

(追記)
徳丸先生が纏めているので、twitterなどから来た方はこちらを見ることをオススメします。
なお、レアケースとしてリスク増加は有りうるとの指摘が
kazuho氏 http://togetter.com/li/380068
mala氏 https://gist.github.com/3788589
からあり、自分の下記の議論は状況によっては正しく無いことがわかりました。
を参照してください。
(/追記)

元はしげっち氏 @shigecchi2007 と、デザイアさんさん(?)@ks_desire との会話から
https://twitter.com/shigecchi2007/status/249880380189061120

ブロック目的などで度々編集するhostsファイルに、悪意あるIPが入ると、例えばgoogle.comを攻撃者のサーバIPに向ける、というような場合があるので、注意する必要がある、という話。
ウイルス対策ソフトのブラックリストに間違った情報が入ったら問題が起こる、というのと同じなので、信頼出来ないソフトやhostsファイルを使うな、という趣旨の話でまったくもってそのとおり。

自分のような得体のしれない人間の作ったhostsファイルなんて信頼出来ないから使わない、というのは実に正しい。


そこに、ループバックアドレス 127.0.0.1に書き換えるのも危険、という指摘があった。
これは事実でないと思われたのだが、自分の説明が不十分で伝わらなかったようなのでここでまとめる。

hosts編集には前提としてroot権が必要。

root権
root権があれば、ソケットを開くOSのシステムコール自体をフックして、全ての通信を傍受できる。HTTPSの復号をOSやライブラリに頼る場合、HTTPSも完全かつ隠密裏に傍受できる。証明書チェックをしていなければ、アプリ内実装したHTTPSでも思いのまま。(最悪デバッガ使えばいいんだけど)
攻撃者が端末のrootをとれるのなら、hosts設定などという難しい前提をとらず、いくらでも情報を搾取できる。rootedなデバイスに入れるroot取得アプリは厳選しましょう。というだけ。


hostsファイル自体への悪意IPの挿入
編集にrootが必要。公開されているhostsファイルに、悪意あるIPがリストされれいる可能性があり、得体のしれないhostsは信用しないようにずべきだが、自分で内容を知った上で設定すること自体に問題はない。
なお、昔のwindowsのように、hostsが保護されていなかった時代は、スパイウェアなどが簡単に書き換えできた。winVista以降アクセス制御がまともになってからは現在は正しく保護されている、はず。


そして本題、
loppbackアドレスへの書き換え
well known port =< 1023 をlistenするにはrootが必要なので、http://127.0.0.1/への通信を傍受できるならそもrootでソケットを〜の繰り返し。
リンク先のポート指定で例えばlocalhost:8080にアクセスした場合、通常ユーザ権限のアプリをloopbackにbindすれば傍受可能だが、それはローカルに攻撃専用アプリがインストールされているか酷い脆弱性のあるアプリなので、そちらを削除する方が先。

なぜなら、攻撃者は適当なドメインに127.0.0.1へのAレコードを指定したり、直接http://127.0.0.1/のように指定することでアクセスを強制することが出来るからで、攻撃者はhostsに関係なく実行できてしまう。寧ろhostsで攻撃コードをホストしているドメインへのアクセスを禁止することで若干安全になる。
本来エンドユーザ向けのブラウザはそんなアクセスを禁止すべきかもしれないが、現在の実装としては許されている。(ウェブアプリ開発者といった人にはローカルのウェブサーバで開発するために必要)


UPnPの既知の問題
既に、UPnPが対策不十分のために、外部から操作できる、という問題が発生している。これは192.168.1.1など、ルータのLAN側IPを決め打ちしてアクセスさせ、UPnP実装の脆弱性を突いてポート開放などを行う手口だった。これはブラウザではなく、UPnP実装側の脆弱性として扱われている。
ファイアーウォールソフトなどによっては、このようなLANへのアクセスをブロックしてくれるものもあるかもしれないが、根本的な対策ではない。LAN内の同じファイアウォールを動作させていない他のマシンから、自分やルータにアクセスされた場合、攻撃が回避されうる。


LAN/WAN間や端末内蔵ファイアーウォールで守られたLAN内であろうとも、ブラウザからの悪意あるアクセスを想定した対策は必須、というお話。

#テスト環境に本番由来の個人情報入りデータベースコピーして使うバカは(以下略)
posted by ko-zu at 12:25| Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。