HTTP,Webアプリケーション関連の脆弱性としては、
主に以下の種類があります。
(HTTPについてはこちら
→ HTTP/HTTPSとはなにか。 )
セッション管理の脆弱性
・HTTPパケットの盗聴によって、セッション情報が盗まれる可能性がある。
(HTTPパケットは暗号化されていないため、簡単に盗聴が可能性がある。)
・Webサーバとクライアント間のやりとりにおいて、詳細なセッション管理情報を盗まれる可能性がある。(GETメソッドでリエリストリングを使用して詳細なセッション管理情報をやりとりしている場合は特に危険。)
・Referrerログから他のWebサイト管理者にセッション管理情報が漏洩する可能性がある。
(GETメソッドでリエリストリングを使用して詳細なセッション管理情報をやりとりしている場合は特に危険。)
・hiddenフィールドの改ざんにより、不正な処理を執行される可能性がある。
・クロスサイトスプリプティングの脆弱性により、クッキーにセットされたセッション管理情報が盗まれ、悪用される可能性がある。
・クッキーのセキュア属性が設定されていないと、HTTP通信でもクッキーが送られ盗聴される危険性が高まる。
【基本的な対策としては、次の内容が挙げられる。】
・重要な情報を扱う場合は、HTTPSによって通信する。
・セッション管理情報は全てWebサーバ側で管理し、クエリストリング、クッキー、hiddenフィールドにはセッションIDのみしか含めないようにする。
・重要な情報を扱うWebページではPOSTメソッドを用いてセッション管理情報を隠蔽し、GETメソッドではデータを渡さないようにする。
・HTTPとHTTPSでアクセスするWebページがまたがっている場合、二つのクッキーを発行し、一方を「セキュア属性なし」にてHTTPのページで使用し、もう一方を「セキュア属性あり」にしてHTTPSのページで使用する。
・入力データに含まれるメタキャラクタのエスケープ処理を行い、クロスサイトスプリプティングの脆弱性を残さない。
HTTPの脆弱性
・HTTPは平文でデータの通信を行うため、パケットの盗聴によって情報が盗まれたり、改ざんされる可能性がある。
・HTTPの基本機能であるベーシック認証の脆弱性から、認証情報を盗まれる可能性がある。
【基本的な対策としては、次の内容が挙げられる。】
・重要な情報を扱うページではHTTPSの通信を行うこと
認証を行う画面及び、認証後画面においてもHTTPSの通信を行うこと
・ベーシック認証は極力使用せず、フォーム認証または、HTTPダイジェスト認証を用いる
( フォーム認証:認証用の入力フォームを用いる
HTTPダイジェスト認証:チャレンジレスポンス方式とMD5を使用 )
Webサーバの脆弱性
・設定不備によって、機密情報にアクセスされたり、情報漏洩が発生する可能性がある。
・Webサーバの種類やバージョンによって、BOF攻撃を受ける可能性がある。
・コマンドやメソッドの設定不備によって、コンテンツの改ざん・情報漏洩につながる可能性がある。
【基本的な対策としては、次の内容が挙げられる。】
・Webサーバのバージョンは最新に保ち、パッチを適用する。
・不要な機能は無効にする。
・サーバやディレクトリへのアクセス制限を設定する。
・IPS装置を用いてOSやWebサーバの脆弱性を突いた攻撃を遮断する。
Webアプリケーションの脆弱性
・クロスサイトスプリプティングの脆弱性により、悪意のあるスクリプトが実行されてしまう可能性がある。
・SQLインジェクションの脆弱性により、データベースの情報を不正に取得・改ざん・破壊される可能性がある。
・OSコマンドの脆弱性により、Webサーバ上のファイルの呼出し・削除、パスワードの不正取得などが行われる可能性がある。
・HTTPヘッダインジェクションの脆弱性により、クライアントに不正なデータが送られる可能性がある。
【基本的な対策としては、次の内容が挙げられる。】
・WebアプリケーションからDBサーバへのリクエストの処理において、バインド機構を優先的に用いる。(SQLインジェクション対策)
・DBサーバの設定により、WebアプリケーションからDBに対するクエリを必要最小限の権限をもつアカウントで処理を行う。(SQLインジェクション対策)
・WebアプリケーションにおいてOSコマンドの呼出しが可能な関数を極力使用しないようにする。(OSコマンドインジェクション対策)
・Webアプリケーションファイアウォールを導入し、Webアプリケーションの脆弱性を突いた攻撃を防御する。
(→ WAFとは )
コメント