情報処理安全確保支援士 2015年 春期 午前2 問03
問題文
RLO(Right-to-Left Override)を利用した手口の説明はどれか。
選択肢
ア:“コンピュータウイルスに感染している”といった偽の警告を出して利用者を脅し、ウイルス対策ソフトの購入などを迫る。
イ:脆弱性があるホストやシステムをあえて公開し、攻撃の内容を観察する。
ウ:ネットワーク機器のMIB情報のうち監視項目の値の変化を感知し、セキュリティに関するイベントをSNMPマネージャに通知するように動作させる。
エ:文字の表示順を変える制御文字を利用し、ファイル名の拡張子を偽装する。(正解)
🔒 解説は解答すると表示されます
表示順制御による拡張子偽装【午前2解説】
正解の理由
RLO(Right-to-Left Override、Unicode U+202E)は表示の方向性を上書きする制御文字で、これをファイル名の「実際の拡張子の直前」に挿入すると表示上の文字列の順序が逆転し、実際の拡張子を別の拡張子に見せかけることができます。したがって、この手口を説明する選択肢はエの「文字の表示順を変える制御文字を利用し、ファイル名の拡張子を偽装する」です。
他の選択肢はそれぞれ別の攻撃手法(恐喝型の詐欺、脆弱性の公開観察、SNMPによる通知)であり、表示方向を操作するRLOの説明ではありません。
他の選択肢はそれぞれ別の攻撃手法(恐喝型の詐欺、脆弱性の公開観察、SNMPによる通知)であり、表示方向を操作するRLOの説明ではありません。
実際の例(文字列中に制御文字のエスケープ表記を用いる):
- 実際のファイル名(制御文字を含む原文): report\u202Epdf.exe
- 表示上に見える文字列(多くの表示系でこう見える): reportexe.pdf
この例では見た目上は「.pdf」であるため安全に見えますが、実際の拡張子は「.exe」であり実行ファイルです。RLOは実際のファイル名バイト列を変えずに「見た目」を逆転させるだけである点が重要です。
解法ステップ
- RLOという用語が「表示の向き(左右)を制御するUnicodeの制御文字」であることを思い出す。
- 選択肢を見て、どれが「表示順を変えて拡張子を偽装する」ことを述べているかを確認する。
- 表示順を操作するのは制御文字に関する説明だけなので、該当する選択肢を選ぶ。
(選択肢の分類:恐喝型詐欺→除外、公開観察→除外、SNMP通知→除外、表示順制御→選択)
選択肢別の誤答解説
- ア: 「偽の警告で脅してソフト購入を迫る」は恐喝型やソーシャルエンジニアリング(Scareware)に該当し、RLOとは無関係です。
- イ: 脆弱性のあるホストを公開して観察する行為はハニーポットや研究目的の手法で、表示方向制御とは別分野です。
- ウ: SNMPのMIB変化を検知してイベント通知するのはネットワーク監視の挙動で、表示制御とは関係ありません。
- エ: 文字表示の方向性を制御するUnicodeの制御文字を用い、ファイル名の表示を逆転させて実際の拡張子を偽装する、まさにRLOの手口を説明しています。RLOは表示順のみを変えるため、見かけと実体が異なるケースを生みます(例を参照)。
よくある誤解
- RLOは「拡張子そのものを書き換える」と思い込む誤解:RLOは表示の順序を変えるだけで、ファイル名のバイト列(実際の拡張子)は変わりません。見た目が偽装される点が危険です。
- 効果が分かりづらい例を使う誤り:例えば「exe」を逆にしても見た目が変わりにくい(左右対称に見える)ため、RLOの動作を示すには不適切です。表示変化を明確に示すには「report\u202Epdf.exe」のように逆転後に別の拡張子が前に来る例を使います。
- すべてのビューアが同様に表示すると思う誤解:アプリやOSによっては制御文字を表示したり除去したり、または既知の拡張子表示設定(拡張子を常に表示)により誤装が見破られる場合があります。
補足コラム
- 関連するUnicode制御文字:
- RLO (U+202E) — 右から左への表示を強制
- LRO (U+202D) — 左から右への表示を強制
- PDF (U+202C) — これらのオーバーライドを終了(Pop Directional Formatting)
攻撃者はRLOを拡張子の直前に挿入し、PDFを入れないままファイル名末尾まで表示方向を逆転させることが多いです。
- 対策例: ファイル名表示で制御文字を可視化・除去する、既知の拡張子を常に表示する、Webやメールで受信時にUnicodeの制御文字をフィルタする、ファイル取得時に実行形式の拡張子を別途チェックする、など。
- 検出スクリプト例(制御文字の有無をチェックする簡易Pythonコード):
bidi_controls = ['\u202A','\u202B','\u202C','\u202D','\u202E']
def has_bidi_control(s):
return any(c in s for c in bidi_controls)
# 例
fn = "report\\u202Epdf.exe" # 実運用では実際のU+202Eを含む文字列をチェック
print(has_bidi_control(fn))
FAQ
Q: RLOを使われたファイルを誤って実行したらどうなる?
A: 見た目は無害な拡張子でも、実際の拡張子(例:.exe)が実行されればマルウェアが動作する可能性があります。実行前にファイルのプロパティやバイト列、拡張子の実体を確認してください。
A: 見た目は無害な拡張子でも、実際の拡張子(例:.exe)が実行されればマルウェアが動作する可能性があります。実行前にファイルのプロパティやバイト列、拡張子の実体を確認してください。
Q: どこにRLOを挿入すれば偽装が成立するのですか?
A: 通常は「実際の拡張子の直前」にRLOを挿入します(例: report\u202Epdf.exe)。これにより「pdf.exe」が表示上「exe.pdf」と見えるようになり、実際は.exeのままです。
A: 通常は「実際の拡張子の直前」にRLOを挿入します(例: report\u202Epdf.exe)。これにより「pdf.exe」が表示上「exe.pdf」と見えるようになり、実際は.exeのままです。
Q: OSやアプリ側で完全に防げますか?
A: 可能な対策はあります(制御文字を表示・除去、拡張子の常時表示、受信時のフィルタなど)が、すべての環境で自動的に排除されるわけではありません。ユーザ側でも不審なファイルに注意する習慣が重要です。
A: 可能な対策はあります(制御文字を表示・除去、拡張子の常時表示、受信時のフィルタなど)が、すべての環境で自動的に排除されるわけではありません。ユーザ側でも不審なファイルに注意する習慣が重要です。
関連キーワード: RLO, 右から左オーバーライド, バイディレクショナル制御, 表示偽装, Unicode制御文字, ファイル名スプーフィング, 拡張子偽装

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

