[eWEEK] Webアプリの脆弱性ワースト10とその対策

2003/2/11
Timothy Dyck

 セキュリティ啓蒙サイトのOpen Web Application Security Project(OWASP)が、Webアプリケーションの脆弱性ワースト10の一覧をリリースした。実際に発生した問題(と、これらに対応する各種ソリューション)が数多く取り上げられている。以下に脆弱性のリストとeWeek Labsによる勧告を示す。

【脆弱点1:未検証のパラメータ】
【対策】クライアントPCからWebアプリケーションに送信されてきた入力データを検証せずに受け入れることは絶対に避けること。入力文字列を正規表現を使って低レベルで浄化するか、列挙された数値と照合してチェックする。または、入力データに対してアプリケーションレベルのチェックを実行するというように、入力データは2通りの方法でスキャンを実行するように。

【脆弱点2:アクセスコントロールの破損】
【対策】ユーザーがいったんログインしたら、アプリケーションの各ページは、アクセスコントロールのルールを確実に適用する必要がある。このとき、データストリームの特性だけに依存してはならない。アプリケーションレベルのチェックでもアクセスコントロールを確実に実施する必要がある。重要な作業の前は、セッションハイジャックに対する防衛手段としてトラフィックを暗号化し、リプレイとユーザーの再認証を阻止すること。

【脆弱点3:アカウント解読とセッション管理】
【対策】アタッカーがユーザーのセッション情報にアクセスできてしまうと、認証サブシステム全体を回避することができてしまう。デベロッパは正当な理由がない限り、自前のセッションキー生成コードを利用せず、アプリケーションサーバのセッションキーロジックを利用しなくてはならない。

【脆弱点4:クロスサイトスクリプトの弱点】
【対策】ユーザーの入力を解析してカッコ(「<」など)をHTTPのエスケープシーケンスに変換し、スクリプトコードがサーバに格納されるのを回避する。これらのチェックを回避するために、ASCII文字がUnicodeにエンコードできることを覚えておきたい。

【脆弱点5:バッファオーバーフロー】
【対策】これはバッファオーバーフローに対する保護機能を持たない言語(CやC++が最も問題になっている言語)で書かれたコンポーネントに、ユーザーの入力が渡されたときにだけ発生するリスクだ。従って、これらをWebアプリケーションのコードに組み込むのは回避すること。サードパーティのコンポーネントには常にパッチを当てること。

【脆弱点6:コマンド入力のギャップ】
【対策】コマンド入力のギャップの短所はWebアプリケーションがコマンドターミネーションもしくはコマンドセパレーション文字を排除あるいはエスケープせずにユーザーの入力をOSのプログラムかSQLデータベースに渡したときに露呈、アタッカーが自分の入力データにコマンドを埋め込めるようになってしまう。そして、これらのコマンドはWebサーバもしくはデータベースサーバ上で実行される。データベースはWebユーザーのログイン許可を制限する必要があるのだ。

【脆弱点7:エラーハンドリングの弱点】
【対策】Webユーザーには、決してデフォルトのエラーメッセージを見せてはいけない。エラー状態を検知してごく一般的なメッセージを表示し、情報の流出を回避する。エラートラッキングメカニズムをインストールし、サイトの欠点が探られているときは気づくようにする。

【脆弱点8:暗号の不適切な利用】
【対策】現在主流の言語はすべて強力な暗号をサポートしている。実証済みのアルゴリズムを使い、ソースコードを開示してしまうバグがアプリケーションサーバでは比較的一般的であるため、ソースコードの中にキーを保存するようなことはしないように。

【脆弱点9:リモート管理の問題】
【対策】強力な認証技術を導入し、運用ツールはリモートから使えないようにする。リモート管理が必要な場合は、VPNを使ってネットワークアクセスを制限すること。

【脆弱点10:Webとアプリケーションサーバの誤設定】

【対策】これらのサーバ用ソフトウェアには周到にパッチを当てておく。不必要な拡張機能やデフォルトのアカウントおよびパスワードは削除する。そして情報流出を回避するようアプリケーションを設定する。セキュリティの最優良事例をインプリメントすること。

■Webアプリケーションのための最も確かなセキュリティ確保手段

 Webアプリケーションにおける超一流のセキュリティを実現するためにIT部門がそろえておかなくてはならないツールは次の通りである。

◇Webアプリケーション・スキャナ
 Webアプリケーション・セキュリティ・スキャニング・ツールは、Webアプリケーションに関する各種セキュリティの欠陥を即座に検知することができる。これらをアプリケーションの開発サイクルにおけるセキュリティ問題の発見に利用したい(eWeek Labsによる2002年5月20日の「脆弱性評価パッケージに関する記事」を参照。

<ソリューション>
SanctumのAppScan
SPI DynamicsのWebInspect
KavadoのScanDo
OWASPのWeb Scarab(現在計画段階)
CenzicのHailstorm(上記の各ツールよりも汎用的な障害注入システム)

◇Webアプリケーションファイヤウォール
 これは今後発展する製品カテゴリで、ステートフルトラフィック検査を用いて入ってくるHTTPリクエストをダイナミックに解析およびフィルタリングし、妥当なリクエストのみを受け渡す。未発達の市場セグメントだが潜在的な有効性は高く、われわれ(eWEEK)は、将来的にはこのアプローチで決まりだと考える。

<ソリューション>
SanctumのAppShield
Stratum8 NetworksのStratum8 Application Protection System 100
OWASPのCodeSeeker(Version 1.0は2003年初旬にリリース予定)

[英文記事]
Top 10 Web App Vulnerabilities OWASP list highlights frequent Web application security mistakes.

[関連リンク]
Open Web Application Security Project(OWASP)

[関連記事]
HP、軍事レベルのセキュリティ技術を利用したLinuxを発表 (@ITNews)
Webアプリを“手作業”で検査、三井物産のセキュリティサービス (@ITNews)
新生ノベルのリリース第1弾はセキュリティ製品群 (@ITNews)
「J2EEと.NETは共存、統合可能なWebサービス構築を」とBEA (@ITNews)
セキュリティポリシーで事業を守れ (News Insight)

Copyright(c) eWEEK USA 2002, All rights reserved.

情報をお寄せください:



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