■RLO(Right-to-Left Override)
Unicodeの制御記号の1つ。右から左に向かって文字を読む言語に対応するため、文字の流れを右から左の向きに書き換える制御記号。
全世界の言語を表現可能にすることを目指しているUnicodeでは、文字を右から左に向かって読むアラビア語やヘブライ語などの言語に対応するため、文字の流れを右から左の向きに変更するRLOと呼ぶ制御記号を持っている。Unicodeで記述されたテキスト中にこの制御記号を挿入することで、文字の流れを左→右から右→左へと変更することができる。
しかしこの機能は、ウイルスなどが拡張子を偽装する手法として悪用され始めている。ファイル名にUnicodeを採用しているWindows OSなどでは、ファイル名にRLOを悪用すると、「txt.egohegoh.exe」という実行ファイルを「exe.hogehoge.txt」といったように偽装可能になり、テキスト・ファイルのように見せかけることができる。もっと巧妙なファイル名を作成したり、ファイル名の途中からRLOを設定したりすることで、一見しただけではRLOが設定されていることが分からないようにすることも可能だ。
Windows XPでファイル名にRLOを設定する手順は以下のとおりである。
- RLOを設定したいファイルを右クリックし、メニューから[名前の変更]を選択する。
- 文字の流れの方向を変更したいファイル名部分にカレットを置き、右クリックする。
- メニューから[Unicode 制御文字の挿入]−[RLO Start of right-to-left override]を選択する。
これでファイル名にRLOを設定し、文字の流れの方向を変更できる。
このようなRLOを悪用し、ファイル名(拡張子)を偽装したウイルスが、すでにファイル交換ソフトウェアなどで流通している。拡張子だけで判断してしまうと、ファイルを開くつもりで、ダブルクリックしたとたん、実際にはそれが実行ファイルでウイルスに感染する、といったことも起きる。
RLO自体は、脆弱性でも不具合でもなく、Unicodeの一般的な仕様であるが、悪用可能な機能であることは知っておいた方がよい。
|