# CVE-2021-31805: Forced OGNL evaluation, when evaluated on raw not validated user input in tag attributes, may lead to RCE. - Exploited (CISA KEV): no - Published: 2022-04-12 - CVSS: not scored - EPSS: 85.4% (100th percentile) - CWE: CWE-917 The fix issued for CVE-2020-17530 was incomplete. So from Apache Struts 2.0.0 to 2.5.29, still some of the tag’s attributes could perform a double evaluation if a developer applied forced OGNL evaluation by using the %{...} syntax. Using forced OGNL evaluation on untrusted user input can lead to a Remote Code Execution and security degradation. ## Edge WAF coverage (claimed by vendors, not measured) | Vendor | Status | First rule | Days after publication | |---|---|---|---| | Cloudflare | Blocks by default | 2025-04-02 | 1086 | | AWS | No public claim | — | — | | Microsoft Azure | No public claim | — | — | | Google Cloud | Before feed history | — | — | | Fastly | Before feed history | — | — | | F5 | Before feed history | — | — | | Akamai | No public source | — | — | | OWASP CRS | Before feed history | — | — | ### Cloudflare - 2025-04-02 · new · rule cd8db44032694fdf8d6e22c1bb70a463 · default Block > Apache Struts - CVE:CVE-2021-31805. Previous action: N/A. New action: Block. N/A Source: https://developers.cloudflare.com/changelog/post/2025-04-02-waf-release/ ## Our test (measured) - OWASP Core Rule Set 4.25.0, paranoia level 1, anomaly threshold 5, default CRS settings: blocked (1 of 1 requests blocked), template CVE-2021-31805, 2026-11-02 - OWASP Core Rule Set 4.25.0, paranoia level 2, anomaly threshold 5, default CRS settings: blocked (1 of 1 requests blocked), template CVE-2021-31805, 2026-11-02 "No public claim" means no vendor statement names this CVE; "Before feed history" means the CVE is older than the vendor feed. In both cases generic rules may still block it. HTML: https://cve.vigilbase.com/cve/CVE-2021-31805 · JSON: https://cve.vigilbase.com/api/v1/cves/CVE-2021-31805