脆弱性?いいえ仕様です。Windows10で拡張子を偽装する方法

/ Windows / Comment[0]

Windowsはファイル名にUnicode制御文字を挿入することができます。
なんでこういう仕様なのか分かりませんが、現在最新のWindows10でもファイル名にUnicode制御文字の挿入が可能になっています。

Unicode制御文字の何が問題か

Unicode制御文字が入ると何が問題なのかというと、「RIGHT-TO-LEFT OVERRIDE(RLO)」という制御文字を挿入することでファイル名を逆さに表示させることができるのです。
RLOは本来アラビア圏など文章を右から左に読む人向けに反転させるわけですが、ファイル名に使用すると拡張子の偽装に使えてしまうのです。

この間の日本年金機構の個人情報流出事故もこの仕様を突いた標的型攻撃だそうです。

デモ

とりあえずデモを挙げてみます。

  1. 適当にbatファイルを作成します。内容はecho test; pauseという単純なもの。

    ファイル名はtexttxt.bat
  2. ファイル名を変更します。このときにtestとtxtの間にカーソルを置き、右クリック→Unicode制御文字の挿入→RLOを選択します。

    すると、カーソル以降の文字が反転してtesttab.txtとなります。

ファイル名の拡張子はtxtと表示されているように見えます。ダブルクリックしてみるとbatが実行されます。

見分け方

Vista以降であれば、ファイル名を変更しようとすると拡張子の部分を省いてハイライトしてくれるようになっています。
RLOにより反転されているファイルの名前変更しようとするとこのように不自然にハイライトされます。
ハイライトされない部分が反転された実際の拡張子となります。

右クリックプロパティでも「ファイルの種類」で見分けることができます。
コマンドプロンプトでdirしてみるとUnicodeが挿入された位置に半角スペースが入って左読みで表示されます。
見分ける方法は色々ありますが、目を凝らす程度では分からないので結構引っかかりやすそうなブービートラップです。

開く必要のないファイルは開かないのは基本として、ファイル名にexeやtabなどさかさまの実行可能拡張子が含まれていたら警戒しましょう。

どうやら仕様確定

IPAの情報セキュリティ早期警戒パートナーシップを通じてこの仕様について”脆弱性ではないか”とMicrosoftに指摘したところ、取り合ってくれなかったようです。
http://gihyo.jp/admin/serial/01/charcode/0010#sec2
この”仕様”を悪用された被害についてIPAで仕組みや事例、データを挙げて詳しくまとめられています。
http://www.ipa.go.jp/security/txt/2011/11outline.html

これは上級者でも業務では警戒していたとしても、プライベートで使っているPCにおいて引っかかってしまう可能性が高いのではないでしょうか。

対処法は

効果的な対処法はRLOを含むファイルを実行しなければいいだけの話で、ローカルセキュリティポリシで設定できます。
上記IPAのリンクにWindows7での対処法は書かれていますが、Windows7,10のhomeエディションでは「ローカルセキュリティポリシー」のGUIツールは用意されていないようです。
7 homeではレジストリを弄れば可能とはありますが、10 homeでの設定方法は不明であります。ぐぬぬ格差

不審なファイルは開かないようにしたり、ファイル名にexeやtab、mocなど逆さの実行拡張子が含まれていたら気を付けましょう。

関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可