Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Deep in 国際化ドメイン名

Deep in 国際化ドメイン名

KageShiron

March 07, 2023
Tweet

Other Decks in Programming

Transcript

  1. 国際化ドメイン名 (IDN: Internationalized Domain Name) • ドメインをUnicodeに拡大 ◦ 日本語、ドイツ語、絵文字…… ◦

    「日本語ドメイン名」などと表記されることも • 近年では、ソシャゲ攻略サイトなどで使用例あり (◦◦攻略.comなど)
  2. Unicodeはとにかく複雑 絵文字、サロゲートペア、結合文字、異体字セレクタ 言語や文化ごとの事情 • 異言語、異文化のことは理解しにくい • 組み文字、絵文字、筆記体  ㋿ 🉅 〠Ⓐ𝒷  •

    トルコ語やドイツ語では大文字小文字の対応が特殊な文字がある ◦ I⇔ı İ⇔i  小さいIや、でっかいiが存在 ◦ ßの大文字は「SS」
  3. ホモグラフ攻撃 似た字形の偽ドメイン   0とO mとrn   Latin a (U+0041)とCyrillic а (U+0430) ブラウザの緩和策  →文字種を混合したらAラベル表記

    (根本的な解決には至っていない) 日本語同士でも区別がつかない文字 ロ口 日曰 柿杮  引用 :https://thehackernews.com/2017/04/unicode-Punycode-phishing-attack.html
  4. HostSplit ホスト名の検証と不正な正規化による脆弱性  http://evil.c℀.office.com  ℀(U+2100)は正規化するとa / c • 機能A: office.comのサブドメイン •

    機能B: evil.ca/c.office.com .office.comのサブドメインだと認識し、 機密情報をevil.caに送信してしまう BlackHat USA2019で脆弱性の報告があった [引用]Jonathan Birch. Host/split: Exploitable antipatterns in unicode normalization, August 2019. Black Hat USA 2019.
  5. URLの解釈を誤るとどのような問題が起こるのか ……実は具体的な被害の想定が難しい • 「xn--あああ.example.com」が入力できる場所には「evil.example.com」だって入 力できる • 「予期しないホスト名と一致する」ことは脆弱性だが「一致しない」ことで起こる脆弱 性は少ない “example.com” !==

    “EXAMPLE.COM”  ←脆弱ではない • 考えられること ◦ フィッシングや検出回避 ◦ ドメインが一致することを期待した処理  →ある…? ◦ 機能間の解釈の違いを悪用する →発見が難しい 見つかりそうな箇所のアイデアがあれば教えてください。
  6. おまけ:正規化漏れ • 正規化処理が不完全なパターン ◦ 絵文字やUnicodeの処理が誤っていたり • 🈂のような字を正規化せずにAラベルにしてしまうケース ◦ ブラウザ等と解釈が異なる ◦

    スパムフィルタや解析サービスのバイパス • xn--677hをUラベルにして🈂と表示してしまうケース ◦ ドメインを誤認させられるかも …(?)
  7. まとめ • 国際化ドメインは極めて複雑 ◦ 実装はバグだらけ ◦ Uniform Resource IdentifierでIdentifyできる幻想を捨てよう! •

    バグまみれでも脆弱性には直結しにくい ◦ FQDNを完全一致で見ていることが多い ◦ Host/Splitにだけは要注意 ▪ パーサのオプション次第では普通に直撃する