CRS version 4.1.0 released
Last week, we have released CRS v4.1.0. The new release is the first according to the new monthly release schedule and brings a couple of new features and fixes.
It includes quality improvements via better rule linting and fixes for false positives across a handful of rules.
And: new developer Esad Cetiner has joined the team intime for the 4.1 release.
Read the changelog here.
Let CRS 4 be your valentine!
What a Valentine’s Day present we have got for you: today, the Core Rule Set project is releasing CRS 4!
Finally, you may say – and would be absolutely right: it took us a long time to get there. But we wanted to do it right, especially after the bug bounty program we took part in left us with over 500 individual findings in roughly 180 reports. Fixing all these needed more time than we originally thought. But the result is a CRS that has never been more secure.
Microsoft Supports CRS as Gold sponsor
The OWASP ModSecurity Core Rule Set project is very happy to announce Microsoft as new GOLD sponsor. There have been sporadic contacts with the Azure WAF engineering team for several years and we are now taking the next step. Microsoft and OWASP CRS are establishing a formalized partnership in the form of a sponsoring agreement.
There is never a lack of ideas in a florishing open source project like ours. But as a lot of open source projects, we lack the user perspective to a wide extent. We write rules, but we do not really know how they behave in the real world outside of the few sites we control at our day jobs.
CRS names Felipe Zipitría as third Co-Lead
The OWASP ModSecurity Core Rule Set project is very happy to announce Felipe Zipitría as a new and third Co-Leader. Felipe joins Walter Hop and Christian Folini in his new role.
Felipe Zipitría holds a master of computer science from the University of the Republic in Montevideo, Uruguay. He worked as a system administrator for the faculty of engineering for several years and also lectures on security at the University.
CRS Project News January 2020
It’s been a while since the last CRS project news. It’s not because there was nothing to report. It’s more like too much going on and no time to sit back and write it all down.
Here are the most important things that happened since the last edition:
ModSecurity 3.0.4 has been released for NGINX. This is a security release covering a problem our project members @airween and @theMiddle have discovered. Trustwave has asked us to withhold any details for the moment, but the release of the full CVE is planned for next week. Packaging is under way as far as we can tell. If you are running ModSec3, then we strongly advise you to update ASAP and we’ll probably follow up with a separate blog post once the details are published.
Link: https://sourceforge.net/p/mod-security/mailman/message/36899090/
CRS Project News August 2019
Life is interfering and the rhythm of the CRS news is not what I would like it to be. Three months since the last edition. But the advantage is of course, that there are more news to talk about once I get to write it all up.
What has happened in recent weeks
- The OWASP Honeypot project that is based on CRS is running a Google Summer of Code
project, that aims for an up do date containerization of the honeypot. - O’Reilly is distributing a free 40 pages brochure about “Defense in Depth” by Stephen Gates.
CRS is featured prominently on page 22: “Today, most WAF vendors have implemented the OWASP ModSecurity Core Rule Set (CRS), which contains generic attack detection rules for use with ModSecurity or compatible WAFs.”
Link:
https://www.oreilly.com/library/view/modern-defense-in/9781492050360/ - Zevenet has patched the traditional - but rather exotic - reverse proxy Pound to work with ModSecurity 3 and thus with CRS.
Link:
https://github.com/zevenet/pound - The pressing ReDoS problems that resulted in 5 (!) CVEs issued against CRS could be solved with the release of 3.1.1 that is functionally equivalent to 3.1.0 and does not suffer from the problems. We also found out, that 4 of the 5 CVEs were bogus and the 5th is only exploitable in few installations. We are talking to Mitre, but they have not really be very forthcoming so far.
A word of caution: This does not mean that there are no more ReDoS problems in CRS. We are working through the rules and we think we have identified most problematic rules, but ReDoS is nasty as long as you run on PCRE and we are not quite ready to support an alternative engine like RE2 (but we are working on it; see below).
Link:
. - There is a new, bi-monthly CRS / ModSecurity Meetup in Bern, Switzerland. The first edition ran on June 26 2019 and we got 14 people together in the room.
Link: http://web.archive.org/web/20200807130543/https://www.puzzle.ch/de/blog/articles/2019/07/02/erstes-treffen-der-crs-community-in-bern - Brian Krebs blogged about the CapitalOne breach and blamed it on an SSRF (server-side request forgery) on the ModSecurity WAF running CRS. However, this is likely wrong as a more detailed blog post at AppSecco explained. It’s rather a SSRF that CRS did not block. Either because it was not detected (that is quite likely, as SSRF is really hard to detect with generic rules) or because the WAF was in monitoring mode.
Link:
https://krebsonsecurity.com/2019/08/what-we-can-learn-from-the-capital-one-hack/
https://blog.appsecco.com/an-ssrf-privileged-aws-keys-and-the-capital-one-breach-4c3c2cded3af?gi=97a1dfb34c64 - We did our monthly CRS project chats. Here are the agendas and the brief protocols.
Link:
https://github.com/coreruleset/coreruleset/issues/1402 (May)
https://github.com/coreruleset/coreruleset/issues/1443 (June)
https://github.com/coreruleset/coreruleset/issues/1471 (July)
https://github.com/coreruleset/coreruleset/issues/1496 (August)
Significant pull requests that were merged
- There have been several PRs that dealt with ReDoS problems in multiple rules.
- We are cleaning CRS from PCRE-specific back-tracking, that is not supported in alternative implementations like RE2, which is a lot safer with regards to ReDoS.
- The SQLi libinjection check has been added for the last path segment
Link:
https://github.com/coreruleset/coreruleset/pull/1492 - A new rule exclusion profile for XenForo has been contributed:
Link:
https://github.com/coreruleset/coreruleset/pull/1403 - Massive Updates for the CRS docker container that bring easier integration and easy configurability via ENV variables (Think Anomaly score limits, paranoia levels, backend address).
Link:
https://github.com/coreruleset/coreruleset/pull/1457
https://github.com/coreruleset/coreruleset/pull/1455
https://github.com/coreruleset/coreruleset/pull/1454
https://github.com/coreruleset/coreruleset/pull/1453
Things that are meant to happen in the coming weeks or thereafter
- We are planning to release CRS 3.2. Release manager Walter Hop confirmed the following plan:
Freeze on August 19, RC1 on August 26, RC2 on September 8, release on September 24.
Link:
https://github.com/coreruleset/coreruleset/issues/1496#issuecomment-518348210 - The next CRS / ModSecurity meetups in Bern, Switzerland, will be on August 28 and thereafter on October 30.
On August 28, we’ll talk about Paranoia Levels in Practice. The program for October 30 has not been fixed yet.
Link:
https://www.meetup.com/CRS-ModSecurity-Meetup-Bern/ - We are hosting a CRS Community Summit on September 25 at the RAI in Amsterdam. This is the last training day at the OWASP AppSec Global conference. This is meant for users of CRS, for integrators and committers or our project. Entry to the summit is free, but it makes sense to combine with the AppSec conference the next day of course if you make the trip to the Netherlands.
The Summit will start in the early afternoon and we are going to have a dinner together afterwards.
Please get in touch if you plan to attend, so we can accomodate enough seats at the RAI (and at the restaurant afterwards):
Link:
christian.folini / at / owasp.org - Christian Folini is going to present at the OWASP AppSec Global conference in Amsterdam on September 26 / 27. His talk will be about Practical CRS in high security settings.
Link:
https://ams.globalappsec.org/
Important pull requests in the queue
- There is a PR for a new rule aiming at insecure unserialization in NodeJS. This is meant to be the first rule in a new rule group (REQUEST-934-APPLICATION-ATTACK-NODEJS.conf) that is going to be released together with CRS 3.2 if according to plan.
Link:
https://github.com/coreruleset/coreruleset/pull/1487 - Not much more of much importance is in the queue. We have been very active with merging those last few weeks. There are just a few bugfixes here and there plus more tests.
News assembled by Christian Folini, CRS Co-Lead.
CRS Project News May 2019
We are back with the CRS project news. There was not too much to talk about in recent weeks, but now there is real content. So here we go.
What has happened in recent weeks
- Security researcher Somdev Sangwan has looked into Regular Expression Denial of Service attacks. It is a more or less well known fact, that CRS suffers from this
problem. Usually, it is no big deal as ModSecurity 2 used to protect from
this type of attack. However, this protection is gone with ModSecurity 3.
Somdev Sangwan had 5 (!) CVE against CRS created. Yet we came to the
conclusion, that only one of them (👉 CVE-2019-11387) is directly
exploitable and only on ModSecurity 3 at paranoia level 2 or higher. The problem is situation in two separate rules. We are now working on a solution for this issue.
Links:
https://nvd.nist.gov/vuln/detail/CVE-2019-11387
https://github.com/coreruleset/coreruleset/issues/1359
https://portswigger.net/daily-swig/unpatched-modsecurity-crs-vulnerabilities-leave-web-servers-open-to-denial-of-service-attacks - CRS contributor Airween has made a big effort to make sure that ModSecurity 3 passes the CRS test suite. He fixed several ModSec bugs along the way (not all of them merged yet) and he has been 100% successful with ModSec3 in combination with the Apache connector. With the nginx connector, he is really close.
Please note that this means, that none of the released ModSec 3 versions
are able to pass the CRS 3 test suite so far. - There was very little interest among the CRS developers to go to Tel Aviv in order to
hold our CRS community summit during the OWASP AppSec Global conference there later in May. We have thus decided to shift our reunion to September and the
OWASP AppSec conference in Amsterdam. - James Walker from Portswigger / Daily Swig covered the ongoing development with ModSecurity in an online article.
Link: https://portswigger.net/daily-swig/waf-reloaded-modsecurity-3-1-showcased-at-black-hat-asia - We are very happy to welcome Andrea Menin / theMiddleBlue / MeninTheMiddle as a CRS developer with commit rights. The latter took a fair bit of time, but the joy is even bigger now.
- There is a fairly new ModSecurity integration into the Envoy Proxy on Kubernetes. We have not tested it yet, though.
Link: https://github.com/octarinesec/ModSecurity-envoy
Significant pull requests that were merged
- Extended the list of shell commands that we detect (Co-Lead Chaim Sanders)
Link: https://github.com/coreruleset/coreruleset/pull/1325 - New rule 942500: SQLi bypass via MySQL comments (Developer Franziska Bühler)
Link: https://github.com/coreruleset/coreruleset/pull/1326 - Fixed problems with SOAP encodings (Developer Christoph Hansen)
Link: https://github.com/coreruleset/coreruleset/pull/1332 - Added the gobuster security scanner (Contributor Brent Clark)
Link: https://github.com/coreruleset/coreruleset/pull/1375
Things that are meant to happen in the coming weeks or thereafter
- Tin Zaw from Verizon is presenting CRS at the OWASP project showcase
at the AppSec conference in Tel Aviv. - 3.1.1 is meant to be released with a backported fix for CVE-2019-11387 as soon as we have the fix.
Important pull requests in the queue
- Several PRs to solve the open CVEs. Yet many of these PRs come with a change
of behaviour and we would like to avoid that.
Link:
https://github.com/coreruleset/coreruleset/pull/1355
https://github.com/coreruleset/coreruleset/pull/1361
https://github.com/coreruleset/coreruleset/pull/1362 - Remove Warning from php-errors.data as all the warnings are already
covered by other strings.
Link: https://github.com/coreruleset/coreruleset/pull/1343 - Add AngularJS client side template injection #1340
Link: https://github.com/coreruleset/coreruleset/pull/1340 - SQLi bypass detection: ticks and backticks #1335
Link: https://github.com/coreruleset/coreruleset/pull/1335
CRS Project News January 2019
We are back with the CRS project news. We’re attending the Cloudfest Hackathon in March in Germany and we have plans for another CRS Community Summit at the new OWASP AppSec Global conference in Tel Aviv at the end of May (formerly OWASP AppSecEU).
What has happened in recent weeks
- We have reached 1500 stars on GitHub and adding more every day in a nice exponential curve. This makes us one of the most popular OWASP projects on GitHub.
Link: https://seladb.github.io/StarTrack-js/?u=SpiderLabs&r=owasp-modsecurity-crs - CRS contributor Ervin Hegedüs, supported by Andrea Menin and Walter Hop, is working hard to get the CRS FTW tests to pass with ModSecurity 3 on NGINX and ModSecurity 3 on Apache. These tests are important for including Nginx with ModSecurity 3 in the next Debian release. CRS is currently using ModSecurity 2.9 on Apache as reference platform, but we need to open up for ModSecurity 3 as it is slowly maturing. Ervin and Andrea have now reached a state where over 90% of the tests pass, but they may have also discovered a bug or two in ModSecurity 3. When the work on Debian is done, we will set up our Continous Integration via Travis to run our tests against multiple platforms.
- Angelo Conforti published an interesting piece of code that allows to generate ModSecurity Whitelisting rules based on a Swagger definition. This could be very interesting for securing APIs on top of CRS. This is a work in progress, but it looks promising and I am sure testing is welcome.
Link: https://github.com/angeloxx/swagger2modsec
Significant pull requests that were merged
When we stated development had picked up nicely after the release 3.1 the statement contained a lot of hope. But looking over the last four weeks makes it clear that we have indeed accelerated.
CRS Project News December 2018
I hope everybody has a few calm days to finish the year. CRS is finishing the year enjoying the 3.1 release and an adjustment to the PHP rules that closes a nasty hole in the detection.
What has happened in recent weeks
- CRS 3.1 has been released bringing new rules to detect Java injections and an easier way to deal with paranoia levels. More changes in the announcement.
Link: /20181128/announcement-owasp-modsecurity-core-rule-set-version-3-1-0/ - CRS Co-Lead Christian Folini taught two CRS crash courses together with David Jardin from Siwecos in Bern and Zurich, Switzerland. The course was sponsored by Switch (The Swiss NIC) and addressed internet hosters. One result was a new initiative to run a workshop at the Cloudfest conference in late March to come up with a CRS profile that works for internet hosters. There will be a separate announcement, when we know more.
- CRS committer Franziska Bühler pubished a blog post introducing the extensions for the official CRS docker container that she developed. The extensions allow you to configure a CRS container including the backend connection from the command line.
Link: /20181212/core-rule-set-docker-image/ - CRS Co-Lead Christian published an asciinema demo video illustrating Franziska’s work.
Link: https://asciinema.org/a/0JDnaO1Wi42sIYpgJzoYbCdtn - The American company Gridvision published a success story how they secured their WordPress setup with CRS.
Link(Outdated): “gridvision.net/projects/nginx-modsecurity-and-project-honeypot” - CRS contributor TheMiddle published a blog post with WAF bypasses aiming for PHP. As usual, CRS was doing better than many other WAFs, but there is a particularly sinister bypass we did not detect in lower paranoia levels (more news about this below).
Link: https://www.secjuice.com/php-rce-bypass-filters-sanitization-waf/
Significant pull requests that were merged
With the 3.1 release out the door, the development for 3.2 was immediately revived. Pull requests are coming in nicely now.
CRS Project News November 2018
The plan is to do this newsletter every month, but it’s already November. The reason is the pending 3.1 release, so I waited for the release to happen and then it did not and suddenly October was over. But now we have a 3.1-RC2 and a strong belief that 3.1 will come out for good on Sunday November 24.
What has happened in recent weeks
- CRS 3.1 RC2 has been released.
It brings few bugfixes over 3.1 RC1 and we think it will be very close to the eventual stable 3.1 release. Download: https://github.com/coreruleset/coreruleset/releases/tag/v3.1.0-rc2 - The CRS project has decided to prioritize 3.1 and abandon the 3.0 release line. So there won’t be a 3.0.3 release.
- The development has been slow with picking up again. We’re working on the 3.2/dev branch but it feels like the pending 3.1 is keeping the project back. Link: https://github.com/coreruleset/coreruleset
- libModSecurity 3.0.3 has been released. This is a release focues on code readability, resilience and performance. This is an important move as ModSecurity 3.0.2 has been breaking CRS 3.1 and we worked very hard on the ModSecurity developers to have them release 3.0.3 before we do our 3.1. (The delay with our 3.1 release is entirely our fault, though.)
Link: https://github.com/SpiderLabs/ModSecurity/releases/tag/v3.0.3
Link: https://github.com/SpiderLabs/ModSecurity/releases/tag/v3.0.3/CHANGES - We shifted the monthly community chat from IRC to the #coreruleset channel on the OWASP Slack.
- CRS developer Christoph Hansen has published a script to convert the modern GeoIP database into the legacy format that ModSecurity 2.x supports. This solves a major problem for many users. https://github.com/emphazer/GeoIP_convert-v2-v1
- Linux Journal article on ModSec / CRS on NGINX
Link: https://www.linuxjournal.com/content/modsecurity-and-nginx - Mikhail Golovanov has published an article about ModSecurity rule verification. Among many interesting ideas, he also demonstrates a way to create payloads from a regular expression in a rule. Link: https://waf.ninja/modsecurity-rules-verification/
- The Company Approach from Belgium has released the source code for an Apache module that brings a new transformation to ModSecurity: t:bash. Ideally, this source code will be integrated into ModSecurity, and ultimately be supported by CRS, but we are quite far from that. You can use it immediately for your own rules, though. Link: https://www.approach.be/en/modsecurity.html
Significant pull requests that were merged
- Java rules bug that the last news reported about has been fixed.
Link: https://github.com/coreruleset/coreruleset/pull/1198
Link: https://github.com/coreruleset/coreruleset/issues/1185 - Several typos in variable names have been spotted and fixed (Victor Hora)
Link: https://github.com/coreruleset/coreruleset/pull/1187 - Dropped the keyword “exit” from both, Unix and Windows RCE rules (Federico Schwindt) Link: https://github.com/coreruleset/coreruleset/pull/1204/files
- Bugfix with new paranoia level counters (Federico Schwindt)
Link: https://github.com/coreruleset/coreruleset/pull/1196
Things that are meant to happen in the coming weeks
- We plan to release CRS 3.1 on Sunday November 24.
- There are going to be two separate one-day ModSecurity / CRS courses for ISPs / Hosters focusing on CMS. Christian Folini and David Jardin from SIWECOS will teach both courses on invitation by SWITCH. The first course will be on December 5 in Bern, Switzerland and the second course will be on December 6 in Zurich, Switzerland. Link: https://swit.ch/CMS_Bern Link: https://swit.ch/CMS_Zurich
- CRS developer Franziska Bühler is working on her docker container. She is adding CLI support for all the CRS variables during “docker create”. This means you will be able to create and configure a CRS WAF container on the fly with a one-liner. This is meant to be merged into the official CRS docker container eventually. Link: https://hub.docker.com/r/franbuehler/modsecurity-crs-rp/
- The next Monthly Community Chat will be held on December 3, 2018, at 20:30 CET in the #coreruleset channel in the OWASP Slack. A link to a slack invite can be found in the agenda linked below. Please use this agenda issue on github to schedule topics for discussion.
Link: https://owasp.slack.com
Link: https://github.com/coreruleset/coreruleset/issues/1238 - CRS developer Felipe Zipitria has volunteered to come up with a proposal to have CRS swag produced via an online print-on-demand shop. Desired items include posters, stickers, buttons, T-Shirts, ideally the full program. Link: https://github.com/OWASP/owasp-swag
Important pull requests in the queue
- TheMiddleBlue suggests to add additional PHP wrappers to our data file. Still not merged. Link: https://github.com/coreruleset/coreruleset/pull/1172
- Manuel Spartan suggests to add missing Java Classes.
Link: https://github.com/coreruleset/coreruleset/pull/1156
CRS Project News September 2018
We skipped the monthly news in August as the 3.1-RC release had been delayed into September. But here we go again with the mostly monthly newsletter of the CRS project.
The most important news is the publication of the release candidate 1 for CRS 3.1.
What has happened in recent weeks
- CRS 3.1 RC1 has been released. The most important changes:
- Protections against common Java attacks
- Support for blocking in one paranoia level while logging in a higher level.
- More pre-made exclusion packs for popular web applications
- Reconstructed and improved SQL injections protections
- Various bug fixes and optimizations
Announcement: http://web.archive.org/web/20230830054004/https://lists.owasp.org/pipermail/owasp-modsecurity-core-rule-set/2018-September/002586 Download: https://github.com/coreruleset/coreruleset/releases/tag/v3.1.0-rc1
- The development has been moved to the 3.2/dev branch, some changes will be backported to 3.1. Link: https://github.com/coreruleset/coreruleset
- Interview with CRS project co-lead Christian Folini on the AppSec podcast
Link: https://coreruleset.org/20180809/appsec-podcast-interviewing-crs-project-co-lead-christian-folini/ - Webinar on ModSecurity and CRS3 with Owen Garett, Head of Products at NGINX: The webinar covered installation of ModSec3 and CRS3, but also integration and tuning for false positives and performance. It can be watched on demand after registration (link no longer available)
- There is a missing feature in ModSecurity 3.0.x that makes it choke on the upcoming CRS 3.1 release. There is an official patch available and the development tree of ModSecurity has the fix. But Trustwave has not yet released the ModSecurity with the fix anew. This may mean that users of the officially release ModSecurity 3 software will fail to run CRS 3.1 after our release. Link: https://github.com/SpiderLabs/ModSecurity/issues/1797
- Maxmind, the company behind the popular GeoIP database used by ModSecurity ceased to release the legacy format of the database. ModSec 2.9 only supports this legacy version, so users are in a bad position. CRS developer Christoph Hansen posted on the ModSec mailinglist he was able to transpose the new GeoIP database into the old format so he could continue to use it. A blog post is in the making. Link: https://github.com/SpiderLabs/ModSecurity/issues/1727#issuecomment-423612546
- The OWASP slack changed the place to get invites. If you want to join us, please get in touch via mail and we’ll send you the link. OWASP says the are overhauling the setup.
Significant pull requests that were merged
- Development has been shifted to the new 3.2 branch, that has been declared master
- Walter Hop contributed 2 new strings to the list of Java Struts namespaces for use in the new 944130 rule
Link: https://github.com/coreruleset/coreruleset/pull/1177 - Other than that, everybody is waiting for new issues popping up with the 3.1-RC release but it has been quiet on that front so far.
Things that are meant to happen in the coming weeks
- We plan to release CRS 3.1 in October unless we see any road blockers.
- There is a strange bug that a PL2 rule among the new Java rules in CRS 3.1-RC1 triggers. If it is a bug, it’s rather a ModSecurity bug, but it’s completely unclear how this is happening as reproduction has been very cumbersome so far. What is clear it happens in connection with chunked transfer encoding of JSON payloads at PL2 and higher. So it is a rather peculiar situation that is relatively rare.
Link: https://github.com/coreruleset/coreruleset/issues/1185
Important pull requests in the queue
- Victor Hora discovered typos in CRS variable names and a discussion about streamlining lower- and uppercase variable names evolved. Link: https://github.com/coreruleset/coreruleset/pull/1187
- Franziska Bühler has fixed a relatively annoying bug in the docker image of CRS. Link: https://github.com/coreruleset/coreruleset/pull/1168
- TheMiddleBlue suggests to add additional PHP wrappers to our data file.
Link: https://github.com/coreruleset/coreruleset/pull/1172
CRS Project News July 2018
We are launching the monthly news anew. The idea is to look beyond the pure CRS development again and to bring you additional information that touch on our project. As the editor, I (-> Christian Folini) am planning to release this in the first half of the month. This did not work in July, though, but I have a very cute excuse: She’s called Giovanna and she is only a couple of days old. We’re going to be a bit earlier in August, but also less news apparently.
CRS Project News September 2017
This is the CRS newsletter covering the period from mid August until today.
What has happened during the last few weeks:
We held our community chat last Monday. Chaim was high in the air so we were only six of us, but Manuel was back so I get the feeling we are slowly growing the project. The big project administration and governance discussions seem to be over for the moment. So we spent a lot of time talking about development, possible roadblocks and code policies.
The next community chats will be held on the following dates: