Releases: owasp-modsecurity/ModSecurity
v3.0.3
New features
- Adds new transaction constructor that accepts the transaction id
as parameter.
[Issue #1627 - @defanator, @zimmerle] - Adds support to UpdateActionById.
[Issue #1800 - @zimmerle, @victorhora, @NisariAIT] - Adds support to setenv action.
[Issue #1044 - @zimmerle] - Adds support for ctl:requestBodyProcessor=URLENCODED
[Issue #1797 - @victorhora] - Implement support for Lua 5.1
[Issue #1809 - @p0pr0ck5, @victorhora]
Bug fixes
- Fix double macros bug
[Issue #1943 - @supplient, @zimmerle] - Override the default status code if not suitable to redirect action
[Issue #1850 - @zimmerle, @victorhora] - parser: Fix the support for CRLF configuration files
[Issue #1945 - @zimmerle, @defanator, @kjakub] - m_lineNumber in Rule not mapping with the correct line number in file
[Issue #1844 - @zimmerle, @victorhora, @xizeng] - Fix the SecUnicodeMapFile and SecUnicodeCodePage
[0x3094d - @zimmerle, @victorhora] - Fix crash in msc_rules_add_file() when using disruptive action in chain
[Issue #1849 - @victorhora, @zimmerle, @rperper] - Fix memory leak in AuditLog::init()
[Issue #1897 - @weliu] - Fix RulesProperties::appendRules()
[Issue #1901 - @steven-j-wojcik] - Fix RULE lookup in chained rules
[0x3077c - @zimmerle] - Add correct C function prototypes for msc_init and msc_create_rule_set
[Issue #1922 - @steven-j-wojcik] - Fix: function m.setvar in Lua scripts and add testcases
[Issue #1859 - @nowaits, @victorhora] - Fix SecResponseBodyAccess and ctl:requestBodyAccess directives
[Issue #1531 - @victorhora, @defanator] - parser: Fix simple quote setvar in the end of the line
[Issue #1831 - @zimmerle, @csanders-git] - Fix pc file
[Issue #1847 - @gquintard] - Fix utf-8 character encoding conversion
[Issue #1794 - @tinselcity, @zimmerle] - Fixed LMDB collection errors
[Issue #1787 - @airween, @zimmerle] - Fix ip tree lookup on netmask content
[Issue #1793 - @tinselcity, @zimmerle] - Fix race condition in UniqueId::uniqueId()
[Issue #1786 - @weliu] - Fix memory leak in error message for msc_rules_merge C APIs
[Issue #1765 - @weliu] - Build System: Fix when multiple lines for curl version.
[Issue #1771 - @Artistan] - Fix LDFLAGS for unit tests.
[Issue #1758 - @smlx] - Fix STATUS var parsing and accept STATUS_LINE var for v2 backward comp.
[Issue #1738 - @victorhora] - Fix broken @detectxss operator regression test case
[Issue #1739 - @p0pr0ck5] - Fix memory leak in modsecurity::utils::expandEnv()
[Issue #1750 - @defanator] - Fix variable FILES_TMPNAMES
[Issue #1646, #1610 - @victorhora, @zimmerle, @defanator] - Fix memory leak in Collections
[Issue #1729, #1730 - @defanator]
Improvements
- Organizes the server logs
[0xb7c36 and 0x5ac20 - @zimmerle, @steven-j-wojcik] - Using shared_ptr instead of unique_ptr on rules exceptions
[Issue #1697 - @zimmerle, @brianp9906, @victorhora, @LeSwiss, @defanator] - Changes debuglogs schema to avoid unecessary str allocation
[0xb2840 - @zimmerle] - Changes the timing to save the rule message
[0xca270 - @zimmerle] - @ipMatch "Could not add entry" on slash/32 notation in 2.9.0
[Issue #849 - @zimmerle, @dune73] - Using values after transformation at MATCHED_VARS
[0x14316 - @zimmerle] - Allow LuaJIT 2.1 to be used
[Issue #1909 - @victorhora, @mdunc] - Match m_id JSON log with RuleMessage and v2 format
[Issue #1185 - @victorhora] - Adds request IDs and URIs to the debug log
[Issue #1627 - @defanator, @zimmerle] - Treating variables exception on load-time instead of run time.
[0x028e0 and 0x275a1 - @zimmerle] - Fix OpenBSD build
[Issue #1841 - @victorhora, @zimmerle, @juanfra684] - Fix parser to support GeoLookup with MaxMind
[Issue #1884, #1895 - @victorhora, @everping] - modsec_rules_check: uses the gnu
.la' instead of
.a' file
[Issue #1853 - @ste7677, @victorhora, @zimmerle] - good practices: Initialize variables before use it
[Issue #1889 - Marc Stern] - Add LUA compatibility for CentOS and try to use LuaJIT first if available
[Issue #1622 - @victorhora, @dmitryzykov] - Allow LuaJIT to be used
[Issue #1809 - @victorhora, @p0pr0ck5] - Variable names must match fully, not partially. Match should be case insensitive.
[Issue #1818, #1820, #1810, #1808 - @michaelgranzow-avi, @victorhora, @theMiddleBlue, @airween, @zimmerle, @LeeShan87] - Improves the performance while loading the rules
[Issue #1735 - @zimmerle, @p0pr0ck5, @victorhora] - Allow empty strings to be evaluated by regex::searchAll
[Issue #1799, #1785 - @victorhora, @XuanHuyDuong, @zimmerle] - Adds basic pkg-config info
[Issue #1790 - @gquintard, @zimmerle] - Fixed false positive MULTIPART_UNMATCHED_BOUNDARY errors
[Issue #1747, #1924 - @airween, @victorhora, @defanator, @zimmerle] - Changes the behavior of the default sec actions
[Issue #1629 - @mirkodziadzka-avi, @zimmerle, @victorhora] - Refactoring on {global,ip,resources,session,tx,user} collections
[Issue #1754, #1778 - @LeeShan87, @zimmerle, @victorhora, @wwd5613, @sobigboy] - Return false in SharedFiles::open() when an error happens
[Issue #1783 - @weliu] - Use rvalue reference in ModSecurity::serverLog
[Issue #1769 - @weliu] - Checks if response body inspection is enabled before process it
[Issue #1643 - @zoltan-fedor, @dennus, @defanator, @zimmerle] - Code Cleanup.
[Issue #1757, #1755, #1756, #1761 - @p0pr0ck5] - Fix setvar parsing of quoted data
[Issue #1733, #1759, #1775 - @victorhora, @JaiHarpalani, @defanator] - Adds time stamp back to the audit logs
[Issue #1762 - @Pjack, @zimmerle] - Disables skip counter if debug log is disabled
[@zimmerle] - Cosmetics: Represents amount of skipped rules without decimal
[Issue #1737 - @p0pr0ck5] - Add missing escapeSeqDecode, urlEncode and trimLeft/Right tfns to parser
[Issue #1752 - @victorhora] - Initialize m_dtd member in ValidateDTD class as NULL
[Issue #1751 - @airween] - Fix utils::string::ssplit() to handle delimiter in the end of string
[Issue #1743, #1744 - @defanator]
v3.0.2
v3.0.1
New features
- Support for ctl:ruleRemoveByTag
[@zimmerle, @weliu] - Support to libMaxMind
[Issue #1307 - @zimmerle, @defanator] - Added missing Base64 transformation statements to parser
[Issue #1632 - @victorhora, @zimmerle]
Bug fixes
- Fix SecUploadDir configuration merge
[Issue #1720 - @zimmerle, @gjvanetten] - Fix: Reverse logic of checking output in @inspectFile
[Issue #1715 - @defanator] - Check for disruptive action on SecDefaultAction.
[Issue #1614 - @zimmerle, @michaelgranzow-avi] - Fix block-block infinite loop.
[Issue #1614 - @zimmerle, @michaelgranzow-avi] - Correction remove_by_tag and remove_by_msg logic.
[Issue #1636 - @Minasu] - Fix LMDB compile error
[Issue #1691 - @airween] - Fix msc_who_am_i() to return pointer to a valid C string
[Issue #1640 - @defanator] - Fix "include /foo/*.conf" for single matched object in directory
[Issue #1677 - @defanator, @zimmerle] - Fixed resource load on ip match from file
[#1674 - @zimmerle, @StefaanSeys] - Fixed examples compilation while using disable-shared
[#1670 - @zimmerle, @ivanbaldo] - Fixed compilation issue while xml is disabled
[0x243028 - @zimmerle] - Checking std::deque size before use it
[0x217cbf - @zimmerle, Yaron Dayagi] - Fix uri on the benchmark utility
[0x63bec - @zimmerle] - disable Lua on systems with liblua5.1
[Issue #1639 - @victorhora, @defanator]
Improvements
- Include all prerequisites for "make check" into dist archive
[Issue #1716 - @defanator] - Adds capture action to detectXSS
[Issue #1698 - @victorhora] - Temporarily accept invalid MULTIPART_SEMICOLON_MISSING operator
[Issue #1701 - @victorhora] - Adds capture action to detectSQLi
[Issue #1698 - @zimmerle] - Adds capture action to rbl
[Issue #1698 - @zimmerle] - Adds capture action to verifyCC
[Issue #1698 - @michaelgranzow-avi, @zimmerle] - Adds capture action to verifySSN
[Issue #1698 - @zimmerle] - Adds capture action to verifyCPF
[Issue #1698 - @zimmerle] - Prettier error messages for unsupported configurations (UX)
[@victorhora] - Add missing verify*** transformation statements to parser
[Issue #1006 and #1007 - @victorhora] - Fix a set of compilation warnings
[Issue #1650 - @zimmerle, @JayCase] - Added some cosmetics to autoconf related code
[Issue #1652 - @airween] - Fix "make dist" target to include necessary headers for Lua
[Issue #1678 - @defanator] - Having LDADD and LDFLAGS organized on Makefile.am
[0xd0e85e - @zimmerle] - perf improvement: Added the concept of RunTimeString and removed
all run time parser.
[0x3eae51 0x0320e0 0xb5688f 0xfe47a9 0xfa9842 0x1affc3 0x079de4
0xc7c04f 0x5262ea 0x01974a 0xd5ee1e - @zimmerle] - perf improvement: Checks debuglog level before format debug msg
[0x42ee9 - @zimmerle] - perf. improvement/rx: Only compute dynamic regex in case of macro
[0x91ff3 - @zimmerle]
v3.0.0
Bug fixes
- Improvements on LUA build scripts and support for LUA 5.2.
[Issue #1617 and #1622 - @victorhora, @zimmerle] - Fix compilation error with disable_debug_log flag
[0xfd84e - Izik Abramov] - Improvements on the benchmark tool.
[Issue #1615 - @michaelgranzow-avi] - Fix lua headers on the build scripts
[Issue #1621 - @Minasu] - Refactoring on the JSON parser.
[Issue #1576, #1577 - Tobias Gutknecht, @zimmerle, @victorhora, @marcstern] - Fix build on non x86 arch build
[Issue #1598 - @athmane] - Fix memory issue while changing rule target dynamic
[Issue #1590 - @zimmerle, @Slabber] - Fix log while displaying the name of a dict selection by regex.
[@zimmerle] - Setting http response code on the auditlog.
[Issue #1592 - @zimmerle] - Refactoring on RuleMessage class, now accepting http code as parameter.
[@zimmerle] - Having disruptive msgs as disruptive [instead of warnings] on audit log
[Issue #1592 - @zimmerle, @nobodysz] - Parser: Pipes are no longer welcomed inside regex dict element selection.
[Issue #1591 - @zimmerle, @Slabber] - Avoids unicode initialization on every rules object
[Issue #1563 - @zimmerle, @Tiki-God, @sethinsd, @Cloaked9000, @AnoopAlias, @intelbg] - Makes clear to the user whenever the audit log is empty due to missing JSON support.
[Issue #1585 - @zimmerle] - Makes auditlog more verbose on debug logs
[Issue: #1559 - @zimmerle] - Enable support for AuditLogFormat
Issue: #1583, #1493 and #1453 - @victorhora] - Adds macro expansion for @rx operator
[Issue: #1528, #1536 - @asterite3, @zimmerle] - Consideres under quoted variable while loading the rules.
[Felipe Zimmerle/@zimmerle, Victor Hora/@victorhora] - Store the connection and url parameters in std::string
[Issue: #1571 - @majordaw] - Eliminate some reorder and sign warnings
[Issue: #1572 - Dávid Major/@majordaw] - Makes parallel logging to work when SELinux is enabled.
[Issue: #1562 - David Buckle/@met3or] - Adds possibility to run the pm operator inside a mutex to avoid concurrent access while working on a thread environment. This option is a compilation flag.
[Felipe Zimmerle/@zimmerle]
Improvements
- Adds support to WEBAPPID variable.
[Issue #1027 - @zimmerle, @victorhora] - Adds support for SecWebAppId.
[Issue #1442 - @zimmerle, @victorhora] - Adds support for SecRuleRemoveByTag.
[Issue #1476 - @zimmerle, @victorhora] - Adds support for update target by message.
[Issue #1474 - @zimmerle, @victorhora] - Adds support to SecRuleScript directive.
[Issue #994 - @zimmerle] - Adds support for the exec action.
[Issue #1050 - @zimmerle] - Adds support for transformations inside Lua engine
[Issue #994 - @zimmerle] - Adds initial support for Lua engine.
[Issue #994 - @zimmerle] - Adds support for @inspectFile operator.
[Issue #999 - @zimmerle, @victorhora] - Adds support for RESOURCE variable collection.
[Issue #1014 - @zimmerle, @victorhora] - Adds support for @fuzzyHash operator.
[Issue #997 - @zimmerle]
v3.0.0-rc1
This is the first release candidate for ModSecurity version 3.
If you are not familiar with ModSecurity version 3, most likely this release is not what you are looking for. For the Apache module please refer to the v2.x releases.
There is no change log as this is the first release candidate. The goal was to mimic the version 2 most popular functionalities.
In order to use this library within your webserver, you need use a compatible connectors: ModSecurity-nginx, ModSecurity-apache.
Further information about this release can be found in our wiki: ModSecurity-version-3-RC1
v2.9.2
Bug fixes
- IIS build refactoring and dependencies update
[Issue #1487 - @victorhora] - Best practice: Initialize msre_var pointers
[Commit fbd57 - Allan Boll] - nginx: Obtain port from r->connection->local_sockaddr. As reported by Przemyslaw Duda the lack of this commit may lead to a DoS. This patch is now merged on all nginx trees. But we still recommend nginx users to move forward to version 3.
[Commit 51314 - @defanator and Przemyslaw Duda] - Updates libinjection to v3.10.0
[Issue #1412 - @client9, @zimmerle and @bjdijk] - Avoid log flood while using SecConnEngine
[Issue #1436 - @victorhora] - Make url path absolute for SecHashEngine only when it is relative in the first place.
[Issue #752, #1071 - @hideaki] - Fix the hex digit size for SHA1 on msc_crypt implementation.
[Issue #1354 - @zimmerle and @parthasarathi204] - Avoid to flush xml buffer while assembling the injected html.
[Issue #742 - @zimmerle] - Avoid additional operator invokation if last transform of a multimatch doesn't modify the input
[Issue #1086, #1087 - Daniel Stelter-Gliese] - Adds a sanity check before use ctl:ruleRemoveTargetByTag.
[Issue #1353 - @LukeP21 and @zimmerle] - Uses an optional global lock while manipulating collections.
[Issues #1224 - @mturk and @zimmerle] - Fix collection naming problem while merging collections.
[Issue #1274 - Coty Sutherland and @zimmerle] - Fix --enable-docs adding missing Makefile, modifying autoconf and filenames
[Issue #1322 - @victorhora] - Change from using rand() to thread-safe ap_random_pick.
[Issue #1289 - Robert Bost] - Cosmetics: added comments on odd looking code to prevent future scrutiny
[Issue #1279 - Coty Sutherland] - {dis|en}able-server-context-logging: Option to disable logging of server info (log producer, sanitized objects, ...) in audit log.
[Issue #1069 - Marc Stern] - Allow drop to work with mod_http2
[Issue #1308, #992 - @bazzadp] - Fix SecConn(Read|Write)StateLimit on Apache 2.4
[Issue #1340, #1337, #786 - Sander Hoentjen] - {dis|en}able-stopwatch-logging: Option to disable logging of stopwatches
in audit log.
[Issue #1067 - Marc Stern] - {dis|en}able-dechunk-logging: Option to disable logging of dechunking in audit log when log level < 9.
[Issue #1068 - Marc Stern] - Updates libinjection to: da027ab52f9cf14401dd92e34e6683d183bdb3b4
[ModSecurity team] - {dis|en}able-handler-logging: Option to disable logging of Apache handler in audit log
[Issue #1070, #1381 - Marc Stern] - {dis|en}able-collection-delete-problem-logging: Option to disable logging of collection delete problem in audit log when log level < 9.
[Issue #1380 - Marc Stern] - Adds rule id in logs whenever a rule fail.
[Issue #1379, #391 - Marc Stern] - {dis|en}able-server-logging: Option to disable logging of "Server" in audit log when log level < 9.
[Issue #1070 - Marc Stern] - {dis|en}able-filename-logging: Option to disable logging of filename in audit log.
[Issue #1065 - Marc Stern] - Reads fuzzy hash databases on init
[Issue #1339 - Robert Paprocki and @rendername] - Changes the configuration to recognize soap+xml as XML
[Issue #1374 - @emphazer and Chaim Sanders] - Fix building with nginx >= 1.11.11
[Issue #1373, #1359 - Andrei Belov and Thomas Deutschmann] - Using Czechia instea of Czech Republic
[Issue #1258 - Michael Kjeldsen] - {dis|en}able-rule-id-validation: Option to disable rule id validation
[Issue #1150 - Marc Stern and ModSecurity team] - JSON Log: Append a newline to concurrent JSON audit logs
[Issue #1233 - Robert Paprocki] - JSON Log: Don't unnecessarily rename request body parts in cleanup
[Issue #1223 - Robert Paprocki] - Fix error message inside audit logs
[Issue #1216 and #1073 - Armin Abfalterer] - Remove port from IPV4 address when running under IIS.
[Issue #1220, #1109 and #734 - Robert Culyer] - Remove logdata and msg fields from JSON audit log rule.
[Issue #1190 and #1174 - Robert Paprocki] - Better handle the json parser cleanup
[Issue #1204 - Ephraim Vider] - Fix status failing to report in Nginx auditlogs
[Issue #977, #1171 - @charlymps and Chaim Sanders] - Fix file upload JSON audit log entry
[Issue #1181 and #1173 - Robert Paprocki and Christian Folini] - configure: Fix detection whether libcurl is linked against gnutls and, move verbose_output declaration up to the beginning.
[Issue #1158 - Thomas Deutschmann (@Whissi)] - Treat APR_INCOMPLETE as APR_EOF while receiving the request body.
[Issue #1060, #334 - Alexey Sintsov]
Security Issues
- Allan Boll reported an uninitialize variable that may lead to a crash on Windows platform.
- Brian Adeloye reported an infinite loop on the version of libInjection used on ModSecurity 2.9.1.
v2.9.1
v2.9.1-rc1
New features
- Added support to generate audit logs in JSON format.
[Issue #914, #897, #656 - Robert Paprocki] - Extended Lua support to include version 5.3
[Issue #837, #762, #814 - Athmane Madjoudj and ModSecurity team] - mlogc: Allows user to choose between TLS versions (TLSProtocol option
introduced).
[Issue #881 - Ishwor Gurung] - Allows mod_proxy's "nocanon" behavior to be specified in proxy actions.
[Issue #1031, #961, #763 - Mario D. Santana and ModSecurity team]
Bug fixes
- Creating AuditLog serial file (or parallel index) respecting the
permission configured with SecAuditLogFileMode. Previously, it was
used only to save the transactions while in parallel mode.
[Issue #852 - @littlecho and ModSecurity team] - Checking for hashing injection response, to report in case of failure.
[Issue #1041 - ModSecurity team] - Stop buffering when the request is larger than SecRequestBodyLimit
in ProcessPartial mode
[Issue #709, #705, #728 - Justin Gerace and ModSecurity team] - Refactoring conditional #if/#defs directives.
[Issue #996 - Wesley M and ModSecurity team] - mlogc-batch-load.pl.in: fix searching SecAuditLogStorageDir
files with Apache 2.4
[Issue #775 - Elia Pinto] - Understands IIS 10 as compatible on Windows installer.
[Issue #931 - Anton Serbulov, Pavel Vasilevich and ModSecurity team] - Fix apache logging limitation by using correct Apache call.
[Issue #840 - Christian Folini] - Fix apr_crypto.h check on 32-bit Linux platform
[Issue #882, #883 - Kurt Newman] - Fix variable resolution duration (Content of the DURATION variable).
[Issue #662 - Andrew Elble] - Fix crash while adding empty keys to persistent collections.
[Issue #927 - Eugene Alekseev, Marc Stern and ModSecurity team] - Remove misguided call to srand()
[Issues #778, #781 and #836 - Michael Bunk, @gilperon] - Fix compilation problem while ssdeep is installed in non-standard
location.
[Issue #872 - Kurt Newman] - Fix invalid storage reference by apr_psprintf at msc_crypt.c
[Issue #609 - Jeff Trawick]
Known issues
- Instabilities of nginx add-on are still expected. Please use the "nginx
refactoring" branch and stay tuned for the ModSecurity version 3.
Release 2.9.0
Bug fix
- Fix apr_crypto.h include, now checking if apr_crypto.h is available by checking the definition WITH_APU_CRYPTO. [martinjina and ModSecurity team]
Archives also available at:
- Apache/Nginx:
- IIS
v2.9.0-rc2
Bug fixes
- OpenSSL dependency was removed on MS Windows builds. ModSecurity is now using
Curl with WinSSL.
[Gregg Smith, Steffen and ModSecurity team] - ModSecurity now informs about external resources loaded/failed while reloading Apache.
[ModSecurity team] - Adds missing 'ModSecurity:' prefix in some warnings messages.
[Walter Hop and ModSecurity team] - External resources download is now more verbose. Holding the message
to be displayed when Apache is ready to write on the error_log.
[ModSecurity team] - Remote resources loading process is now failing in case of HTTP error.
[Walter Hop and ModSecurity team] - Fixed start up crash on Apache with mod_ssl configured. Crash was happening
during the download of remote resources.
[Christian Folini, Walter Hop and ModSecurity team] - Curl is not a mandatory dependency to ModSecurity core anymore.
[Rainer Jung and ModSecurity team]
Archives also available at:
- Apache/Nginx:
- IIS
- https://www.modsecurity.org/tarball/2.9.0-rc2/ModSecurityIIS_2.9.0-RC2-32b.msi
- https://www.modsecurity.org/tarball/2.9.0-rc2/ModSecurityIIS_2.9.0-RC2-32b.msi.sha256
- https://www.modsecurity.org/tarball/2.9.0-rc2/ModSecurityIIS_2.9.0-RC2-64b.msi
- https://www.modsecurity.org/tarball/2.9.0-rc2/ModSecurityIIS_2.9.0-RC2-64b.msi.sha256