はじめに:BiDi Swapとは
Varonis Threat Labsは、URLスプーフィングを可能にする10年前の脆弱性「BiDi Swap」に注目しています。これは、ブラウザが右から左(RTL)および左から右(LTR)のスクリプトを処理する方法を悪用し、攻撃者が信頼できるかのように見えるURLを作成し、実際には別の場所に誘導するものです。この手法は、フィッシング攻撃で悪用されることがよくあります。
過去のUnicode攻撃とスプーフィング
BiDi Swap以前にも、ユーザーとブラウザの両方を欺いて誤解を招くテキストやURLを表示させる、いくつかのUnicodeベースのトリックが使用されてきました。代表的な例は以下の通りです。
- Punycodeホモグラフ攻撃:国際化ドメイン名(IDN)は、ラテン文字とほぼ同じに見える非ラテン文字(例:ロシア語の「а」、キリル文字の「с」、ギリシャ語の「ο」)をウェブサイトで使用することを可能にします。これにより、「аpple.com」や「рayрal.com」のような、わずかな文字の違いしかない偽のドメインが作成される可能性があります。ブラウザはこれらを一貫した処理のために変換しますが(例:「xn--something」)、攻撃者は視覚的に同一の文字を忍び込ませ、人々を正規のサイトであると信じ込ませます。
- RTLオーバーライドエクスプロイト:一部の攻撃者は、文字列の途中でテキストの方向を反転させる特殊なUnicode文字(例:U+202E)を埋め込みます。これにより、URLパスを偽装したり、ファイル拡張子を無害に見せかけたり、テキストの順序を並べ替えて悪意のあるファイル拡張子を隠したりすることができます(例:「blafdp.exe」→「blaexe.pdf」)。
これらの過去の攻撃は、テキスト処理のわずかなニュアンスがセキュリティに大きな影響を与え、これらのスプーフィングトリックを防ぐために継続的な警戒が必要であることを示しています。
LTR、RTL、そしてBiDiアルゴリズム
テキストの方向に関して、英語やスペイン語のような多くの言語は左から右(LTR)に流れるのに対し、アラビア語やヘブライ語のような言語は右から左(RTL)に流れます。この混在は、すべてを整列させてテキストがごちゃ混ぜにならないようにする必要があるコンピューターにとって課題となります。そこで登場するのが、Unicode標準の一部である双方向(Bidi)アルゴリズムです。Bidiは、コンピューターが同じテキスト内でLTRとRTLのスクリプトを正しく表示するのに役立ちます。
しかし、Bidiアルゴリズムは通常、ドメインを適切に処理しますが、サブドメインやURLパラメータでは苦戦します。このギャップは、LTRとRTLが混在するURLが意図したとおりに表示されない可能性があり、悪意のある行為への扉を開くことになります。
URL構造の再確認
URL(Uniform Resource Locator)は、ウェブ上のリソースを指し示す標準的な方法であり、通常、いくつかの主要なコンポーネントを含んでいます。
- プロトコル(スキーム):リソースへのアクセス方法を定義します(例:「http://」または「https://」)。
- サブドメイン:メインドメインの前のオプションの部分(例:「www.example.com」の「www.」)。大規模なサイト内でコンテンツを整理するために使用できます。
- ドメイン:アドレスの主要部分(例:「example」)。
- トップレベルドメイン(TLD):ドメイン名の末尾(例:「.com」、「.org」、「.net」)。多くの場合、目的や地理的な場所を示します。
- パス:ドメインの後に表示されるディレクトリまたはファイル構造(例:「/blog/posts」)。
- クエリ文字列/パラメータ:サーバーに追加情報を渡すために使用されるキーと値のペア。通常、疑問符で始まります(例:「?id=123」)。
BiDi Swapの動作例
BiDi Swapは、URLの表示を操作することで、ユーザーを欺きます。例えば、右から左に記述される言語の文字と、左から右に記述される言語の文字を組み合わせることで、URLの一部が視覚的に入れ替わって表示されることがあります。これにより、正規のドメインに見せかけたURLの途中に、実際には悪意のあるサイトへの誘導が含まれているにもかかわらず、ユーザーはそれに気づきにくくなります。
特に、サブドメインやURLパラメータの部分でこのトリックが使われると、ユーザーは「varonis.com」のような信頼できるドメインがURLの主要部分であると誤認し、その後に続く悪意のある部分を見落としてしまう可能性があります。
ブラウザの対策
各ブラウザはBiDi Swapに対して異なるアプローチを取っています。
- Chrome:BiDi SwapはChromeで10年以上前から知られている問題です。Chromeの「似たようなURLのナビゲーション提案」機能は部分的な保護を提供しますが、Varonisのテストでは、特定のドメイン(例:「google.com」)のみを警告し、他の多くのドメインは見過ごされていることが示されています。
- Firefox:Firefoxもこれを長年の問題として認識しています。しかし、似たようなURLの提案に頼るのではなく、アドレスバーのドメインの主要部分を強調表示することで、ユーザーが潜在的なスプーフィングや疑わしいリンクを特定しやすくする異なるUIアプローチを採用しています。
- Edge:Microsoftに報告された際、問題は解決済みとされましたが、URLの表示は変更されていないようです。
- ARC:開発は終了していますが、ARCは正しく対処したブラウザの一例です。
結論と推奨事項
BiDi Swapに対抗するためには、以下の推奨事項に従ってください。
- 意識が鍵:常に疑わしいURL、特にスクリプトが混在しているものや予期しないパターンを示すものを確認してください。
- 改善を推進:ブラウザ開発者は、ドメインの強調表示や類似検出などの既存の保護機能を改善し、これらのセキュリティギャップを埋めるべきです。
- ユーザーとチームを教育:リンクにカーソルを合わせる、SSL証明書を確認する、ドメインの一貫性をチェックするなど、全員に推奨してください。数秒の追加確認が、主要なセキュリティリスクを阻止することができます。
