BLOG NO.11 OWASP CRSの概要

OWASP CRSはWAF(Web Application Firewall)のオープンソースであるModsecurityで動作するルールセットで無償で提供されています。多くのWAFベンダーやWAFを実装するセキュリティ機器ベンダーではOWASP CRSをベースにしたシグネチャの提供を行っています。
一般的なWAFはシグネチャと呼ばれる攻撃の識別情報を持っており、通信パケットとマッチングを行い攻撃かどうかを判断しています。一方OWASP CRSは通信パケットの構造をベースに攻撃パターンを判断します。この判断にはシグネチャ情報も含まれますが、構文解析などのアルゴリズムで攻撃の構造を判別して高度な攻撃検知を実現しています。また、各ルールには「Severity Level」(脅威の判定)と「paranoia-level」(プロテクション強度)の設定ができ、サイトで提供するサービスの重要度や対象とするユーザに応じてセキュリティレベルの設定を可能にしています。
OWASP CRSには、2つの拡張子(.conf 、.data)を持つファイル群で構成されています。.confファイルはプロテクションのためのアルゴリズムが定義されており、.dataは攻撃パターンをマッチングするためのデータで、従来のWAFのシグネチャーに相当するものです。更に、.confファイルはリクエストルールとレスポンスルールがあり、リクエストルールでは攻撃別にファイルが分けられています。レスポンスルールは攻撃を防ぐためではなく、情報漏えいを防止するものです。リクエストルールには攻撃パターンに応じて複数ファイルがあり、各ファイルは攻撃に応じたルールが複数収納されています。つまり、アプリケーションの脆弱性が発見できた場合、その脆弱性への攻撃パターンファイルを特定し、その中から対策に有効なルールをインストールすることで、WAFが正しく機能することになります。
もう一つ、OWASP CRSには特徴的なルールセットがあります。ファイル名にEXCLUSIONという文字があるルールです。EXCLUSIONは「除外する」という意味で、誤検知の対策に用意されたものです。過度に反応するルールに対して、その反応を和らげる効果があるようです。実績ベースでのルールですので、セキュリティレベルが低下する心配は無いようです。ただし、このルールは、すべての誤検知を対策するものではなく、特定アプリケーション向けに対策を施したものです。特定アプリケーションにはWORDPRESS等が含まれています。
以下にOWASP CRSのファイル構成をリストします。
| In/out | ファイル略名 | 説明 |
| リクエストルール | 903.9001-DRUPAL-EXCLUSION-RULES | Drupalを使ったCMSの誤検知対策 |
| 903.9002-WORDPRESS-EXCLUSION-RULES | WordPressを使ったサービスの誤検知対策 | |
| 903.9003-NEXTCLOUD-EXCLUSION-RULES | Nextcloudを使ったサービスの誤検知対策 | |
| 903.9004-DOKUWIKI-EXCLUSION-RULES | DokuWikiを使ったサービスの誤検知対策 | |
| 903.9005-CPANEL-EXCLUSION-RULES | cPanelを使ったサービスの誤検知対策 | |
| 903.9006-XENFORO-EXCLUSION-RULES | XenForoコミュニティ の誤検知対策 | |
| 905-COMMON-EXCEPTIONS | 一般的な誤検知対策 | |
| 910-IP-REPUTATION | 悪意のある通信で使われるIPアドレスを排除 | |
| 911-METHOD-ENFORCEMENT | 問題のあるHTTPメソッドをブロック | |
| 912-DOS-PROTECTION | DOS攻撃の検知とブロック | |
| 913-SCANNER-DETECTION | スキャナーやBOT等の自動化ツール攻撃の対策 | |
| 920-PROTOCOL-ENFORCEMENT | HTTPプロトコル違反の検知 | |
| 921-PROTOCOL-ATTACK | プロトコルベースの攻撃を検知 | |
| 922-MULTIPART-ATTACK | マルチパートリクエスト攻撃の検知 | |
| 930-APPLICATION-ATTACK-LFI | ローカルファイルインクルージョン攻撃の対策 | |
| 931-APPLICATION-ATTACK-RFI | リモートファイルインクルージョン攻撃の対策 | |
| 932-APPLICATION-ATTACK-RCE | リモートコード実行攻撃の対策 | |
| 933-APPLICATION-ATTACK-PHP | PHPコードインジェクション攻撃の対策 | |
| 934-APPLICATION-ATTACK-NODEJS | Node.JSの脆弱性対策 | |
| 941-APPLICATION-ATTACK-XSS | クロスサイトスクリプティング攻撃の対策 | |
| 942-APPLICATION-ATTACK-SQLI | SQLインジェクション攻撃の対策 | |
| 943-APPLICATION-ATTACK-SESSION-FIXATION | セッションID攻撃の対策 | |
| 944-APPLICATION-ATTACK-JAVA | JAVAの脆弱性対策 | |
| 949-BLOCKING-EVALUATION | anomaly score レベルの誤検知対策 | |
| レスポンスルール | 950-DATA-LEAKAGES | エラーメッセージの情報漏えい対策 |
| 951-DATA-LEAKAGES-SQL | SQLの情報漏えい対策 | |
| 952-DATA-LEAKAGES-JAVA | JAVAの情報漏えい対策 | |
| 953-DATA-LEAKAGES-PHP | PHPの情報漏えい対策 | |
| 954-DATA-LEAKAGES-IIS | IISの情報漏えい対策 | |
| 959-BLOCKING-EVALUATION | anomaly score レベル漏えい対策 | |
| 980-CORRELATION.conf | インバウンド/アウトバウンドの関連付け |
![]()
By ADC Engineers