TMA-APACHE-10.2
Ensure the LimitRequestFields Directive is Set to 100 or Less but not 0
LowLevel 2Automatedapache
Description
The LimitRequestFields directive limits the number of fields allowed in an HTTP request. LimitRequestFields must be set and every value must be 1-100. Reads the main configuration (APACHE_CONF overrides; default /etc/apache2/apache2.conf, /etc/httpd/conf/httpd.conf or /usr/local/apache2/conf/httpd.conf) and every Include/IncludeOptional file.
How it is checked
Audit method: Shell command
shell
c=${APACHE_CONF:-}; if [ -z "$c" ]; then for f in /etc/apache2/apache2.conf /etc/httpd/conf/httpd.conf /usr/local/apache2/conf/httpd.conf /etc/apache2/httpd.conf; do [ -f "$f" ] && { c=$f; break; }; done; fi; [ -r "$c" ] || exit 1; R=$(awk 'tolower($1)=="serverroot"{v=$2; gsub(/"/,"",v); print v; exit}' "$c"); [ -n "$R" ] || R=$(dirname "$c"); shopt -s nocasematch; inc(){ local p g l; [ ${#FUNCNAME[@]} -lt 16 ] || return 0; p=$1; case $p in /*) ;; *) p=$R/$p;; esac; [ -d "$p" ] && p="$p/*"; for g in $p; do [ -f "$g" ] || continue; while IFS= read -r l || [ -n "$l" ]; do if [[ $l =~ ^[[:space:]]*include(optional)?[[:space:]]+\"?([^\"[:space:]]+) ]]; then inc "${BASH_REMATCH[2]}"; else printf '%s\n' "$l"; fi; done < "$g"; done; }; cfg=$(inc "$c" | sed -e 's/^[[:space:]]*//' -e '/^#/d' -e '/^$/d'); shopt -u nocasematch; printf '%s\n' "$cfg" | awk 'tolower($1)=="limitrequestfields"{n++; v=$2+0; if(!(v>=1 && v<=100)) bad=1} END{print (n>0&&!bad)?"compliant":"noncompliant"}'- Expected output
compliant
How it is fixed
Fix method: Guidance or infrastructure patch
Set LimitRequestFields 100 (or lower, not 0). Then run apachectl configtest and reload Apache.
Properties
- Operating systems
- Any
- Tags
- apacherequest-limits
- Reference
- CIS Apache HTTP Server 2.4 Benchmark v2.4.0 - 10.2 Ensure the LimitRequestFields Directive is Set to 100 or Less but not 0
Check this host
Run this on a machine you are allowed to audit. The scan is read-only.
shell
tmaegis scan --target apache --level 2