Webアプリの常識をJSPとStrutsで身につける
連載インデックスへ
Webアプリの常識をJSPStrutsで身につける(11)

Webアプリにおける11の脆弱性の常識と対策


株式会社メセナ・ネットコム
山中 秀樹
2009/9/1
本連載は、JSPサーブレットStrutsWebアプリケーション開発を通じて、Java言語以外(PHPASP.NETRuby on Railsなど)の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です

切っても切れない? Webアプリケーションと脆弱性


■ @IT PR:勉強会のお知らせ


11/25(水)「FlexとPHP研究会」 〜PHPプログラマのためのFlex Builder入門〜
PHPプログラマが、Flex Builder上でFlashアプリケーションを開発するうえでのポイントを紹介しつつ、FlexについてのQ&Aやフリートークを交えながら、Flex Builderを使った開発スタイルで“Flash”を覚えるヒントを得ていただければと思います。もちろん懇親会もアリ!

 あらためて確認しておきますが、Webアプリケーションとは、Webサーバ上で動作するソフトウェアのことです。具体例には、オンラインショッピング・オンラインバンキングなどを指し、私たちユーザーはWebブラウザでこれらのサービスを利用します。

 このように、非常に利便性の高いWebアプリケーションでも注意しなければならないことがあります。それは、Webアプリケーションにおけるセキュリティ脆弱性についての問題です。

Webアプリは、開発者による脆弱性への対策が必要

 脆弱性とは、「脆く、傷つきやすく、攻撃に対して弱い」ことです。ハードウェアの欠陥やソフトウェアのバグ、想定外のオペレーションなどが、これに当たります。

 このセキュリティ問題については、一般的にWebアプリケーションの脆弱性をユーザーは意識しないので、ソフトウェアを提供しているベンダが問題を修復する必要があり、Webアプリケーションでは開発者が、セキュリティについて常に留意し、対策を施す必要があります。

Webアプリに対する11の代表的な攻撃手法

 一般的なWebサーバのセキュリティ対策というと、ファイアウォールやウイルス対策などがあります。しかし、Webアプリケーションへの攻撃に対しては、これらの対策だけでは不十分です。

 Webアプリケーションにおけるセキュリティホールの解説を行う前に、どのような攻撃手法が存在するか簡単に整理しましょう。現在、一般的に知られている代表的な攻撃には、以下のようなものがあります。

表 11の代表的な攻撃手法一覧(インデックスになっています)
攻撃手法 概要
XSS(クロスサイトスクリプティング) ユーザーのWebブラウザ上で不正なスクリプトを動かす
強制的ブラウジング アクセス権限のないファイルに直接アクセスする
SQLインジェクション 不正入力により任意のSQL文を実行させる
パラメータの改ざん Webアプリケーションの期待する値とは別の値を送信し、誤操作させる
HTTPレスポンス分割 偽ページを多数のに人々に見せる
OSコマンドインジェクション 不正入力により任意のOSコマンドを実行させる
セッション管理に関する脆弱性 セッション情報の推測や盗用を行う
パス/ディレクトリトラバーサル 公開されていないファイルに直接アクセスする
バッファオーバーフロー 確保されたメモリ容量を超える入力
バックドアとデバッグオプション 開発者がアプリケーションに不正に作り込んだ入り口を利用して不正な操作を行う
エラーコード エラーメッセージの情報を攻撃の糸口にする

 これらの攻撃のほとんどが、ファイアウォールなどでは防ぐことができず、アプリケーションレベルで対応しなくてはなりません。今回は、表にある11種類の脆弱性について解説し、その対策を説明します。

【1】XSS(クロスサイトスクリプティング)

 XSSとは、悪意のあるスクリプトが訪問者のWebブラウザに混入され、実行されてしまう脆弱性のことです。

 例えば、入力した文字を画面に表示させるプログラムがあるとします。このプログラムに適切な入力値チェックが実装されていない場合、悪意のあるスクリプトがWeb画面に埋め込まれてしまい、ユーザーのWebブラウザ上で実行されてしまいます。この結果、セッションの乗っ取りやページの書き換え、強制遷移が可能となるため、フィッシング詐欺や“なりすまし”などの犯罪に利用されます。

 一般的にデータベース中の特殊記号や、ユーザーからの入力内容をそのまま表示すると、XSSの脆弱性の原因となります。

