本当は怖い文字コードの話

第10回文字コードが引き起こす表示上の問題点[後編]

前回は、文字コードの引き起こす問題がソフトウェアの処理上だけでなく、人間に対する視覚的な効果という点でも強く影響を与え、攻撃者にとっての強力な道具となることがある、という点について説明しました。今回も前回に引き続き、そのような文字コードが引き起こす視覚的な問題点について説明します。

拡張子の偽装

Unicodeを利用したWindowsにおける拡張子の偽装は、文字コードを利用した視覚的な攻撃の中でも特にインパクトの大きいものだと思います。

Unicodeには多数の文字に加え、さまざまな制御も収録されています。そのような制御コードのうち、U+202E「RIGHT-TO-LEFT OVERRIDE」⁠RLO)と呼ばれる文字をファイル名に含めることで、見かけ上の拡張子を簡単に偽装することができます。

たとえば、copy-txt.exeという名前の実行可能ファイルがあったとします。

図1 copy-txt.exe
図1 copy-txt.exe

RLOというのは、Unicodeでヘブライ語を扱う際に、文字列を部分的に右から左の方向に表示させるための制御コードです。このRLOを図2、図3のようにファイル名の「-」「e」の間を挿入すると、図4のように「-」より後ろが反転して表示されるため、拡張子が「txt」のように見えてしまいます。

図2 RLOを挿入する手順1
図2 RLOを挿入する手順1
図3 RLOを挿入する手順2
図3 RLOを挿入する手順2
図4 RLOを挿入したあとの表示。⁠copy-exe.txt」のように見える。
図4 RLOを挿入したあとの表示。「copy-exe.txt」のように見える。

もちろん、拡張子が .txtに見えるのは見掛け上だけで、実際のファイル名は"copy-<RLO>txt.exe" であり、Windowsとしての拡張子は依然としてexeですので、ダブルクリックすれば実行可能ファイルとしてアプリケーションは動作します。

このようにUnicodeのRLOを使って拡張子を偽装したファイルは、見た目での判断がつきにくく、Windowsに慣れているユーザであっても騙されてしまうかも知れません。

Windows XP ProfessionalやVista Bussines以上のエディションであれば、ソフトウェア制限ポリシーを利用して、パス名にRLOを含むファイルの実行を禁止することで、RLOを使って拡張子を偽装されたファイルをうっかり実行してしまうことを防ぐことができますが、ポリシーの利用できないWindows XP HomeやVista Home Basic/Premiumでは簡単に設定する方法はありません。

これは脆弱性なのか

このRLOを利用した拡張子の偽装について話をすると、⁠それは(修正されるべき)Windowsの脆弱性ではないのか」あるいは「脆弱性ではないにしてもWindowsを修正すべきではないのか」との意見を多くの人からいただきます。

実際、この方法による拡張子の偽装に気付いた当時、私自身も同じように感じましたので、IPAの情報セキュリティ早期警戒パートナーシップを通じて「これは脆弱性ではなく仕様ではあるが、修正されるべき問題と考える」と伝えました。

通常、情報セキュリティ早期警戒パートナーシップを通じて脆弱性を報告した場合、2,3日で受理あるいは不受理の返答がIPAから返ってくるのですが、この件に関しては3週間以上経った後に返ってきた返答は以下のようなものでした。

Windowsにおけるファイル拡張子の偽装の件について、調整機関であるJPCERT/CCと協議していた関係で、ご返答に長い時間を要してしまい、ご迷惑をおかけいたしました。

たしかに仕様により、ファイル名が一見違ったものに見え、利用者がだまされやすくなるということは考えられますが、この仕様そのものにより、利用者が攻撃を受けたり、ウイルスに感染したりするものではないため、私どもで取扱う脆弱性の範囲からは外れるものと考えております。

(略)

今回の件につきましては、

  • 届出としては正式に取扱わない
  • 参考情報としてMS に連絡する

という方針を採りたいと思いますが、いかがでしょうか。

予想通り脆弱性としては取り扱えないものの、きちんとMicrosoftにも伝えてくれるということで、もちろん異論はありませんでしたので、この件に関しては終了で了解との旨を伝え、不受理という形で終了したのがちょうど4年前の2005年12月でした。

しかし、それ以降もWindows側での対応がまったく取られていないのは承知の通りであり、残念なかぎりです。

おわりに

10回の連載を通じて、文字コードが引き起こすセキュリティ上の問題点について解説してきました。

数年前はこの分野での研究は世界的にも情報や資料が少なく、私自身も試行錯誤で調査を進めてきましたが、ここにきてようやくセキュリティと文字コードが切っても切れない関係であることが広く周知されてきたのではないかと思います。

とはいえ、文字コードが引き起こすセキュリティ上の問題というのは、まだまだ誰にも知られていない内容が潜んでいるのではないかと思いますので、今後もより深く調査を続けていきたいと思います。本連載が少しでもみなさんのセキュリティ向上の手助けになれば幸いです。

おすすめ記事

記事・ニュース一覧