電柱日報

日々の由無し事

セキュリティ合わせ技一本

某所にてネットワーク管理っぽい仕事をしておりますが、毎日ユーザから色々な質問がやってまいります。
日舞い込んできたのは、一見するとオーストラリアの会社からのクレジット決済通知に見えます。
受け取った本人にはそんなクレジット利用をした覚えは無いものの、ちょうど直前にオーストラリアへ出張していた事もあり「カード情報が漏れているのでは?」と心配になって相談に見えたようです。
当初はよくある架空請求かフィッシングの類かと思っていたのですが、よくよく調べてみると"Internet Explorer ITSプロトコル・ハンドラーでの脆弱性"と、"URLスプーフィング(詐称)"を組み合わせ、二重三重に対象をミスディレクトする仕掛けが仕掛けがくみこまれている事が判明しました。

  1. HTMLメールをクレジットの請求風に仕立てる
  2. 「現在の処理状況を見るには」というリンクを作る
  3. リンク先のURLには"URLスプーフィング"が仕組まれている
  4. リンク先のWebページはJavaScriptで右クリックを禁止している
  5. リンク先のWebページはHTMLをJavaScript内から記述されている
  6. JavaScriptコードは表示しにくい場所に置かれている
  7. JavaScript自体がURLエンコード
  8. JavaScriptによって埋め込むHTML文章は暗号化されている

1.によって対象の不安を煽ります。その結果、対象はつい2.にあるリンクをよく考慮せずにクリックしやすくなります。
仮にリンクにマウスカーソルをあわせてステータスバーに表示されるURLを確認したとしても、IEのパッチをちゃんと当てていないと、いかにもネットショップであるかのようなドメインが表示されるようになっています。(3.)
4.によってソースの表示などが面倒になっていますし、それを避けようとJavaScriptを切ってしまうとブラウザに何も表示ません(5.)。
また、JavaScriptを無効にしてソースを表示したとしても、パッと見は「このページは保護されている」というコメントが表示されるのみです。実際のJavaScriptコードは、長いインデントを開けたり、空行を大量にはさんですぐには表示されないような場所に記述されています。(6.)
何とかJavaScriptが記述された場所を見つけたとしても、実際に実行される内容はURLエンコードされており(7.)、そのまま確認できるのは、URLエンコード文字列を復元して元のJavaScriptコードを取りだす関数と、文字列として与えられたJavaScriptコードを実行するための関数になっています。
さらに、URLエンコードを復元したとしても、そこに表示されるのは(URLエンコードとはまた違った)暗号化文字列を復号する仕組みであり、実際にHTMLとして表示される内容は別の暗号化が行われているため確認できません。
とまぁ、これでもかと偽装を繰り返した上で最終的にブラウザに処理させるHTMLの中に"Internet Explorer ITSプロトコル・ハンドラーでの脆弱性"が埋め込まれているという手の込み様です。
"Internet Explorer ITSプロトコル・ハンドラーでの脆弱性"が最新パッチを当てた状態(6月15日時点)のIEでも対策されていないため、OutlookでHTMLメールそのまま表示させる環境に居る人は、メール内のリンクをクリックしただけで、スパイウェアだろうがトロイの木馬だろうが埋め込まれてしまうことになります。
この手の電子メールソフトとWebブラウザが連動してセキュリティホールを相互補助するような関係はIEOutlook環境に非常に多く、致命的な結果を招きやすいこともあり、この雑記はIE非推奨でお送りします。