{"basis":"claimed","id":"CVE-2021-31805","name":"Forced OGNL evaluation, when evaluated on raw not validated user input in tag attributes, may lead to RCE.","vendorProject":"Apache Software Foundation","product":"Apache Struts","publishedAt":"2022-04-12","cvss":null,"exploited":null,"epss":{"score":0.85433,"percentile":0.9972,"date":"2026-11-02"},"coverage":{"cloudflare":{"status":"blocks","firstOn":"2025-04-02","daysToRule":1086},"aws":{"status":"none","firstOn":null,"daysToRule":null},"azure":{"status":"none","firstOn":null,"daysToRule":null},"google":{"status":"no_history","firstOn":null,"daysToRule":null},"fastly":{"status":"no_history","firstOn":null,"daysToRule":null},"f5":{"status":"no_history","firstOn":null,"daysToRule":null},"akamai":{"status":"no_source","firstOn":null,"daysToRule":null},"crs":{"status":"no_history","firstOn":null,"daysToRule":null}},"title":"Forced OGNL evaluation, when evaluated on raw not validated user input in tag attributes, may lead to RCE.","description":"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.","cwes":["CWE-917"],"vendors":[{"vendor":"cloudflare","status":"blocks","basis":"claimed","firstOn":"2025-04-02","firstIsNew":true,"daysToRule":1086,"daysAtMost":null,"freePlan":false,"claims":[{"id":"b3ac2d44227904f42da30fdaaa670cd57edcd2f8419c682dbfdc78b28e8f8bf1","cve_id":"CVE-2021-31805","vendor":"cloudflare","product":"Cloudflare Managed Ruleset","rule_id":"cd8db44032694fdf8d6e22c1bb70a463","rule_name":"Apache Struts - CVE:CVE-2021-31805","change":"new","default_action":"Block","published_on":"2025-04-02","source_url":"https://developers.cloudflare.com/changelog/post/2025-04-02-waf-release/","source_title":"WAF Release - 2025-04-02","excerpt":"Apache Struts - CVE:CVE-2021-31805. Previous action: N/A. New action: Block. N/A","first_seen_at":"2026-11-02T21:00:16.759Z"}]},{"vendor":"aws","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"azure","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"google","status":"no_history","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"fastly","status":"no_history","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"f5","status":"no_history","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"akamai","status":"no_source","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"crs","status":"no_history","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]}],"updatedAt":"2026-11-02T21:05:18.107Z","cvssVector":null,"ssvc":null,"measured":[{"engineId":"owasp-crs","engineName":"OWASP Core Rule Set","engineVersion":"4.25.0","runtime":"Coraza v3.8.1","config":"paranoia level 1, anomaly threshold 5, default CRS settings","ranAt":"2026-11-02T13:02:57.000Z","verdict":"blocked","templateId":"CVE-2021-31805","templatePath":"http/cves/2021/CVE-2021-31805.yaml","requests":1,"blockedRequests":1,"rules":["200003"],"note":"","requestDetail":[{"method":"POST","path":"/","status":400,"blocked":true,"rules":["200003"]}]},{"engineId":"owasp-crs","engineName":"OWASP Core Rule Set","engineVersion":"4.25.0","runtime":"Coraza v3.8.1","config":"paranoia level 2, anomaly threshold 5, default CRS settings","ranAt":"2026-11-02T13:03:28.000Z","verdict":"blocked","templateId":"CVE-2021-31805","templatePath":"http/cves/2021/CVE-2021-31805.yaml","requests":1,"blockedRequests":1,"rules":["200003"],"note":"","requestDetail":[{"method":"POST","path":"/","status":400,"blocked":true,"rules":["200003"]}]}],"social":{"total":0,"first_seen":null,"daily":[{"day":"2026-10-21","posts":0},{"day":"2026-10-22","posts":0},{"day":"2026-10-23","posts":0},{"day":"2026-10-24","posts":0},{"day":"2026-10-25","posts":0},{"day":"2026-10-26","posts":0},{"day":"2026-10-27","posts":0},{"day":"2026-10-28","posts":0},{"day":"2026-10-29","posts":0},{"day":"2026-10-30","posts":0},{"day":"2026-10-31","posts":0},{"day":"2026-11-01","posts":0},{"day":"2026-11-02","posts":0},{"day":"2026-11-03","posts":0}],"top_posts":[],"exploit_repositories":[]}}