owasp-modsecurity / owasp-modsecurity/ModSecurity
[BUG] multiMatch lead to unexpected match
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 9.8k
- Forks
- 1.8k
- Avg merge
- 2h 46m
- Merged PRs (30d)
- 1
Description
Describe the bug
SecRule REQUEST_BODY "@rx abc" "id:111, msg:'test', t:base64DecodeExt,multiMatch, phase:2, block, capture, severity:'CRITICAL', tag:'attack-rce', tag:'paranoia-level/1', setvar:'tx.matched=%{MATCHED_VAR}', chain"
SecRule REQUEST_BODY "@rx 123"
The above rule match request which body is 'abc'
curl 127.0.0.1:86 -d 'abc'
The match is not expected, because the rule is "chained" rule, the second rule require the body contains "123" string.
If i remove multiMatch ,then everything is expected.
SecRule REQUEST_BODY "@rx abc" "id:222, msg:'test', t:none, phase:2, block, capture, severity:'CRITICAL', tag:'attack-rce', tag:'paranoia-level/1', setvar:'tx.matched=%{MATCHED_VAR}', chain"
SecRule REQUEST_BODY "@rx 123"
curl 127.0.0.1:86 -d 'abc' // not match
curl 127.0.0.1:86 -d 'abc123' // match
So i think the multiMatch flag has bug when it is used with chain rule
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the report with the two SecRule examples and the curl requests, comparing multiMatch with t:none. Trace how multiMatch is evaluated across a chained rule; done means a body of 'abc' does not match while 'abc123' does.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100