アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » なぜPHPアプリにセキュリティホールが多いのか? » 第19回 文字エンコーディングとセキュリティ(1)

なぜPHPアプリにセキュリティホールが多いのか?

第19回 文字エンコーディングとセキュリティ(1)

文字エンコーディングを正しく,厳格に取り扱わないと,システムのセキュリティに大きく影響します。しかし,広く利用されているアプリケーションでも,大手サイトでも文字エンコーディングを不適切に取り扱っているケースは少なくありません。

今回から4回に分けて,セキュリティと文字エンコーディングをテーマに,Webアプリケーションがどのようなセキュリティ対策を取るべきか解説します。攻撃方法の解説ではないので具体的な攻撃方法は解説しませんが,どのように攻撃されるのかは簡単に解説します。

文字エンコーディングは厳格に扱わなければならない

問題の解説を始める前ですが,いきなり結論から入ります。それは,非常に簡単な原則であるにも関わらず,あまり多くのサイトやアプリケーションで守られていないからです。

文字エンコーディング取り扱いの原則
文字エンコーディングは厳格に取り扱い,不正な文字エンコーディングを検出した場合,致命的なエラーとして処理しなければならない

これから解説する文字エンコーディング関連の脆弱性は,この原則を守っているだけで多くの問題が防げます。では,早速ですが文字エンコーディングを利用したセキュリティ上の問題を解説します。

文字エンコーディングを利用した攻撃の認知

筆者の知る限り,文字エンコーディングを利用した攻撃を紹介したのは2000年2月にUS-CERTとMicrosoft社が共同で警告した,クロスサイトスクリプティング脆弱性のアドバイザリが初めてです。このアドバイザリ(CA-2000-02)の中で,動的にコンテンツを生成するページではHTTPヘッダで文字エンコーディングを指定しなければならない,としています。

CA-2000-02の

  • Solutions for Web Page Developers and Web Site Administrators (Webページ開発者とWebサイト管理者の対策)

の中で

In addition, web pages should explicitly set a character set to an appropriate value in all dynamically generated pages.

(それに加えて,全ての動的に生成されたWebページは明示的に適切な文字コードセットを設定しなければならない)

としています。

文字エンコーディングを利用した攻撃にはさまざまな種類がありますが,文字エンコーディングを利用した攻撃の危険性を具体的に解説したのは,クロスサイトスクリプティング(JavaScriptインジェクション)の危険性を指摘したこのアドバイザリが初めてだと思います。最初に書いた結論と同じく,文字コード(文字エンコーディング)を適切(明示的)に取り扱うことがクロスサイトスクリプティング攻撃を防ぐための対策として必要である,としています。

文字エンコーディングを利用した攻撃の種類

US-CERTのCA-2000-02を見ると,Webアプリケーションでは文字エンコーディングは厳格に取り扱うべき情報である,と分かると思います。しかし,攻撃対象となるアプリケーションはWebアプリケーションとは限りません。

文字エンコーディングを利用した攻撃対象にはさまざまなバリエーションがあります。

  • SQLインジェクション
  • XPathインジェクション
  • JavaScriptインジェクション
  • HTMLインジェクション
  • XMLインジェクション

JavaScript,HTMLインジェクションはWebアプリケーションが攻撃対象といえますが,マルチバイト文字を取り扱うシステムであれば,文字エンコーディング攻撃に脆弱になる可能性があります。攻撃対象は多いですが,基本的な攻撃の原理は同じです。原理が同じなので対策もほぼ同じなります。この事実は開発者にとって非常に重要ですが,広く知られている,とは言えないのが現状です。

原理は同じで対策もほぼ同じと書きましたが,

  • パス遷移攻撃 (ディレクトリトラバーサル)

文字エンコーディングを利用したこの脆弱性の攻撃は,ほかの脆弱性と種類が異なるので対策が異なります。詳しくは解説しませんが,文字エンコーディング以外のエンコーディングも攻撃に利用可能である例も紹介します。

まとめ

どのように攻撃されるのかは紹介しませんでしたが,文字エンコーディングを利用した攻撃が幾つも存在することを理解していただけたと思います。次回は文字エンコーディングを利用した攻撃の原理を解説します。

著者プロフィール

大垣靖男(おおがきやすお)

University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て,エレクトロニック・サービス・イニシアチブ有限会社を設立。
オープンソース製品は比較的古くから利用し,Linuxは0.9xのころから利用している。オープンソースシステム開発への参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトでは,PostgreSQLモジュールのメンテナンスを担当している。

URLhttp://blog.ohgaki.net/

著書

  • Webアプリセキュリティ対策入門〜あなたのサイトは大丈夫?

    Webアプリセキュリティ対策入門〜あなたのサイトは大丈夫?

  • [改訂版]PHPポケットリファレンス

    [改訂版]PHPポケットリファレンス

トラックバック

  • PHPセキュリティー対策

    PHPセキュリティー対策のメモ※注:php超初心者のメモです



    文字や文字列長を制限する

    使う予定の無い文字の存在は?配列の数が多くないか?
    数字を扱う場合は、その数字...

    Tracked : #1  SideSiteNote (2009/05/21, 14:21)

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

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

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

読むウェブ ~本とインタラクション

ディスプレイで読む活字とそのインタラクション(interaction:相互作用)について,最新Webを紹介しながら読み解いていく。

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

ここは知っておくべき!Windows Server 2008技術TIPS

5年ぶりのサーバOSとなったWindows Server 2008が出荷されて早2年。2009年にはR2が出荷され,再び注目を集めています。発売前から実施したトレーニングによって感じた,インフラエンジニアの方々に知っておいていただきたい機能を中心にご紹介します。

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

連載一覧

gihyo.jp

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

書籍案内

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

定期刊行物一覧

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