diff --git a/rules/CHANGELOG b/rules/CHANGELOG
index e9b3f275..79d23516 100644
--- a/rules/CHANGELOG
+++ b/rules/CHANGELOG
@@ -1,10 +1,106 @@
+--------------------------
+Version 2.0 - 07/29/2009
+--------------------------
+
+New Rules & Features:
+- Fine Grained Policy
+ The rules have been split to having one signature per rule instead of having
+ all signatures combined into one optimized regular expression.
+ This should allow you to modify/disable events based on specific patterns
+ instead of having to deal with the whole rule.
+- Converted Snort Rules
+ Emerging Threat web attack rules have been converted.
+ http://www.emergingthreats.net/
+- Anomaly Scoring Mode Option
+ The rules have been updated to include anomaly scoring variables which allow
+ you to evaluate the score at the end of phase:2 and phase:5 and decide on what
+ logging and disruptive actions to take based on the score.
+- Correlated Events
+ There are rules in phase:5 that will provide some correlation between inbound
+ events and outbound events and will provide a result of successful atttack or
+ attempted attack.
+- Updated Severity Ratings
+ The severity ratings in the rules have been updated to the following:
+ - 0: Emergency - is generated from correlation where there is an inbound attack and
+ an outbound leakage.
+ - 1: Alert - is generated from correlation where there is an inbound attack and an
+ outbound application level error.
+ - 2: Critical - is the highest severity level possible without correlation. It is
+ normally generated by the web attack rules (40 level files).
+ - 3: Error - is generated mostly from outbound leakabe rules (50 level files).
+ - 4: Warning - is generated by malicious client rules (35 level files).
+ - 5: Notice - is generated by the Protocol policy and anomaly files.
+ - 6: Info - is generated by the search engine clients (55 marketing file).
+- Updated Comment SPAM Protections
+ Updated rules to include RBL lookups and client fingerprinting concepts from
+ Bad Behavior (www.bad-behavior.ioerror.us)
+- Creation of Global Collection
+ Automatically create a Global collection in the *10* config file. Other rules
+ can then access it.
+- Use of Block Action
+ Updated the rules to use the "block" action. This allows the Admin to globally
+ set the desired block action once with SecDefaultAction in the *10* config file
+ rather than having to edit the disruptive actions in all of the rules or for
+ the need to have multiple versions of the rules (blocking vs. non-blocking).
+- "Possible HTTP Parameter Pollution Attack: Multiple Parameters with the same Name."
+ http://tacticalwebappsec.blogspot.com/2009/05/http-parameter-pollution.html
+- "Possibly malicious iframe tag in output" (Rules 981001,981002)
+ Planting invisible iframes in a site can be used by attackers to point users
+ from the victim site to their malicious site. This is actually as if the
+ user was visiting the attacker's site himself, causing the user's browser to
+ process the content in the attacker's site.
+
+New Events:
+- Rule 960019 - Expect Header Not Allowed.
+- Rule 960020 - Pragma Header Requires Cache-Control Header
+- Rule 958290 - Invalid Character in Request - Browsers should not send the (#) character
+ as it is reserved for use as a fragment identifier within the html page.
+- Rule 958291 - Range: field exists and begins with 0.
+- Rule 958292 - Invalid Request Header Found.
+- Rule 958293 - Lowercase Via Request Header Found.
+- Rule 958294 - Common SPAM Proxies found in Via Request Header.
+- Rule 958295 - Multiple/Conflicting Connection Header Data Found.
+- Rule 958296 - Request Indicates a SPAM client accessed the Site.
+- Rule 958297 - Common SPAM/Email Harvester crawler.
+- Rule 958298 - Common SPAM/Email Harvester crawler
+
+Bug Fixes:
+- Rule 950107 - Split the rule into 2 separate rules to factor in the
+ Content-Type when inspecting the REQUEST_BODY variable.
+- Rule 960017 - Bug fix for when having port in the host header.
+- Rule 960014 - Bug fix to correlate the SERVER_NAME variable.
+- Rule 950801 - Increased the logic so that the rule will only run if the web site
+ uses UTF-8 Encoding.
+- Rules 999210,999211 - Bug fix to move ctl actions to last rule, add OPTIONS and
+ allow the IPv6 loopback address
+- Rule 950117 - Updated the RFI logic to factor in both a trailing "?" in the ARG
+ and to identify offsite hosts by comparing the ARG URI to the Host
+ header. Due to this rule now being stronger, moved it from optional
+ tight security rule to *40* generic attacks file.
+
+Other Fixes:
+- Added more HTTP Protocol violations to *20* file.
+- Set the SecDefaultAction in the *10* config file to log/pass (This was the
+ default setting, however this sets it explicitly.
+- Added SecResponseBodyLimitAction ProcessPartial to the *10* config file. This
+ was added so that when running the SecRuleEngine in DetectionOnly mode, it will
+ not deny response bodies that go over the size restrictions.
+- Changed SecServerSignature to "Apache/1.3.28"
+- Fixed the use of SkipAfter and SecMarkers to make it consistent. Now have
+ BEGIN and END SecMarkers for rule groups to more accurately allow moving to
+ proper locations.
+- Fixed the @pm/@pmFromFile pre-qualifier logic to allow for operator inversion.
+ This removes the need for some SecAction/SkipAfter rules.
+- Updated rule formatting to easily show rule containers (SecMarkers, pre-qualifier
+ rules and chained rules).
+
--------------------------
Version 1.6.1 - 2008/04/22
--------------------------
- Fixed a bug where phases and transformations where not specified explicitly
in rules. The issue affected a significant number of rules, and we strongly
- recommend to upgrade.
+ recommend to upgrade.
--------------------------
Version 1.6.0 - 2008/02/19
diff --git a/rules/README b/rules/README
index 57fd34fa..a98a322b 100644
--- a/rules/README
+++ b/rules/README
@@ -3,7 +3,7 @@
ModSecurity Core Rule Set
==============================
-(c) 2006-2007 Breach Secuiry Inc.
+(c) 2006-2009 Breach Secuiry Inc.
The ModSecurity Core Rule Set is provided to you under the terms and
conditions of GPL version 2
@@ -33,10 +33,12 @@ Rule Set is heavily commented to allow it to be used as a step-by-step
deployment guide for ModSecurity.
For more information refer to the Core Rule Set page at
-http://www.modsecurity.org/
-
-
+http://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project
+Core Rules Mail-list -
+Suscribe here: https://lists.owasp.org/mailman/listinfo/owasp-modsecurity-core-rule-set
+Archive: https://lists.owasp.org/pipermail/owasp-modsecurity-core-rule-set/
+
Core Rule Set Structure & Usage
====================================
@@ -46,10 +48,15 @@ To activate the rules for your web server installation:
Additionally you may want to edit modsecurity_crs_30_http_policy.conf
which enforces an application specific HTTP protocol usage.
+ Should also update the appropriate anomaly scoring level in the
+ modsecurity_crs_49_enforcement.conf and modsecurity_crs_60_correlation.conf
+ files. This will determine when you log and block events.
+
2) Add the following line to your httpd.conf (assuming
you've placed the rule files into conf/modsecurity/):
Include conf/modsecurity/*.conf
+ Include conf/modsecurity/base_rules/*conf
3) Restart web server.
diff --git a/rules/base_rules/modsecurity_40_generic_attacks.data b/rules/base_rules/modsecurity_40_generic_attacks.data
new file mode 100644
index 00000000..43619b91
--- /dev/null
+++ b/rules/base_rules/modsecurity_40_generic_attacks.data
@@ -0,0 +1,277 @@
+set-cookie
+.cookie
+expiressys.user_objects
+sys.user_triggers
+@@spid
+msysaces
+instr
+sys.user_views
+sys.tab
+charindex
+locate
+sys.user_catalog
+constraint_type
+msysobjects
+attnotnull
+select
+sys.user_tables
+sys.user_constraints
+sys.user_tab_columns
+waitfor
+mysql.user
+sys.all_tables
+msysrelationships
+msyscolumns
+msysqueriessubstr
+xtype
+textpos
+all_objects
+rownum
+sysfilegroups
+sysprocesses
+user_group
+sysobjects
+systables
+user_tables
+pg_attribute
+column_id
+user_password
+user_users
+attrelid
+user_tab_columns
+table_name
+pg_class
+user_constraints
+user_objects
+object_type
+sysconstraints
+mb_users
+column_name
+atttypid
+substring
+object_id
+syscat
+sysibm
+user_ind_columns
+syscolumns
+sysdba
+object_namexp_enumdsn
+insert
+infile
+autonomous_transaction
+nvarchar
+openrowset
+print
+data_type
+outfile
+castb
+shutdown
+inner
+tbcreator
+xp_filelist
+@@version
+sql_longvarchar
+sp_prepare
+xp_regenumkeys
+xp_dirtree
+xp_loginconfig
+ifnull
+sp_addextendedproc
+xp_regaddmultistring
+delete
+sp_sqlexec
+sp_oacreate
+sp_execute
+xp_ntsec
+xp_regdeletekey
+drop
+xp_execresultset
+varchar
+to_number
+dba_users
+having
+xp_regenumvalues
+utl_file
+xp_terminate
+xp_availablemedia
+xp_regdeletevalue
+sql_variant
+dumpfile
+isnull
+'sa'
+select
+xp_regremovemultistring
+xp_makecab
+xp_cmdshell
+'msdasql'
+sp_executesql
+openquery
+'sqloledb'
+'dbo'
+sp_makewebtask
+utl_http
+dbms_java
+benchmark
+xp_regread
+xp_regwritejscript
+onsubmit
+copyparentfolder
+javascript
+meta
+onchange
+onmove
+onkeydown
+onkeyup
+activexobject
+onerror
+onmouseup
+ecmascript
+bexpression
+onmouseover
+vbscript:
+Index of
+>
+