Vigilbase CVEConnect your agent

Forced OGNL evaluation, when evaluated on raw not validated user input in tag attributes, may lead to RCE.

Not in CISA KEVCVE-2021-31805CWE-917

Not confirmed exploited. 1 of 8 rule sources name it; Cloudflare blocks by default. Our CRS test: blocked.

Edge rules
1/8
Our test
Blocked
CVSS
—
EPSS
85.4% Top 0.3%
Posts, 14d
02026-10-21: 0 posts2026-10-22: 0 posts2026-10-23: 0 posts2026-10-24: 0 posts2026-10-25: 0 posts2026-10-26: 0 posts2026-10-27: 0 posts2026-10-28: 0 posts2026-10-29: 0 posts2026-10-30: 0 posts2026-10-31: 0 posts2026-11-01: 0 posts2026-11-02: 0 posts2026-11-03: 0 posts
Published
2022-04-12
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… More

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.

Ask Vigil

AI · answers from this page
Ask about CVE-2021-31805: who's covered, what to patch first, how vendors compare. I cite sources and won't help with attacks.

Workers AI (Llama 3.3). Can be wrong: check the cited source.

Public exploits

1 found
0 Metasploit0 Exploit-DB1 Scanner template0 GitHub PoCs

Links are to third-party code: never run it outside an isolated lab.

Timeline

  1. 2022-04-12
    CVE published
    CVE List
  2. 2025-04-02
    Cloudflare ships a rule
    Apache Struts - CVE:CVE-2021-31805
  3. 2026-11-02
    Our test: OWASP Core Rule Set blocked it
    paranoia level 1, anomaly threshold 5, default CRS settings
  4. 2026-11-02
    Our test: OWASP Core Rule Set blocked it
    paranoia level 2, anomaly threshold 5, default CRS settings

Social

2026-10-21: 0 posts2026-10-22: 0 posts2026-10-23: 0 posts2026-10-24: 0 posts2026-10-25: 0 posts2026-10-26: 0 posts2026-10-27: 0 posts2026-10-28: 0 posts2026-10-29: 0 posts2026-10-30: 0 posts2026-10-31: 0 posts2026-11-01: 0 posts2026-11-02: 0 posts2026-11-03: 0 posts

No posts seen yet on X, Bluesky, Mastodon, Hacker News or GitHub.

Vendor statements

Quoted
CloudflareWAF Managed Rules1 quoteBlocks by default

First rule 2025-04-02, 1086 days after the CVE was published.

2025-04-02New rule…bb70a463Default: BlockSource
Apache Struts - CVE:CVE-2021-31805. Previous action: N/A. New action: Block. N/A
AWSAWS WAF Managed RulesNo public claim

We found no public statement from this vendor naming this CVE. That is not proof of no protection: generic rules may still catch it. AWS often describes a vulnerability without naming its CVE (for example "Log4j"). We count only entries that name the CVE, so AWS coverage is understated.

Microsoft AzureFront Door and Application Gateway WAF (DRS)No public claim

We found no public statement from this vendor naming this CVE. That is not proof of no protection: generic rules may still catch it. The rule tables name CVEs but carry no dates, so Azure is left out of every time-to-rule figure.

Google CloudCloud Armor preconfigured WAF rulesBefore feed history

The CVE predates the oldest entry in this vendor's public feed, so a rule may exist that we cannot see.

FastlyNext-Gen WAF virtual patchesBefore feed history

The CVE predates the oldest entry in this vendor's public feed, so a rule may exist that we cannot see.

F5Attack signatures (Distributed Cloud WAF)Before feed history

The CVE predates the oldest entry in this vendor's public feed, so a rule may exist that we cannot see.

AkamaiApp & API Protector (Adaptive Security Engine)No public source

This vendor publishes no machine-readable rule changelog we can check.

OWASP CRSCore Rule Set (open source, used inside many WAFs)Before feed history

The CVE predates the oldest entry in this vendor's public feed, so a rule may exist that we cannot see.