PR

 Webアプリケーションシステムには特有の脆弱性が多く存在している。また,昨今のアプリケーションの多くでWebアプリケーションが利用されることが多くなってきた。PCI DSSでは,その脆弱性を利用した攻撃からカード会員データを保護するため,PCI DSS Ver1.1で新たに要件6.6を定めている。

 この要件は,“2008年6月30日まではベストプラクティス”としているが,それ以降は必須要件となる。従って,PCI DSS Ver1.0に準拠している組織にとっても注意が必要である。以下,要件6.6にて定めるアプリケーション防護策について述べる。

すべてのWebに面したアプリケーションは,以下のどちらかの手法を適用することで,既知の攻撃から防護されなければならない。
・カスタム・アプリケーション・コードについては、アプリケーションセキュリティに特化した組織に依頼して、一般的な脆弱性についての見直しをしてもらう。
・Webに面したアプリケーションの手前に、アプリケーション・レイヤー・ファイアウォールをインストールする。
注:この手法は2008年6月30日まではベストプラクティスの一つであるが、その後は必須要件となる。

ソースコード・レビューの実施

 ソースコード・レビューは,要件6.5で定めている各種ガイドラインに従った安全なコーディング技術による実装がなされており,対象となるアプリケーションに脆弱性が潜んでいないか,ソースコードを直接確認する手法である。また,アプリケーション・レイヤーにおけるペネトレーション・テストのようなブラックボックス・テストと比較して,ソースコード・レビューはアプリケーションのソースコードを直接確認するホワイトボックス・テストであるため,より確実にアプリケーションに潜む脆弱性を発見できる可能性が高い。

 その一方で,手動でのソースコード・レビューでは,人的資源や技術スキル・経験を必要とするためコストが高く,またツールを使用した場合でも脆弱性の検知漏れ・誤検知は避けられない。

 どちらのテスト方法にも長所と短所があるため,効率良くアプリケーションの脆弱性を検出するには,ソースコード・レビューと脆弱性検査ツールによるテストを組み合わせるとよい。

Webアプリケーション・ファイアウオールの実装

 ソースコード・レビューの他に,「アプリケーション・レイヤー・ファイアウオール」の導入が定められている。要件6.6では,「Webに面したアプリケーションの手前」となっているが,PCI SSCが提供する監査手順には,「Webベースの攻撃を検出および予防するために」と示されていることから,一般にWebアプリケーション・ファイアウオール(WAF)と分類されるセキュリティ製品の導入を求めているものと解釈できる。

 一般的にWebサーバー/Webアプリケーション・サーバーとインターネットとの間には,ファイアウオール(ネットワーク・ファイアウオール)を設置し,セキュリティを確保している。しかし,ファイアウオールで許可された通信(httpやhttps)を利用した攻撃に対しては弱い。その対策として,WAFを導入し,悪意を持ったユーザーからの攻撃に備える必要がある。

 図3に,WAFの配置例を示す。

図3●Webアプリケーション・ファイアウオール(WAF)の配置例
図3●Webアプリケーション・ファイアウオール(WAF)の配置例

ポジティブ・セキュリティ・モデルとネガティブ・セキュリティ・モデル

 WAFは,設定された条件に従って,通信の遮断などの処理を行う。条件設定の方法には「ポジティブセキュリティモデル」と「ネガティブセキュリティモデル」の二つのモデルがある。

 ポジティブ・セキュリティ・モデルは“正常な通信”として定義されたパターン(ホワイトリスト)にマッチした通信だけを通過させ,マッチしない通信は全てブロックする方式である。ネガティブ・セキュリティ・モデルは,アンチウイルス・ソフトウエアやIDS/IPSのように“パターンファイルやシグネチャとの照合”による判断を行うといった,いわば“ブラックリスト”にマッチした通信をブロックする方式である。

 Webアプリケーションに対する攻撃は様々な応用パターンやシグネチャとの照合を回避するパターンが存在するため,すべて明示的に攻撃パターンを定義することが難しく,ネガティブ・セキュリティ・モデルで用いるシグネチャでは,すべてのパターンをカバーすることが困難である。

 そのため,WAF製品の多くは,ポジティブ・セキュリティ・モデルをベースとしている。図4に,ポジティブ・セキュリティ・モデルとネガティブ・セキュリティ・モデルについて示す。

図4●ポジティブ・セキュリティ・モデルとネガティブ・セキュリティ・モデル
図4●ポジティブ・セキュリティ・モデルとネガティブ・セキュリティ・モデル