-
Notifications
You must be signed in to change notification settings - Fork 7
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
modsecurity "failing open" with a large number of requests #3
Comments
The issue appears to be the conditional which is mentioned in the readme: Line 97 in 3c895f3
When a timeout is hit, It's debatable whether the readme should be changed to change the "fail open" to "fail closed", but if you do want to do that, use this conditional instead:
EDIT: See comment below, don't use the above workaround since it doesn't work |
It seems that the return code from modsecurity is a signed integer: Line 93 in 3c895f3
But when encoded via SPOP, it's treated as a uint64_t: spoa-modsecurity/include/haproxy/intops.h Line 399 in 3c895f3
This seems to be related to this issue because I'm not sure what the value of So I'm having trouble constructing a conditional that fails-closed for all error states, but allows the request for all other cases. |
Looks like if an SPOP request to modsecurity exceeds the
timeout processing
, the request will be allowed to proceed. Is there some way of configuring HAProxy to "fail closed" when it encounters a timeout?Here's an example of the behavior. I sent 300 requests, 100 at a time to an haproxy server. This server is using spoa-modsecurity with
timeout processing 1s
set:Note how 17 requests took slightly longer than 1 second to process, but instead of being denied (403) by modsecurity for trying to access
/etc/passwd
, the requests went through (200).This might be a separate issue, but the request distribution also looks suspicious. I'd expect to have a long tail of requests between 0.2 and 1.0 seconds, but instead it's a sharp cliff. Maybe there's some other limit being hit here which causes modsecurity to lock up? I'm running modsecurity with "-n 16" worker threads on a VM with 4 CPUs, for context.
The text was updated successfully, but these errors were encountered: