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

Deep in 国際化ドメイン名

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Deep in 国際化ドメイン名

Avatar for KageShiron

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にだけは要注意 ▪ パーサのオプション次第では普通に直撃する