対策

 対策としては、特殊文字のエスケープ入力データチェックなどが必要です。

編集部注:XSSの対策に関しては、以下の記事もご参考にしていただければと思います
適切なエスケープ処理でXSSに備える
Strutsで作るセキュアWebアプリケーション(1)
 JavaでWebアプリを作成するときに、セキュリティで注意すべき点は? 代表的なカスタムタグを分析する
Security&Trust」フォーラム 2006/3/23
サーブレットコンテナが抱える問題を認識する
Strutsで作るセキュアWebアプリケーション(2)
 エラーページの出力が原因となってXSSが引き起こされる可能性がある。サーブレットコンテナに依存しない解決法とは?
Security&Trust」フォーラム 2006/4/27
クロスサイトスクリプティング対策の基本
前編 クロスサイトスクリプティング脆弱性とは?
中編 XSS脆弱性により起こる被害とその対策
後編 XSSを防ぐために不可欠なサニタイジング(無害化)
Webアプリケーションに存在するセキュリティホールが問題となっており、その代表格「XSS」の仕組みを解説しよう
Security&Trust」フォーラム
mod_securityのXSS対策ルールを作成する
Webアプリケーションに潜むセキュリティホール(12)
 Webアプリケーションファイアウォールの「mod_security」を運用する。まずはXSS対策を施してみよう……
Security&Trust」フォーラム 2004/9/16
XSSは知ってても、それだけじゃ困ります?
もいちどイチから! HTTP基礎訓練中(1)
 Webアプリのセキュリティについてもっと詳しく知りたいけれど、まず何を勉強すればいいの? そんな疑問に応える新連載!
Security&Trust」フォーラム 2007/9/28
マルチバイトの落とし穴
星野君のWebアプリほのぼの改造計画(10)
 今日も赤坂さんとお勉強。ちゃんと対策されているようにみえるのに、こんな抜け穴があるなんて!
Security&Trust」フォーラム 2006/9/23
世間の認識とのギャップ――XSSは本当に危ないか?
川口洋のセキュリティ・プライベート・アイズ(13)
 脆弱性が1つでも残ってるだなんて論外という方も多いでしょう。ところでその脆弱性、いったい誰が攻撃するんでしょうか
Security&Trust」フォーラム 2009/3/17

【2】強制的ブラウジング(強制的ブラウズ)

  強制ブラウジングは、情報漏えいにつながる可能性の高い脆弱性の1つで、文字通り強制的に特定のページへアクセスし、情報を取得する攻撃手法です。

 Webアプリケーションプログラム上で、パラメータとしてパス名などを受け入れた場合、Webサーバ経由で本来アクセス権限のないファイルを利用者が取得できてしまいます。このとき、個人情報やサーバの内部情報などが取得されてしまい、個人情報漏えいや、サーバへの攻撃の足掛かりとして利用される恐れがあります。

対策

 対策としては、アクセスされてはいけない情報(個人情報など)をWebサーバのドキュメントルート上に置かないことなどが挙げられます。これは、強制ブラウジングに限らず、データ保存場所が原因となるセキュリティに対して有効です。

編集部注:強制的ブラウジングの対策に関しては、以下の記事もご参考にしていただければと思います

 次ページでは、残りの脆弱性のうち【3】〜【6】について見ていきます。

 
1-2-3-4

 Index
第11回 Webアプリにおける11の脆弱性の常識と対策
Page1
切っても切れない? Webアプリケーションと脆弱性
【1】XSS(クロスサイトスクリプティング)
【2】強制的ブラウジング(強制的ブラウズ)
  Page2
【3】SQLインジェクション
【4】パラメータの改ざん
【5】HTTPレスポンス分割
【6】OSコマンドインジェクション
  Page3
【7】セッション管理に関する脆弱性
【8】パス/ディレクトリトラバーサル(乗り越え)
【9】バッファオーバーフロー(バッファオーバーラン)
【10】バックドアとデバッグオプション
【11】エラーコード
  Page4
バリデーション(入力データチェック)の必要性
コラム 「<nested:root>タグとは」
セキュリティを意識した開発は、Webアプリ開発者の常識





Java Solution全記事一覧



TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH