TOP
>
設計・移行・活用
> セッション管理の不備
脆弱なWebアプリケーション
第1回:Webアプリケーションの脆弱性
著者:
セントラル・コンピュータ・サービス 長谷川 武
2005/4/20
前のページ
1
2
3
4
セッション管理の不備
Webアプリケーションはセッション、すなわち複数のWebページの連鎖で成り立っているが、この繋がりを保つしくみが弱いことがある。
Webサーバへのアクセスを成り立たせているHTTPプロトコルのしくみは、もともとひとつのWebページをサーバからクライアントへ取り込むことだけをサポートしており、ページ間の連携をうまく行うことはWebアプリケーションの責任になっている。多くの場合、ページの連鎖を保つための方策としてWebアプリケーションはブラウザに何らかのパラメータを預け、それをサーバに送り返してもらって前後関係を保っている。
図6:セッションメカニズムと弱点
この、ブラウザに預けられるセッションを追跡するためのパラメータ(多くの場合セッションIDと呼ばれる)が、他人に盗み見られたり、推測されたりすると、他人にセッションを乗っ取られる怖れがある。セッションを乗っ取った側は本人になりかわって好き放題の操作ができる。
ディレクトリトラバーサル
この攻撃は、Webサーバ内の階層型ファイルシステムの中から任意のファイルを抜き出してしまう攻撃である。トラバーサルというのは、ツリー構造をなすデータ構造のすべての枝を渡り歩いて全データを処理することを表すコンピュータ用語だ。
攻撃者はパス名をパラメータとして受け取るプログラムに、親ディレクトリを参照するパス名の相対位置表現「../」を与えて、現在位置づけられている枝から上位の幹へとディレクトリをたどり、保護されねばならないファイルまで取り出してしまう。
図7:ディレクトリの枝をたどる
それ以外の項目
上記で紹介した以外に、「メールの第三者中継」「初期パスワードの不備」「不適切なエラー処理」といった項目が挙がっているが、これらについては連載の中で折りをみて触れたいと思う。また、ここには挙っていないが、まださまざまな脆弱性が存在することを付け加えておきたい。
脆弱性は5つのカテゴリーに分けられる
Webアプリケーションの脆弱性は、攻撃の手口や起こり得る被害もさまざまであり、全体感を捉えることが難しい。米国のWebアプリケーションセキュリティコンソーシアムなどの団体では、これらの脆弱性を分類整理する試みを行っていて参考になるが(
http://www.webappsec.org/projects/threat/
)、ここでは筆者が考案したもっと簡単な5つのカテゴリーを紹介する。
カテゴリー1 「ファイル流出」
結果としてWebサーバからファイルが流出してしまう問題。問題が起こる原因にはさまざまなものがあるが、Webサイトを構築する際の基本的な見落としが要因となることが多い。
カテゴリー2 「パラメータからの情報流出」
複数のページ間で受け渡されるパラメータが攻撃者に干渉されて情報が流出する問題。Webアプリケーションの開発者がブラウザとHTMLのしくみを見落としていると起こりがちな問題である。
カテゴリー3 「セッション乗っ取り」
正規ユーザのセッションが他人に乗っ取られてしまう問題。攻撃手口にはさまざまなものがあるが、Webアプリケーションの開発者がセッションIDの要件、HTTP Cookieの特性、SSLの限界などを読み違えていると起こりやすい。クロスサイトスクリプティングはこのカテゴリーに属する。また、ユーザ認証の場面での脆弱性もここに含まれる。
カテゴリー4 「インジェクション攻撃」
コンピュータの奥深くまで届く入力データの中に攻撃パターンが仕込まれていて、サーバが乗っ取られたりデータベースが干渉されたりする問題。これはコンピュータ内の強力な処理エンジンに単純なコマンドを渡すときに、必要以上の機能が働くことをプログラマが失念していると起こりやすい。SQLインジェクションはこのカテゴリーに属する。
カテゴリー5 「各種の問題」
上記(1)〜(4)に含まれない各種の問題。偽のページを見せる、メールの第三者中継などはここに入る。
まとめ
今回はWebアプリケーションの脆弱性のあらましを簡単に紹介させていただいた。以降の回では、この5つのカテゴリーに沿って踏み込んだ説明をさせていただく。次回の第2回は、カテゴリー1「ファイル流出」を取り上げる。
前のページ
1
2
3
4
著者プロフィール
セントラル・コンピュータ・サービス株式会社 長谷川 武
シニア・セキュリティ・スペシャリスト、IPA 非常勤研究員。2002年にはIPA ISEC『セキュア・プログラミング講座』の制作ディレクターをつとめた。これを契機に、現在は勤務先とそのパートナー企業を通じてセキュアプログラミングセミナー/実習/スキル評価テストといった教育サービスを「TRUSNET(R)アカデミー」として提供している。問い合わせE-mail:
info@trusnet.com
。
INDEX
第1回:Webアプリケーションの脆弱性
脆弱性
Webアプリケーションの脆弱性
価格等の改ざん
セッション管理の不備