バッファオーバーフローを引き起こす予期せぬ長さのリクエスト送信に対しては、オブジェクトタイプ(URIの拡張子)ごとのリクエスト長設定によって防御することができる。また、ワームのようなサーバの任意のコードを実行させてしまうようなタイプのバッファオーバーフローに関しては、必要なオブジェクトタイプを登録し、それ以外のアクセスを許さないことによって限定的に防御することができる。
強制ブラウジングを防ぐためには、オブジェクトタイプのチェックによる意図しないファイルタイプへのアクセスからの防御と、正規表現を使用したネガティブセキュリティモデルによるディレクトリトラバーサルからの防御を行う。ディレクトリトラバーサルとは、パスをさかのぼることによって、本来、管理者がユーザーに見せるつもりのないファイルやディレクトリを閲覧したり実行したりする攻撃である。「../」という文字列などをリクエストパスの中に入れる手法がよく使われる。
ユーザーがWebサーバにアクセスした結果として、HTTPのレスポンスコードが返されてくる。レスポンスコードには、動作が正常に受け入れられたことを示す「200」や、リクエストに何らかのエラーがあるためにサーバが処理できなかったことを示す「4xx」、サーバ側で何らかのエラーが発生したことを示す「5xx」などが定められている。
アプリケーションによっては、レスポンスコードだけではなくスクリプトのエラーメッセージを返すものがある。エラーメッセージには悪意のあるユーザーにとってWebアプリケーションの脆弱性の糸口となる情報が含まれている場合がある。
そこで、WAFには「200」以外のレスポンスコードがWebサーバから返される場合、これを任意のレスポンスコードに置き換える機能を持つものがある。例えば、ASMでは標準で設定されているメッセージまたは管理者が設定したコンテンツをそのレスポンスコードとともにクライアントに返すことや、特定のURLへリダイレクトさせることができる。
エラーメッセージと同じく、Webサーバが返す「Serverヘッダ」も攻撃の手掛かりとなることがある。そこでWAFは、Serverヘッダを削除し、クライアント側が「そのWebアプリケーションが、どのWebサーバの、どのバージョンで稼働しているのか」を知られないようにする機能を持つものがある。ASMの場合、BIG-IPの機能を使用することによって指定したヘッダ以外を返さないようにすることもできる。
次回はパラメータレベルの設定や、学習機能、管理機能について紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.