採用情報技術評論社 2012年度新卒採用のお知らせ

gihyo.jp » ADMINISTRATOR STAGE » 連載 » 本当は怖い文字コードの話 » 第9回 文字コードが引き起こす表示上の問題点[前編]

本当は怖い文字コードの話

第9回 文字コードが引き起こす表示上の問題点[前編]

この記事を読むのに必要な時間:およそ 2 分

文字コードが引き起こす問題点は,これまで説明したような比較の一致・不一致といったソフトウェアの処理上のものだけでなく,人間に対する視覚的な効果という点でも強く影響を与え,攻撃者にとっての強力な道具となることがあります。

今回および次回で,そのような文字コードが引き起こす視覚的な問題点を紹介します。

視覚的に似た文字

見かけのよく似た文字は,フィッシングなどによく利用されます。典型的な例としては,アルファベット小文字の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),これを利用することにします。

図1 U+0261:Latin Small Letter Script G

図1 U+0261:Latin Small Letter Script G

ドメイン名として,この U+0261 を含めた [U+0261]ihyo.example.jp というドメインに対していくつかのブラウザで実際にアクセスしたところ,各ブラウザのアドレスバーは図2~6のような表示になりました。

図2 Internet Explorer 8でアクセスした場合

図2 Internet Explorer 8でアクセスした場合

図3 Firefox 3.5.3でアクセスした場合

図3 Firefox 3.5.3でアクセスした場合

図4 Google Chrome 3.0.195.27でアクセスした場合

図4 Google Chrome 3.0.195.27でアクセスした場合

図5 Opera 10.00でアクセスした場合

図5 Opera 10.00でアクセスした場合

図6 Safari 4.0.3でアクセスした場合

図6 Safari 4.0.3でアクセスした場合

IEではドメインに不適切な文字が含まれている旨を警告するメッセージが表示されていますが,他のブラウザではそのような警告は表示されず,またFirefoxおよびOperaにおいてはIDNをそのまま表示しているため,アドレスバーを目視で確認するだけでは,これが正規のgihyo.example.jp というドメインなのか,攻撃者の用意した[U+0261]ihyo.example.jp という偽ドメインなのか簡単には判別できません。

Firefoxでは,about:configから network.IDN_show_punycodetrueに設定することで,アドレスバーに「[U+0261]ihyo.example.jp」というUnicode表示ではなく,「xn--ihyo-z7b.example.jp」というpunycodeでの表示をさせることも可能ですが,正しくIDNを使っているサイトでの視認性が下がるということもあり,誰にでも容易に勧められる対策ではありません。

このように,IDNにおいてはこれまで以上にアドレスの偽装が攻撃者にとっては有利になりそうですので,今まで以上の注意が必要となりそうです。

見えない文字

Unicodeに含まれる多数の文字の中には,視覚的に確認しにくい「見えない」文字もいくつか定義されています。代表的なものとしては,表1のようなものがあります。

表1 「見えない」文字

コードポイント名称
U+200BZERO WIDTH SPACE
U+200CZERO WIDTH NON-JOINER
U+200DZERO WIDTH JOINER
U+202ALEFT-TO-RIGHT EMBEDDING
U+FEFFBYTE ORDER MARK(ZWNBSP)

たとえば,これらをファイル名やレジストリ名の一部として含めると,見かけ上はすでに存在するものと同じように見えるファイルやレジストリを作成することができます。

図7 同じに見えるファイル名

図7 同じに見えるファイル名

図8 同じに見えるレジストリキー

図8 同じに見えるレジストリキー

こういった点がセキュリティ上の脅威に直接つながることは少ないとは思いますが,たとえばレジストリ上に存在するRunやRunOnce,あるいは他の重要なレジストリエントリを削除しつつ,それらを存在するかのように見せかけて管理者を混乱させるワーム,というようなものは出てくるかも知れません。

著者プロフィール

はせがわようすけ

ネットエージェント株式会社 研究開発部。
Unicodeなどの文字コードが引き起こすセキュリティ上の問題点について調査・研究を行っている。Internet Explorer,Mozilla Firefox をはじめソフトウェア製品およびWebアプリケーションに関する脆弱性を多数発見。

URLhttp://utf-8.jp/

トラックバック

  • 気になった記事(20091026)

    Security関連
    * ランダムIPアドレスの発生源を特定
    * この種の調査は本当に時間がかかるし、技術もいるので大変。
    * ワーム「Conficker」対策? 実は偽セキュリティソフト型「FAKEAV」に感染
    * FakeAV系ですね。知識が半端だと簡単にだまされます。
    * 一番...

    Tracked : #1  ほほほのほ (2009/10/26, 13:27)

コメント

コメントの記入

G-CLOUD

ピックアップ

サイバーエージェントを支える技術者たち

「アメーバブログ」などを展開するAmebaを運営するサイバーエージェントの技術者に,多くの魅力的なサービスを支える秘密を伺いました。

大規模ソーシャルサービス mixiのインフラ技術

日本最大のSNS「mixi」を支えるべく活躍するエンジニアが,日々の運用にまつわるさまざまなできごとを紹介します。

業務アプリケーションがUIフレームワークに求めるカスタマイズ性とは?

アプリケーション開発をサポートするさまざまなツールを紹介。今回も業務アプリケーション開発にフォーカスを当て,XAMLを取り上げます。

エンジニアパワーアップ講座 ~システム基盤を活用するための基礎知識~

イマドキのエンジニアに要求されるさまざまな知識や能力。これらを効率よくキャッチアップしていくヒントをいろいろな視点から取り上げます。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた情報や魅力を多角的に紹介します。

その他の連載

使える!サーバ運用の実践テクニック

確実性と永続性が求められる業務の現場では,どのような技術が,どのように組み合わせられ,使われているのか。さまざまな面で必要とされるスキルやテクニックを紹介していきます。

無関心な現場で始める業務改善

業務改善に着手したものの,現場は無関心,経営者は担当者に丸投げという経験はありませんか?『上流モデリングによる業務改善手法入門』の内容を参照しながら,経営を巻き込み,現場をその気にさせる働きかけと様々な仕掛け作りをお伝えしていきます。

KVMで始めるプライベート・クラウドへの第一歩

KVM(Kernel-based Virtual Machine)は,Linuxカーネルに備わっている仮想化機能です。仮想環境,クラウド環境の構築において非常に重要な技術と言えます。本連載では,KVMの導入構築方法,管理方法などを紹介していきます。

Hosting Department:ホスティングを活用するための基礎知識

本連載では,ホスティングサービスを活用する上で知っておきたい基礎知識を解説します。

CMSのポテンシャルを引き出す─MODxで作る商用サイト

筆者が作成,運用している商用サイトの構築を例に,OSSのCMSであるMODxを使った商用サイトを作るためのポイントを紹介していきます。

Lifelog~毎日保存したログから見えてくる個性

コンピュータを使って,日常のさまざまなことの記録(ログ)をとり,それを分析して活用することで,もう一段階上の「楽な生活」をめざす日々の研究報告です。

帰ってきた大規模Webサービスの裏側

日本最大規模のSNS「mixi」運用部門の担当者が,日々直面する業務やネットワーク運用の最新事情を紹介します。

本格派エンジニアの工具箱

アプリケーションの開発効率を向上させるためには,自身のコーディング能力を向上させるのと同時に,開発をサポートするツールやライブラリ,フレームワークを適切に使いこなすことが重要です。この連載では,アプリケーション開発をサポートするさまざまなツールについて,使い方を交えながら紹介していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT
  • CLOUD COMPUTING STAGE

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス