From 3ee6e108d630e2bf66faa0671927277248726311 Mon Sep 17 00:00:00 2001 From: Martin Vierula Date: Fri, 14 Jan 2022 09:25:07 -0800 Subject: [PATCH] Fix multiMatch msg, etc, population in audit log --- CHANGES | 2 + src/rule_with_actions.cc | 12 +++ test/test-cases/regression/auditlog.json | 98 ++++++++++++++++++++++++ 3 files changed, 112 insertions(+) diff --git a/CHANGES b/CHANGES index b3341fbc54..33f2f6fe9c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,8 @@ v3.x.y - YYYY-MMM-DD (to be released) ------------------------------------- + - Fix multiMatch msg, etc, population in audit log + [Issue #2573 - @Sachin-M-Desai, @martinhsv] - Fix some name handling for ARGS_*NAMES: regex SecRuleUpdateTargetById, etc. [Issue #2627, #2648 - @lontchianicet, @victorserbu2709, @martinhsv] - Adjust confusing variable name in setRequestBody method diff --git a/src/rule_with_actions.cc b/src/rule_with_actions.cc index 5ac17a2673..ccf726535c 100644 --- a/src/rule_with_actions.cc +++ b/src/rule_with_actions.cc @@ -215,6 +215,18 @@ void RuleWithActions::executeActionsIndependentOfChainedRuleResult(Transaction * } } + if (m_containsMultiMatchAction && !m_isChained) { + if (m_severity) { + m_severity->evaluate(this, trans, ruleMessage); + } + if (m_logData) { + m_logData->evaluate(this, trans, ruleMessage); + } + if (m_msg) { + m_msg->evaluate(this, trans, ruleMessage); + } + } + } diff --git a/test/test-cases/regression/auditlog.json b/test/test-cases/regression/auditlog.json index 33b6110111..715a4767d3 100644 --- a/test/test-cases/regression/auditlog.json +++ b/test/test-cases/regression/auditlog.json @@ -220,5 +220,103 @@ "SecAuditLogType Serial", "SecAuditLogRelevantStatus \"^(?:5|4(?!04))\"" ] + }, + { + "enabled": 1, + "version_min": 300000, + "version_max": 0, + "title": "auditlog : multiMatch data, match after last transform", + "client": { + "ip": "200.249.12.31", + "port": 2313 + }, + "server": { + "ip": "200.249.12.31", + "port": 80 + }, + "request": { + "headers": { + "Host": "www.modsecurity.org", + "User-Agent": "Mozilla\/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko\/20091102 Firefox\/3.5.5 (.NET CLR 3.5.30729)", + "Accept": "text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8", + "Accept-Language": "en-us,en;q=0.5", + "Accept-Encoding": "gzip,deflate", + "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", + "Keep-Alive": "300", + "Connection": "keep-alive", + "Pragma": "no-cache", + "Cache-Control": "no-cache" + }, + "uri": "\/test.pl?param1=test¶m2=tEst2", + "method": "GET", + "http_version": 1.1, + "body": "" + }, + "expected": { + "audit_log": "\\[msg \"testmsg\"\\]", + "error_log": "", + "http_code": 403 + }, + "rules": [ + "SecRuleEngine On", + "SecDefaultAction \"phase:1,nolog,auditlog,deny,status:403\"", + "SecRule ARGS \"@contains test2\" \"id:1557,phase:1,multiMatch,block,log,t:none,t:urlDecode,t:lowercase,msg:'testmsg'\"", + "SecAuditEngine RelevantOnly", + "SecAuditLogParts ABCFHZ", + "SecAuditLog /tmp/test/modsec_audit_multimatch_1.log", + "SecAuditLogDirMode 0766", + "SecAuditLogFileMode 0666", + "SecAuditLogType Serial", + "SecAuditLogRelevantStatus \"^(?:5|4(?!04))\"" + ] + }, + { + "enabled": 1, + "version_min": 300000, + "version_max": 0, + "title": "auditlog : multiMatch data, match only after intermediate transform", + "client": { + "ip": "200.249.12.31", + "port": 2313 + }, + "server": { + "ip": "200.249.12.31", + "port": 80 + }, + "request": { + "headers": { + "Host": "www.modsecurity.org", + "User-Agent": "Mozilla\/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko\/20091102 Firefox\/3.5.5 (.NET CLR 3.5.30729)", + "Accept": "text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8", + "Accept-Language": "en-us,en;q=0.5", + "Accept-Encoding": "gzip,deflate", + "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", + "Keep-Alive": "300", + "Connection": "keep-alive", + "Pragma": "no-cache", + "Cache-Control": "no-cache" + }, + "uri": "\/test.pl?param1=test¶m2=%20tEst2", + "method": "GET", + "http_version": 1.1, + "body": "" + }, + "expected": { + "audit_log": "\\[msg \"tstmsg\"\\]", + "error_log": "", + "http_code": 403 + }, + "rules": [ + "SecRuleEngine On", + "SecDefaultAction \"phase:1,nolog,auditlog,deny,status:403\"", + "SecRule ARGS \"@streq tEst2\" \"id:1558,phase:1,multiMatch,block,log,t:none,t:trim,t:lowercase,msg:'tstmsg'\"", + "SecAuditEngine RelevantOnly", + "SecAuditLogParts ABCFHZ", + "SecAuditLog /tmp/test/modsec_audit_multimatch_2.log", + "SecAuditLogDirMode 0766", + "SecAuditLogFileMode 0666", + "SecAuditLogType Serial", + "SecAuditLogRelevantStatus \"^(?:5|4(?!04))\"" + ] } ]