IE がエントリー ポイントとなり、FireFox に対して引数をそのまま渡すから、FireFox のウィーク ポイントを刺激しておかしなことになる...という問題があるそうです。たとえば、この記事→Firefoxの脆弱性、IE経由で悪用される恐れ。あと、これも→IE関与の脆弱性、Firefox側が対処を表明。
なんかなぁ???これ、IE が悪いの?
IE関与の脆弱性、Firefox側が対処を表明(ITmedia エンタープライズ)より:
Mozilla Foundation のセキュリティブログによると、この問題ではIEで悪質なWebページを閲覧し、細工を施したリンクをクリックすると、コマンドライン経由で別のWindowsプログラムが起動し、悪質ページのURLデータをそのプログラムに引き渡してしまう。この仕組みによってIEからFirefoxにURLデータが送られ、このデータに特定の細工が施してあれば、Firefoxでリモートからコードを実行することが可能になる。
で、先に書いたところには、こんなことが書いてある。
Firefoxの脆弱性、IE経由で悪用される恐れ(ITmedia エンタープライズ)より:
仏FrSIRTなどが7月10日に公開したアドバイザリーによると、FirefoxをWindowsにインストールする過程で導入されるURLハンドラの「FirefoxURL://」に、設計上のエラーが存在する。
これを読むと、FireFox が Windows に「FirefoxURL:// で始まる URI については FireFox を起動してね」とインストールする、と読めます。つまり、「渡してね」とお願いしているのは FireFox だと。IE が勝手に渡してくるわけではない。なのに、「IE の渡し方が悪い」っていうわけ?
Microsoft と Mozilla Foundation がインターフェイスを話し合って「こういう取り決めで行こう」としたのなら、確かに「そのまま渡す IE に問題がある(話し合って決めた仕様と違う)」と言えると思います。
でもこれ。「こういう設定をすると、対象のアプリケーションに引数を渡します」という仕様が公開されていて、その仕様を FireFox が利用しているわけですよね?そしてこの仕様は、拡張子の対応付けなど、他のことにも使われる仕様です、よね?
え~?!それなのに「適切にエスケープしない IE が悪い」って言うんですか?
インジェクション系のセキュリティに対して、私は「使われる側で特殊な文字がないか調査し、適切にエスケープして渡す」ことを対応方法としてあげています。このケースはその逆で、「こういう渡し方をする」ということが先に規定されているわけです。そうであるなら、渡される方が「危険な特殊文字はないかチェックする」のが、やるべきことではないでしょうか。
たとえば、ユーザに入力をしていただくことを考えます。このとき、たとえば IPv4 アドレスであれば「数字で、0~255の範囲で、3つのピリオドで4つの部分に区切られる」わけです。ブロードキャストはダメとかは、面倒なので省く。素の .NET Framework には、IP アドレス入力用のコントロールはないので、TextBox を使用することにします。このとき、制限の範囲内の入力しかないことを、想定するでしょうか?そんなことはないでしょう。文字列や、まったく入力されない場合など、様々な入力があることを予想し、入力されたものが結局制限内に納まるようにコーディングする(エラー チェックをして弾く)でしょう。
この脆弱性における「適切にエスケープしない IE が悪い」という言い分は、「適切に入力しないユーザが悪い」と言っているように感じました。
投稿日時 : 2007年7月26日 22:31