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.
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.
| Setting | Default | What it does |
|---|---|---|
| Critical match | 5 points | Added to the request's score |
| Error match | 4 points | Added to the request's score |
| Warning match | 3 points | Added to the request's score |
| Notice match | 2 points | Added to the request's score |
| Inbound threshold | 5 | A request whose score reaches it is denied |
| Outbound threshold | 4 | A 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.
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.