Windowsはファイル名にUnicode制御文字を挿入することができます。
なんでこういう仕様なのか分かりませんが、現在最新のWindows10でもファイル名にUnicode制御文字の挿入が可能になっています。
Unicode制御文字の何が問題か
Unicode制御文字が入ると何が問題なのかというと、「RIGHT-TO-LEFT OVERRIDE(RLO)」という制御文字を挿入することでファイル名を逆さに表示させることができるのです。
RLOは本来アラビア圏など文章を右から左に読む人向けに反転させるわけですが、ファイル名に使用すると拡張子の偽装に使えてしまうのです。
この間の日本年金機構の個人情報流出事故もこの仕様を突いた標的型攻撃だそうです。
デモ
とりあえずデモを挙げてみます。
- 適当にbatファイルを作成します。内容はecho test; pauseという単純なもの。
ファイル名はtexttxt.bat - ファイル名を変更します。このときに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など逆さの実行拡張子が含まれていたら気を付けましょう。
- 関連記事
-
-
cmdでドットから始まるファイルを再帰的に削除する方法 2017/05/24
-
Windows10でhostsファイルを編集する方法 2017/04/01
-
脆弱性?いいえ仕様です。Windows10で拡張子を偽装する方法 2016/08/22
-
Win10のコマンドプロンプトからNTPサーバで時計合わせ 2016/07/30
-
コマンドプロンプトの出力をクリップボードへ送る 2016/02/18
-