本当は怖い文字コードの話
第9回 文字コードが引き起こす表示上の問題点[前編]
文字コードが引き起こす問題点は,これまで説明したような比較の一致・不一致といったソフトウェアの処理上のものだけでなく,人間に対する視覚的な効果という点でも強く影響を与え,攻撃者にとっての強力な道具となることがあります。
今回および次回で,そのような文字コードが引き起こす視覚的な問題点を紹介します。
視覚的に似た文字
見かけのよく似た文字は,フィッシングなどによく利用されます。典型的な例としては,アルファベット小文字のl(エル)と数字の1などがあります。たとえば,http://bank1.example.jp/ というURLのオンラインバンクがあったとすると,攻撃者は http://bankl.example.jp/ というURLを使ってフィッシングを企むということは容易に想像できると思います。
もちろん,収録している文字数が増えれば増えるだけ,このように見かけのよく似た文字が存在する率も高くなり,Unicodeでは非常に多数の文字でそのような事象が起こり得ます。特に,国際化ドメイン(IDN)においてはドメイン名としてUnicodeの多数の文字が利用可能になるため,それだけ攻撃者としての持ち札も多いということになります。
たとえば,gihyo.example.jp というドメインが存在したとして,それに対する偽装ドメインを考えてみます。Unicodeにはアルファベットの g と見かけのよく似た文字として,U+0261「Latin Small Letter Script G」という文字が定義されていますので(図1),これを利用することにします。
ドメイン名として,この U+0261 を含めた [U+0261]ihyo.example.jp というドメインに対していくつかのブラウザで実際にアクセスしたところ,各ブラウザのアドレスバーは図2~6のような表示になりました。
IEではドメインに不適切な文字が含まれている旨を警告するメッセージが表示されていますが,他のブラウザではそのような警告は表示されず,またFirefoxおよびOperaにおいてはIDNをそのまま表示しているため,アドレスバーを目視で確認するだけでは,これが正規のgihyo.example.jp というドメインなのか,攻撃者の用意した[U+0261]ihyo.example.jp という偽ドメインなのか簡単には判別できません。
Firefoxでは,about:configから network.IDN_show_punycode をtrueに設定することで,アドレスバーに「[U+0261]ihyo.example.jp」というUnicode表示ではなく,「xn--ihyo-z7b.example.jp」というpunycodeでの表示をさせることも可能ですが,正しくIDNを使っているサイトでの視認性が下がるということもあり,誰にでも容易に勧められる対策ではありません。
このように,IDNにおいてはこれまで以上にアドレスの偽装が攻撃者にとっては有利になりそうですので,今まで以上の注意が必要となりそうです。
見えない文字
Unicodeに含まれる多数の文字の中には,視覚的に確認しにくい「見えない」文字もいくつか定義されています。代表的なものとしては,表1のようなものがあります。
表1 「見えない」文字
コードポイント | 名称 |
---|---|
U+200B | ZERO WIDTH SPACE |
U+200C | ZERO WIDTH NON-JOINER |
U+200D | ZERO WIDTH JOINER |
U+202A | LEFT-TO-RIGHT EMBEDDING |
U+FEFF | BYTE ORDER MARK(ZWNBSP) |
たとえば,これらをファイル名やレジストリ名の一部として含めると,見かけ上はすでに存在するものと同じように見えるファイルやレジストリを作成することができます。
こういった点がセキュリティ上の脅威に直接つながることは少ないとは思いますが,たとえばレジストリ上に存在するRunやRunOnce,あるいは他の重要なレジストリエントリを削除しつつ,それらを存在するかのように見せかけて管理者を混乱させるワーム,というようなものは出てくるかも知れません。
-
気になった記事(20091026)
Security関連
* ランダムIPアドレスの発生源を特定
* この種の調査は本当に時間がかかるし、技術もいるので大変。
* ワーム「Conficker」対策? 実は偽セキュリティソフト型「FAKEAV」に感染
* FakeAV系ですね。知識が半端だと簡単にだまされます。
* 一番...Tracked : #1 ほほほのほ (2009/10/26, 13:27)