OWASP Core Rule Set: how a shared WAF rule set decides

The OWASP Core Rule Set (CRS) is an open set of generic attack-detection rules for ModSecurity and compatible web application firewalls. It describes common attack shapes once, so that each site using it does not have to write them itself. What each site still has to do is fit the rules to its own traffic.

Section Rules Updated Release 4.30.0

Quick facts

Maintained by
The OWASP CRS project
Current releases
4.30.0, with 4.25.2 as the long-term support line; checked on 8 October 2026
Engines
ModSecurity and Coraza
How it decides
Anomaly scoring: matches add points, and a threshold decides
Older line
CRS 3.3.x has reached end of life

Version numbers move often. The release page on coreruleset.org is the place to confirm the current one before relying on it.

The rule set and the engine

CRS is a set of rules, and rules do nothing on their own. An engine reads each request, runs the rules against it, and acts on the result.

The engine CRS grew up with is ModSecurity. Its long-time commercial steward ended support in July 2024, and custody of the project moved to OWASP that year, where CRS already lived. Coraza is a second engine that runs the same rules.

The split matters when reading a vendor's description. A product that runs CRS inherits its coverage and its false positives; a product with its own rules may cover different ground, and the only way to know is to watch what it matches on your traffic.

How anomaly scoring decides

CRS does not refuse a request because one rule matched. Each rule carries a severity, each severity adds points, and the request is denied only when the total reaches a threshold. The figures below are the defaults in the CRS documentation.

SettingDefaultWhat it does
Critical match5 pointsAdded to the request's score
Error match4 pointsAdded to the request's score
Warning match3 pointsAdded to the request's score
Notice match2 pointsAdded to the request's score
Inbound threshold5A request whose score reaches it is denied
Outbound threshold4A response whose score reaches it is withheld

With the defaults, one critical match is enough to deny, while weaker matches have to add up. The documentation recommends keeping the inbound threshold at 5 and raising it only for a while during tuning, since a higher threshold lets more through.

POINTS PER MATCH: CRITICAL 5 · ERROR 4 · WARNING 3 · NOTICE 2 ONE NOTICE MATCH SERVED ONE WARNING MATCH SERVED NOTICE + WARNING DENIED ONE CRITICAL MATCH DENIED THRESHOLD 5 // defaults from the CRS documentation
// four requests scored against the default threshold

Levels of rules

CRS ships its rules in four levels, and each level is a superset of the one below. The first is a baseline meant to need little tuning. Each step up adds rules that catch more attacks and also flag more ordinary traffic, and the documentation warns that the highest level can take weeks to tune.

A separate setting lets the rules of a higher level run and record their matches without counting toward the decision. That is the same idea as watching before enforcing: you see what the stricter rules would catch, and fix the false positives, before they can refuse anyone.

Where the tuning goes

A shared rule set meets every site's own content, and some of that content looks like an attack: code in a support ticket, markup in a forum post, a query in a search box. CRS handles this with rule exclusions, written per site, which tell a specific rule to ignore a specific place.

The work is ongoing, because the site changes. False positives covers how to find the requests a rule set refused wrongly, and exceptions covers keeping each exclusion narrow and dated.

Questions

What is the OWASP Core Rule Set?

The OWASP Core Rule Set, or CRS, is an open set of generic attack-detection rules for ModSecurity and compatible web application firewalls, maintained by the OWASP CRS project.

Does CRS work without ModSecurity?

Yes. CRS runs on ModSecurity and on compatible engines; Coraza is the other engine its project names.

What is the default anomaly threshold in CRS?

5 for requests and 4 for responses. With default severities, a single critical match reaches the inbound threshold, and weaker matches have to add up.

Does Bridge WAF expose CRS levels or thresholds?

No. Bridge WAF has three modes and no threshold or level to set; tuning it means adding an exception.