Webアプリケーションの脆弱性のほとんどは、開発時のささいなミスから生じる。Webアプリケーションの攻撃から保護するには、専門家によるペネトレーションテストが有効だ。
最近、Webアプリケーションに存在するセキュリティホールが注目を浴びている。Webサーバのセキュリティ対策というと、一般にファイアウォール、IDS(不正侵入検知システム)、ウイルス対策などがよく知られてきた。しかし、Webアプリケーションへの攻撃に対しては、これらの対策だけでは不十分である。
一般的に広く使われているWebアプリケーションであれば、IDSのようなもので特定パターンを検知して、攻撃を防ぐことは可能だ。しかし、Webアプリケーションのほとんどが独自に開発されたものであるため、一般的なパターンを検知するだけでは攻撃を防げないのが現状である。
そこで、攻撃を受けないために、あらかじめ検査を行う防御策を実施する必要がある。今回は、開発したWebアプリケーションに脆弱性が存在しないか、検査する手法を紹介する。
Webアプリケーションの検査の方法を説明する前に、どのような攻撃手法が存在するか、簡単に整理しておこう。現在、一般的に知られている代表的な攻撃には以下のようなものがある。
バッファオーバーフロー(Buffer Over Flow) | 確保されたメモリ容量を越える入力データを与え、不正プログラムを実行させる |
---|---|
クロスサイトスクリプティング(Cross Site Scripting) | ユーザーのブラウザ上で不正なスクリプトを動かす |
パラメータの改ざん(Parameter Manipulation) | Webアプリケーションの期待する値とは別の値を送信し、誤動作をさせる |
バックドアとデバッグオプション(Backdoor & Debug Option) | 開発用、管理者用の秘密の入り口を探す |
セッションの悪用(Session Exploitation) | セッション情報の推測、盗用を行う |
SQLインジェクション(SQL Injection) | 不正入力により任意のSQL文を実行させる |
OSコマンドインジェクション(OS Command Injection) | 不正入力により任意のOSコマンドを実行させる |
クライアントサイドコメント(Client Side Comment) | HTML内に記述されたコメントから重要な情報を取得する |
エラーコード(Error Codes) | エラーメッセージの情報を攻撃の糸口にする |
強制的ブラウジング(Forceful Browsing | 公開されていないファイルに直接アクセスする |
不必要情報(Unnecessary Information) | 本来公開する必要のない情報から重要な情報を取得する |
HTTPSの誤用(HTTPS Misuse) | HTTPSを利用していない重要な情報のやり取りを盗聴する |
フィルターのバイパス(Filter Bypassing) | エンコードした文字列を用いてフィルターを回避する |
クロスサイトリクエストフォージェリ(Cross Site Request Forgery) | 正規のユーザーの権限を利用し、特定の処理を行うページに誘導させ強制的に 意図しない処理を行わせる |
これらの攻撃のほとんどが、ファイアウォールやIDSなどでは防ぐことができず、アプリケーションレベルで対応しなくてはならない。
Copyright © ITmedia, Inc. All Rights Reserved.