ModSecurity przed wersją 3.0.16 nieprawidłowo usuwa znaki nowej linii z wartości pól formularzy w żądaniach multipart/form-data, przez co reguły WAF nie wykrywają złośliwych payload. Umożliwia to atakującemu ominięcie ochrony WAF i dostarczenie niebezpiecznych danych do aplikacji backendowej.
▸ Pokaż oryginał (EN)
ModSecurity is an open source, cross platform web application firewall (WAF) engine for Apache, IIS and Nginx. Prior to 3.0.16, the multipart/form-data request body parser in libmodsecurity silently removes embedded line breaks from non-file form-field values before exporting them to ARGS and ARGS_POST because src/request_body_processor/multipart.cc overwrites reserved bytes in m_reserve instead of appending the current buffer. This creates a parser differential between ModSecurity and backend applications that preserve line breaks in form fields, allowing rules that inspect ARGS or ARGS_POST to miss payloads whose dangerous syntax depends on a line break. This issue is fixed in version 3.0.16.
Błąd w pliku src/request_body_processor/multipart.cc powoduje, że libmodsecurity nadpisuje zarezerwowane bajty w buforze m_reserve zamiast dołączać bieżący bufor, co prowadzi do cichego usuwania osadzonych znaków nowej linii z wartości pól formularzy (niebędących plikami). W efekcie zmienne ARGS i ARGS_POST eksportowane do reguł ModSecurity nie zawierają oryginalnych znaków nowej linii. Powstaje różnica w sposobie parsowania (parser differential) między ModSecurity a aplikacjami backendowymi, które zachowują znaki nowej linii. Reguły inspekcji ARGS lub ARGS_POST nie widzą payload, których niebezpieczna składnia opiera się właśnie na znakach nowej linii.
Atakujący może skutecznie ominąć reguły WAF opartego na ModSecurity i dostarczyć do aplikacji backendowej złośliwy payload, którego obecność zależy od znaków nowej linii (np. ataki typu HTTP header injection, command injection). Skutkuje to naruszeniem integralności przetwarzanych danych po stronie serwera.
Należy zaktualizować ModSecurity do wersji 3.0.16, w której problem został naprawiony. Poprawka dostępna jest w oficjalnym repozytorium projektu: https://github.com/owasp-modsecurity/ModSecurity/releases/tag/v3.0.16
ModSecurity (libmodsecurity) we wszystkich wersjach przed 3.0.16, działający jako WAF dla Apache, IIS i Nginx.
Podatność sklasyfikowana jako CWE-180 (Incorrect Behavior Order: Validate Before Canonicalize). Dotyczy wyłącznie libmodsecurity v3 — gałąź v2 nie jest wymieniona jako podatna w opisie. Poprawka wprowadzona commitem 875504c2758169c41be1ad2f0cc64d896b7815d7.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N