そのFaviconはFaviconですか?

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

Faviconというものがあります。
自分でWebサイトのコンテンツを作成したことがある人はすぐにピンとくると思うのですが、FaviconというのはFavorite icon(お気に入りのアイコン)です。
運営者がWebページに設置するシンボルマークのことで、そのWebページを表示しているタブにアイコンとして表示されたりブックマークしたときにアイコンとして表示されたりします。
本物のFaviconはこういうものです。

  • 画像の詰め合わせ
    いくつかのアイコン画像の詰め合わせになっています。
    ブラウザなどのFaviconの利用側がちょうどよいサイズのアイコンを選択して利用します。
  • 通常の設置されるファイル数
    Faviconはそれ自体が画像の詰め合わせになっています。
    そして通常は特定のWebサイトでは全く違ういくつものアイコンが使われるようなケースは多くないと思います。
    つまり、1つのWebサイトには1つのFaviconのみが存在するのが通常と考えられます。

こういうことが、FaviconがWebコンテンツの中に混ざっていても疑問を感じにくい土壌となります。

こんなFaviconですが、通常ではない使われ方がされていることが確認されています。

  • Faviconをコード置き場にする
    通常のFaviconにはアイコンデータが含まれています。
    しかしそうとは限りません。
    ファイル名はFaviconにするのですが、中身をPHPなどのコードにします。
    PHPのinclude、include_once、require、require_onceステートメントはファイルの拡張子に関係なくその内容を読み取るような動きをしますので、悪意あるコードを隠す場所としてぴったりです。
    この方法の場合、悪意あるコードを読み込んでいる側には読み込む部分以外に怪しい部分がないような構造にできることから、発見されにくい構造にすることができます。
  • アップロードの制限を緩和する
    Webサイトのコンテンツ管理をする仕組みにはファイルをアップロードする機能が含まれています。
    こういった機能には通常一定の安全化のための機構が搭載されていて、自由なアップロードはできないようになっていることが多いです。
    そんな環境においても、Faviconは制約となりません。
    ファイル名がFaviconであればそれは通常は無害なファイルで通常のWebサイトに存在してよいものと想定されるため、アップロードすることが可能です。
    多くのアップロードツールはファイル名での確認は実施しますが、ファイルの中身での確認は実施しません。
    たとえばWordPressのなんらかの脆弱性を悪用し管理者パネルを操作できるようにできれば、通常の管理操作のような形式で悪意ある中身のFaviconのようなファイルをアップロードすることができてしまいます。
    管理操作のログを見たとしてもなんら怪しい点を感じることがないかもしれません。

こうして、悪意あるコードをファイル形式にしてターゲットのWebサイトに配置することができるようになります。
悪意あるコードは、期待しないWebサイトへリダイレクトする動きをするかもしれません。
マルウェアをダウンロードする動きをするものも作れるでしょうし、もっと直接的にマルウェア機構そのものをFaviconに含めてしまうこともできるかもしれません。

隠し場所はまだまだあるのですね。

参考記事(外部リンク):How Are Favicon (.ico) Files Used in Website Malware?
blog.sucuri.net/2022/09/how-are-favicon-ico-files-used-in-website-malware.html