画像データのないSVG

ほぼこもセキュリティニュース By Terilogy Worx

SVGを使った新しい攻撃キャンペーンが観測されています。
SVGはScalable Vector Graphicsです。
画像フォーマットの1種です。
他の多くの画像フォーマットは点の情報を使って表現するラスターファイルの形式をとりますが、SVGは線のデータを数式で表現するなどの方式で表現されます。
言い方を変えますと、他の多くのフォーマットはいわゆる画像データのファイルなのですが、SVGはテキストファイルになっています。

どんな形式で動くのでしょうか。

  • 侵害環境に悪意ある加工が施されたHTMLが届けられる
    現在確認されている例では、メールに添付されたHTMLドキュメントとして届けられます。
    添付ファイルを開かせようとする工夫の施されたメールの内容となっています。
  • HTML添付ファイルを開く
    添付ファイルではなくてもよいのですが、とにかくHTMLをブラウザで表示させることが次の段階となります。
    HTMLなのでWebブラウザで表示することができます。
  • HTMLにはBase64でコード化されたSVG画像が含まれる
    SVGは単にテキストです。
    そして通常他のラスターファイルの画像に比較してサイズは大きくなりにくいものです。
    Base64でコード化してもサイズは非常に小さいままです。不自然さはありません。
  • SVG画像データがブラウザにデコードされる
    WebブラウザはBase64を元の形式に戻して解釈することができます。
    ブラウザのメモリ上でSVGのコード化データはSVGの通常のテキストデータとなります。
  • SVGデータがブラウザに解釈されて利用される
    ブラウザはSVGデータの内容に従った動作を行います。
    丸を描くようにデータが示していれば丸を描きます。
    しかし今回の例では画像は最終的に何も描画されません。
    当該のSVGに含まれている画像に関する情報は描画できるところまでのデータを含んでいません。
    たったのこれだけの内容しかありません。
    <circle></circle>
    円を描く形式のデータですが、大きさも線の太さもなんら情報がありません。このためなにも描かれない空っぽ画像となっています。
  • SVGの追加部分が解釈されて利用される
    さきほどSVGがデコードされました。
    SVGには画像データとは別のデータが含まれています。
    スクリプトタグで囲まれたHTMLデータです。
    スクリプトの形式はJavaScriptです。
    そのJavaScriptでは、ブラウザの親ウィンドウでどこかのWebサイトにアクセスする内容が書かれています。
    このHTMLデータを読み込んで解釈しているのはWebブラウザですから、Webブラウザは内容に従ってそのURLにアクセスします。

いったいどこのサイトにつながるのでしょう。
宛先のサイトはフィッシングサイトなのでしょうか。

この手法で構成された攻撃内容は現時点ではVirusTotalに列挙されるセキュリティ製品群では検出ができていません。
またClick-Time ProtectionとかTime-of-Clickプロテクションなどの名前で知られる、ブラウザのクリック時に対象のURLを検査する機能を持つアンチウイルス製品がいくつかありますが、こういった機構もこの例では役に立ちません。そもそもクリックしていませんので。

この確認されている攻撃キャンペーンではこういった内容のHTMLがメールに添付されてくる形式となっていました。
しかしこの手法の内容はそれに限定されるものではありません。
容易にアレンジして新しい攻撃手法を構成することができる内容に思えます。

なんらかのデータを取り扱うとき、そのデータの中にはどのようなものが含まれているのかわかりません。
データの入手先にあわせて注意を払うといったような日々の活動が必要と思えます。

参考記事(外部リンク):The Blank Image Attack
www.avanan.com/blog/the-blank-image-attack