-
Notifications
You must be signed in to change notification settings - Fork 1.7k
fix: mod_security2's regression tests fix #3425
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 14 commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
158084c
Fix startup errors, missing getopt() args
airween 36876ff
Fix load tests
airween 575314f
Fix misc directives test cases
airween 10659ad
Fix request directives test cases
airween 33791eb
Fix multipart tests
airween bc01714
Fix status engine tests
airween 1362a30
Fix SecRemoteRules test - that's need anymore
airween 780304c
Fix ipmatchfromfile external tests - temporary suspended all tests
airween 63af830
Fix pmfromfile external tests - temporary suspended all tests
airween c7cacf8
Fix xml processing tests
airween b6d14b7
Add necessary arguments to perl test script
airween c964f9c
Remove unused tests
airween cb107a7
Add non-versioned files to .gitignore
airween 30f90a4
Remove unwanted tests from configure.ac
airween fb4a346
Update .gitignore
airween File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,9 @@ | ||
#! /bin/sh | ||
# Wrapper for compilers which do not understand '-c -o'. | ||
|
||
scriptversion=2018-03-07.03; # UTC | ||
scriptversion=2024-06-19.01; # UTC | ||
|
||
# Copyright (C) 1999-2021 Free Software Foundation, Inc. | ||
# Copyright (C) 1999-2024 Free Software Foundation, Inc. | ||
# Written by Tom Tromey <[email protected]>. | ||
# | ||
# This program is free software; you can redistribute it and/or modify | ||
|
@@ -143,7 +143,7 @@ func_cl_wrapper () | |
# configure might choose to run compile as 'compile cc -o foo foo.c'. | ||
eat=1 | ||
case $2 in | ||
*.o | *.[oO][bB][jJ]) | ||
*.o | *.lo | *.[oO][bB][jJ]) | ||
func_file_conv "$2" | ||
set x "$@" -Fo"$file" | ||
shift | ||
|
@@ -248,14 +248,17 @@ If you are trying to build a whole package this is not the | |
right script to run: please start by reading the file 'INSTALL'. | ||
|
||
Report bugs to <[email protected]>. | ||
GNU Automake home page: <https://www.gnu.org/software/automake/>. | ||
General help using GNU software: <https://www.gnu.org/gethelp/>. | ||
EOF | ||
exit $? | ||
;; | ||
-v | --v*) | ||
echo "compile $scriptversion" | ||
echo "compile (GNU Automake) $scriptversion" | ||
exit $? | ||
;; | ||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ | ||
clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ | ||
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) | ||
func_cl_wrapper "$@" # Doesn't return... | ||
;; | ||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,240 @@ | ||
# -- Rule engine initialization ---------------------------------------------- | ||
|
||
# Enable ModSecurity, attaching it to every transaction. Use detection | ||
# only to start with, because that minimises the chances of post-installation | ||
# disruption. | ||
# | ||
SecRuleEngine DetectionOnly | ||
|
||
|
||
# -- Request body handling --------------------------------------------------- | ||
|
||
# Allow ModSecurity to access request bodies. If you don't, ModSecurity | ||
# won't be able to see any POST parameters, which opens a large security | ||
# hole for attackers to exploit. | ||
# | ||
SecRequestBodyAccess On | ||
|
||
|
||
# Enable XML request body parser. | ||
# Initiate XML Processor in case of xml content-type | ||
# | ||
SecRule REQUEST_HEADERS:Content-Type "^(?:application(?:/soap\+|/)|text/)xml" \ | ||
"id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML" | ||
|
||
# Enable JSON request body parser. | ||
# Initiate JSON Processor in case of JSON content-type; change accordingly | ||
# if your application does not use 'application/json' | ||
# | ||
SecRule REQUEST_HEADERS:Content-Type "^application/json" \ | ||
"id:'200001',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=JSON" | ||
|
||
# Sample rule to enable JSON request body parser for more subtypes. | ||
# Uncomment or adapt this rule if you want to engage the JSON | ||
# Processor for "+json" subtypes | ||
# | ||
#SecRule REQUEST_HEADERS:Content-Type "^application/[a-z0-9.-]+[+]json" \ | ||
# "id:'200006',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=JSON" | ||
|
||
# Maximum request body size we will accept for buffering. If you support | ||
# file uploads then the value given on the first line has to be as large | ||
# as the largest file you are willing to accept. The second value refers | ||
# to the size of data, with files excluded. You want to keep that value as | ||
# low as practical. | ||
# | ||
SecRequestBodyLimit 13107200 | ||
SecRequestBodyNoFilesLimit 131072 | ||
|
||
# Store up to 128 KB of request body data in memory. When the multipart | ||
# parser reaches this limit, it will start using your hard disk for | ||
# storage. That is slow, but unavoidable. | ||
# | ||
SecRequestBodyInMemoryLimit 131072 | ||
|
||
# What do do if the request body size is above our configured limit. | ||
# Keep in mind that this setting will automatically be set to ProcessPartial | ||
# when SecRuleEngine is set to DetectionOnly mode in order to minimize | ||
# disruptions when initially deploying ModSecurity. | ||
# | ||
SecRequestBodyLimitAction Reject | ||
|
||
# Maximum parsing depth allowed for JSON objects. You want to keep this | ||
# value as low as practical. | ||
# | ||
SecRequestBodyJsonDepthLimit 512 | ||
|
||
# Verify that we've correctly processed the request body. | ||
# As a rule of thumb, when failing to process a request body | ||
# you should reject the request (when deployed in blocking mode) | ||
# or log a high-severity alert (when deployed in detection-only mode). | ||
# | ||
SecRule REQBODY_ERROR "!@eq 0" \ | ||
"id:'200002', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2" | ||
|
||
# By default be strict with what we accept in the multipart/form-data | ||
# request body. If the rule below proves to be too strict for your | ||
# environment consider changing it to detection-only. You are encouraged | ||
# _not_ to remove it altogether. | ||
# | ||
SecRule MULTIPART_STRICT_ERROR "!@eq 0" \ | ||
"id:'200003',phase:2,t:none,log,deny,status:400, \ | ||
msg:'Multipart request body failed strict validation: \ | ||
PE %{REQBODY_PROCESSOR_ERROR}, \ | ||
BQ %{MULTIPART_BOUNDARY_QUOTED}, \ | ||
BW %{MULTIPART_BOUNDARY_WHITESPACE}, \ | ||
DB %{MULTIPART_DATA_BEFORE}, \ | ||
DA %{MULTIPART_DATA_AFTER}, \ | ||
HF %{MULTIPART_HEADER_FOLDING}, \ | ||
LF %{MULTIPART_LF_LINE}, \ | ||
SM %{MULTIPART_MISSING_SEMICOLON}, \ | ||
IQ %{MULTIPART_INVALID_QUOTING}, \ | ||
IP %{MULTIPART_INVALID_PART}, \ | ||
IH %{MULTIPART_INVALID_HEADER_FOLDING}, \ | ||
FL %{MULTIPART_FILE_LIMIT_EXCEEDED}'" | ||
|
||
# Did we see anything that might be a boundary? | ||
# | ||
SecRule MULTIPART_UNMATCHED_BOUNDARY "!@eq 0" \ | ||
"id:'200004',phase:2,t:none,log,deny,msg:'Multipart parser detected a possible unmatched boundary.'" | ||
|
||
# PCRE Tuning | ||
# We want to avoid a potential RegEx DoS condition | ||
# | ||
SecPcreMatchLimit 1000 | ||
SecPcreMatchLimitRecursion 1000 | ||
|
||
# Some internal errors will set flags in TX and we will need to look for these. | ||
# All of these are prefixed with "MSC_". The following flags currently exist: | ||
# | ||
# MSC_PCRE_LIMITS_EXCEEDED: PCRE match limits were exceeded. | ||
# | ||
SecRule TX:/^MSC_/ "!@streq 0" \ | ||
"id:'200005',phase:2,t:none,log,deny,msg:'ModSecurity internal error flagged: %{MATCHED_VAR_NAME}'" | ||
|
||
|
||
# -- Response body handling -------------------------------------------------- | ||
|
||
# Allow ModSecurity to access response bodies. | ||
# You should have this directive enabled in order to identify errors | ||
# and data leakage issues. | ||
# | ||
# Do keep in mind that enabling this directive does increases both | ||
# memory consumption and response latency. | ||
# | ||
SecResponseBodyAccess On | ||
|
||
# Which response MIME types do you want to inspect? You should adjust the | ||
# configuration below to catch documents but avoid static files | ||
# (e.g., images and archives). | ||
# | ||
SecResponseBodyMimeType text/plain text/html text/xml | ||
|
||
# Buffer response bodies of up to 512 KB in length. | ||
SecResponseBodyLimit 524288 | ||
|
||
# What happens when we encounter a response body larger than the configured | ||
# limit? By default, we process what we have and let the rest through. | ||
# That's somewhat less secure, but does not break any legitimate pages. | ||
# | ||
SecResponseBodyLimitAction ProcessPartial | ||
|
||
|
||
# -- Filesystem configuration ------------------------------------------------ | ||
|
||
# The location where ModSecurity stores temporary files (for example, when | ||
# it needs to handle a file upload that is larger than the configured limit). | ||
# | ||
# This default setting is chosen due to all systems have /tmp available however, | ||
# this is less than ideal. It is recommended that you specify a location that's private. | ||
# | ||
SecTmpDir /tmp/ | ||
|
||
# The location where ModSecurity will keep its persistent data. This default setting | ||
# is chosen due to all systems have /tmp available however, it | ||
# too should be updated to a place that other users can't access. | ||
# | ||
SecDataDir /tmp/ | ||
|
||
|
||
# -- File uploads handling configuration ------------------------------------- | ||
|
||
# The location where ModSecurity stores intercepted uploaded files. This | ||
# location must be private to ModSecurity. You don't want other users on | ||
# the server to access the files, do you? | ||
# | ||
#SecUploadDir /opt/modsecurity/var/upload/ | ||
|
||
# By default, only keep the files that were determined to be unusual | ||
# in some way (by an external inspection script). For this to work you | ||
# will also need at least one file inspection rule. | ||
# | ||
#SecUploadKeepFiles RelevantOnly | ||
|
||
# Uploaded files are by default created with permissions that do not allow | ||
# any other user to access them. You may need to relax that if you want to | ||
# interface ModSecurity to an external program (e.g., an anti-virus). | ||
# | ||
#SecUploadFileMode 0600 | ||
|
||
|
||
# -- Debug log configuration ------------------------------------------------- | ||
|
||
# The default debug log configuration is to duplicate the error, warning | ||
# and notice messages from the error log. | ||
# | ||
#SecDebugLog /opt/modsecurity/var/log/debug.log | ||
#SecDebugLogLevel 3 | ||
|
||
|
||
# -- Audit log configuration ------------------------------------------------- | ||
|
||
# Log the transactions that are marked by a rule, as well as those that | ||
# trigger a server error (determined by a 5xx or 4xx, excluding 404, | ||
# level response status codes). | ||
# | ||
SecAuditEngine RelevantOnly | ||
SecAuditLogRelevantStatus "^(?:5|4(?!04))" | ||
|
||
# Log everything we know about a transaction. | ||
SecAuditLogParts ABIJDEFHZ | ||
|
||
# Use a single file for logging. This is much easier to look at, but | ||
# assumes that you will use the audit log only ocassionally. | ||
# | ||
#SecAuditLogType Serial | ||
#SecAuditLog /var/log/modsec_audit.log | ||
|
||
# Specify the path for concurrent audit logging. | ||
#SecAuditLogStorageDir /opt/modsecurity/var/audit/ | ||
|
||
|
||
# -- Miscellaneous ----------------------------------------------------------- | ||
|
||
# Use the most commonly used application/x-www-form-urlencoded parameter | ||
# separator. There's probably only one application somewhere that uses | ||
# something else so don't expect to change this value. | ||
# | ||
SecArgumentSeparator & | ||
|
||
# Settle on version 0 (zero) cookies, as that is what most applications | ||
# use. Using an incorrect cookie version may open your installation to | ||
# evasion attacks (against the rules that examine named cookies). | ||
# | ||
SecCookieFormat 0 | ||
|
||
# Specify your Unicode Code Point. | ||
# This mapping is used by the t:urlDecodeUni transformation function | ||
# to properly map encoded data to your language. Properly setting | ||
# these directives helps to reduce false positives and negatives. | ||
# | ||
SecUnicodeMapFile unicode.mapping 20127 | ||
|
||
# Improve the quality of ModSecurity by sharing information about your | ||
# current ModSecurity version and dependencies versions. | ||
# The following information will be shared: ModSecurity version, | ||
# Web Server version, APR version, PCRE version, Lua version, Libxml2 | ||
# version, Anonymous unique id for host. | ||
# NB: As of April 2022, there is no longer any advantage to turning this | ||
# setting On, as there is no active receiver for the information. | ||
SecStatusEngine Off | ||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.