Skip to content
Help: Can't figure ...
 
Notifications
Clear all

Help: Can't figure out why our WAF is allowing obvious SQLi probes.

3 Posts
3 Users
0 Reactions
0 Views
(@crm_hopper_2026)
Honorable Member
Joined: 3 months ago
Posts: 297
Topic starter   [#24923]

I've been conducting a comprehensive evaluation of our web application firewall's efficacy as part of a broader security posture review, and I've encountered a persistent anomaly that I need the community's insight on. Our WAF, a cloud-based solution positioned in front of our customer data portal, is demonstrably allowing through what I classify as textbook SQL injection probe patterns. This is occurring despite having the vendor's pre-configured "SQL Injection" rule set enabled at a medium paranoia level.

My testing methodology is as follows: I use a controlled staging environment that mirrors our production setup. I then run a series of standardized, benign-looking probes designed to trigger common SQLi signatures.

**Observed Allowed Payloads:**
* `admin'--` (classic comment-based termination)
* `1' OR '1'='1` (always-true condition)
* `1' UNION SELECT null--` (union-based probe)

Our logging dashboard confirms these requests are being evaluated by the WAF but are tagged with an "Allow" action. Concurrently, it is correctly blocking noisier, more overt attacks like `' OR 1=1;--` and `EXEC xp_cmdshell`. This suggests the rule set is partially functional, but its sensitivity is misaligned with the threat landscape.

**My diagnostic steps so far:**
* Verified the WAF policy is actively assigned to the relevant hostname and path.
* Confirmed no custom "exclusion" or "allow" rules have been created for these paths or IP ranges.
* Reviewed the specific rule documentation, which claims coverage for these patterns under OWASP Rule IDs 942100-942999.
* Ensured the policy is in "Detection and Prevention" mode, not just "Detection."

My primary hypothesis is a rule ordering or precedence issue, where a broader "allow" rule (perhaps for API traffic or specific user agents) is taking precedence. A secondary hypothesis is that the vendor's "medium" paranoia level intentionally overlooks these simpler probes due to false-positive concerns with legacy web forms, which seems a dangerous default.

Before I engage the vendor's support—a process I find often lacks methodological rigor—I wanted to query the community:
* Has anyone performed a similar side-by-side test and observed granular gaps in default SQLi rule sets?
* Are there specific WAF architectural nuances (e.g., streaming vs. full-buffer inspection, application of rules per argument vs. whole request) that could explain this selective blindness?
* What is your recommended framework for systematically validating WAF rule coverage, beyond trusting vendor benchmarks?

I am particularly interested in the operational intersection of threat intelligence feeds and WAF rule tuning—specifically, how you balance updating rules for maximum coverage against maintaining application stability. Concrete examples of how you've structured your testing and validation pipelines would be invaluable.



   
Quote
(@harperj)
Reputable Member
Joined: 3 weeks ago
Posts: 288
 

This is a classic and frustrating scenario. The discrepancy between blocking `' OR 1=1;--` and allowing `1' OR '1'='1` is a huge clue. It often comes down to how the rule engine is parsing the request.

Many rule sets at medium paranoia are looking for specific, noisy character sequences or a critical mass of SQL keywords. A payload like `1' OR '1'='1` might be getting tokenized in a way that doesn't trip the signature, or the rule might be weighted to ignore strings that appear heavily "data-like" to avoid false positives on legitimate search queries. The single quote is balanced, which can sometimes fool simpler parsing.

You'll need to check two things in your WAF's event details: the specific rule ID that was supposed to fire, and the exact part of the request (URI, ARGS, headers) that was inspected. Often, the issue is that the probe is hitting a parameter the WAF isn't inspecting by default at that paranoia level.


Keep it constructive.


   
ReplyQuote
(@grafana_guy_night)
Reputable Member
Joined: 5 months ago
Posts: 252
 

This hits close to home. I was just setting up some basic detection in Grafana and saw similar weirdness with rule matching. Could it be the WAF is looking at each parameter in isolation? `1' OR '1'='1` might be seen as one whole string for the "username" field, so it doesn't match a keyword list. But the `' OR 1=1;--` has that semicolon and double-dash right next to the SQL words, which is a more explicit signature.

Have you checked if the logging shows *which* part of the request the WAF analyzed for those allowed requests? Sometimes it only looks at the URI path and misses the query string or POST body entirely.



   
ReplyQuote