Hey everyone,
I wanted give an overview of the current use of TAG data in rules 
(https://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_Manual#tag),
 as well as, to get some feedback on some new ideas for tag usage.

First let's look at how TAG is currently being used today in the CRS.  Here is 
an example SQL Injection rule -

SecRule REQUEST_FILENAME|ARGS_NAMES|ARGS|XML:/* "\bxp_cmdshell\b" \
          
"phase:2,rev:'2.2.0',capture,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase,t:replaceComments,t:compressWhiteSpace,ctl:auditLogParts=+E,block,msg:'SQL
 Injection 
Attack',id:'959052',tag:'WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',logdata:'%{TX.0}',severity:'2',setvar:'tx.msg=%{rule.msg}',setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:tx.%{rule.id}-WEB_ATTACK/SQL_INJECTION-%{matched_var_name}=%{tx.0}"

The TAG action is used to provide the following information:

 1.  Attack Category – example WEB_ATTACK/SQL_INJECTION
 2.  Mapping to community taxonomies – such as WASC Threat Classification, 
OWASP Top Ten and OWASP AppSensor Detection Points
 3.  URL links to specific reference resources – as in this converted ET sql 
injection rule that lists a link to a SecurityFocus vuln entry

# (2007539) SpiderLabs Research (SLR) Public Vulns: ET WEB_SPECIFIC_APPS 20/20 
Auto Gallery SQL Injection Attempt -- vehiclelistings.asp model UPDATE
SecRule REQUEST_LINE "@contains /vehiclelistings.asp" 
"chain,phase:2,block,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:normalisePathWin,capture,nolog,auditlog,logdata:'%{TX.0}',severity:'2',id:2007539,rev:6,msg:'SLR:
 ET WEB_SPECIFIC_APPS 20/20 Auto Gallery SQL Injection Attempt -- 
vehiclelistings.asp model 
UPDATE',tag:'web-application-attack',tag:'url,www.securityfocus.com/bid/21154'"
SecRule &TX:'/WEB_ATTACK/SQL_INJECTION.*ARGS:model/' "@gt 0" 
"ctl:auditLogParts=+E,setvar:'tx.msg=%{tx.msg} - ET WEB_SPECIFIC_APPS 20/20 
Auto Gallery SQL Injection Attempt -- vehiclelistings.asp model 
UPDATE',setvar:tx.anomaly_score=+20,setvar:'tx.%{rule.id}-WEB_ATTACK-%{rule.severity}-%{rule.msg}-%{matched_var_name}=%{matched_var}'"

One big idea we have for a new TAG is Confidence Level which would give a 
general indication as to the rules accuracy level perhaps on a scale of 0-5 
where 0 is totally experimental without much testing at all and 5 is a very 
strong signature that has been rigorously tested and a low chance of false 
positives.  Example – tag:'CONFIDENCE_LEVEL/5'

The Confidence Level tag seems like it has the potential to have a very 
positive impact to users for two reasons:

 1.  Currently, there isn't much distinction for each rules as to its accuracy 
level.  We do have the experimental_rules directory for brand new rules however 
that does not mean that other rules are all of equal accuracy levels.
 2.  With the new v2.6 enhancement which added SecRuleRemoveByTag and 
ctl:ruleRemoveByTag 
(https://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_Manual#SecRuleRemoveByTag)
 users will then have the ability to make local customizations to disable 
entire groups of rules based on TAG data :)  For instance, if you wanted to 
only run CONFIDENCE_LEVEL/5 rules you could do that in a local custom rules 
file modsecurity_crs_60_custom_rules.conf to disable all lower confidence level 
rules –

SecRuleRemoveByTag "CONFIDENCE_LEVEL/[0-4]"

While this is a great new capability – we will need some help from the 
community with identifying the right CONFIDENCE_LEVEL settings for each rule.  
I will go through each rule and estimate a CONFIDENCE_LEVEL based on our intel. 
 This may not be enough however.  I have a feeling that most ModSecurity users 
silently handle false positives with local exceptions and they do not also 
report back to the community which rule IDs are causing problems.  Some users 
do go the extra mile and actually open Jira tickets for the CRS with bug 
reports.  That is great and it ensures that I will review/update the rules.  I 
do think, however, that most end users would prefer an easier method.  What do 
you all think about us creating a new mail-list on SourceForge strictly for 
sending in false positive rule issues?  We could create something like - 
mod–[email protected].

What do you think?  If anyone has any better ideas for false positive 
reporting, please speak up.

Ryan



________________________________
This transmission may contain information that is privileged, confidential, 
and/or exempt from disclosure under applicable law. If you are not the intended 
recipient, you are hereby notified that any disclosure, copying, distribution, 
or use of the information contained herein (including any reliance thereon) is 
STRICTLY PROHIBITED. If you received this transmission in error, please 
immediately contact the sender and destroy the material in its entirety, 
whether in electronic or hard copy format.

_______________________________________________
Owasp-modsecurity-core-rule-set mailing list
[email protected]
https://lists.owasp.org/mailman/listinfo/owasp-modsecurity-core-rule-set

Reply via email to