HIGH 7.5

CVE-2026-41856: Spring for GraphQL Annotation Resolution Authorization Bypass

Spring for GraphQL has a flaw in how it detects security annotations on data fetcher methods. When methods are inherited or defined in type hierarchies, the framework may fail to recognize authorization annotations at runtime, allowing requests that should be blocked by security rules to proceed. This affects multiple versions across the 1.x and 2.x release lines.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weaknesses (CWE)
CWE-284
Affected products
1 configuration(s)
Published / Modified
2026-06-11 / 2026-07-17

NVD description (verbatim)

The Spring GraphQL annotation detection mechanism for @Controller data fetchers may not correctly resolve annotations on methods within type hierarchies. This can be an issue if such annotations are used for authorization decisions. When all conditions are met, security annotations can be ignored at runtime. Affected versions: Spring for GraphQL 2.0.0 through 2.0.3; 1.4.0 through 1.4.5; 1.3.0 through 1.3.8; 1.0.0 through 1.0.6.

1 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

Spring for GraphQL's annotation resolution mechanism for @Controller data fetchers does not consistently locate and apply security annotations when those annotations are declared on methods within inheritance hierarchies. The vulnerability stems from incomplete traversal or caching of method metadata during the annotation detection phase. When a data fetcher method inherits from a parent class or interface where authorization annotations are declared, or when annotations are applied at different levels of a type hierarchy, the framework may skip security checks that are critical to access control enforcement.

Business impact

This vulnerability creates a direct bypass of application-level authorization controls in GraphQL services built with Spring for GraphQL. An unauthenticated or under-privileged attacker can invoke protected data fetchers and access sensitive information or perform restricted operations if those operations rely solely on Spring's annotation-based security model. The impact is confidentiality and integrity compromise for any organization using affected versions with inheritance-based annotation patterns in their GraphQL resolvers.

Affected systems

Spring for GraphQL versions 2.0.0–2.0.3, 1.4.0–1.4.5, 1.3.0–1.3.8, and 1.0.0–1.0.6 are vulnerable. Any Spring-based GraphQL application using these versions and employing security annotations (such as @Secured, @PreAuthorize, or similar Spring Security mechanisms) on data fetcher methods within class hierarchies is at risk. Organizations should verify their dependency declarations and runtime classpath to determine exposure.

Exploitability

No known public exploit exists at this time. However, the vulnerability is straightforward to exploit once identified: an attacker simply calls a protected GraphQL query or mutation without proper credentials. The barrier to discovery is determining which data fetchers rely on annotation inheritance. Because this is a logic flaw rather than a code injection or memory corruption issue, exploitation requires no special tools or network conditions—standard GraphQL clients suffice. Organizations with public-facing GraphQL endpoints are at higher risk.

Remediation

Upgrade to patched versions immediately. Spring for GraphQL has released fixes in 2.0.4+, 1.4.6+, 1.3.9+, and 1.0.7+. Verify the exact patch version through the VMware Spring advisory. In the interim, apply defense-in-depth controls: centralize authorization logic outside of annotations, implement a Web Application Firewall (WAF) rule set for your GraphQL endpoint, and consider disabling public GraphQL introspection to reduce reconnaissance opportunities.

Patch guidance

Check the VMware Spring Security advisory for the specific patch versions available for your release line. Spring for GraphQL uses semantic versioning; you must upgrade to the next minor or patch version that is marked as containing the fix for this annotation resolution issue. Test thoroughly in a staging environment before deploying to production, particularly if your resolvers use method inheritance or interface-based data fetcher definitions. Verify that your security annotations are now being correctly recognized by enabling Spring Security debug logging.

Detection guidance

Monitor GraphQL query logs and Spring Security audit logs for successful authorization bypasses. Look for patterns: requests to previously restricted queries or mutations now succeeding without credential escalation, or repeated queries with missing authorization headers being accepted. Enable Spring Security's debug logging to confirm that @Secured and @PreAuthorize annotations are being evaluated on inherited methods. Use static analysis (e.g., SpotBugs or SonarQube with security rulesets) to identify data fetcher methods that declare security annotations in parent classes or interfaces.

Why prioritize this

This vulnerability scores 7.5 (HIGH) because it bypasses authentication/authorization controls with no user interaction required and affects confidentiality of sensitive data. While not yet in active exploitation in the wild, the conceptual simplicity and public disclosure of the issue mean opportunistic attacks are likely. Any GraphQL service handling sensitive operations (user data, financial records, or administrative functions) should treat this as urgent.

Risk score, explained

CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N yields a score of 7.5. Attack Vector (N) indicates remote exploitation over the network; Attack Complexity (L) reflects the straightforward nature of calling a data fetcher; Privileges Required (N) and User Interaction (N) confirm no prerequisites. The impact is high confidentiality loss (C:H) because unauthorized access to protected data is the direct result, but integrity and availability remain unaffected.

Frequently asked questions

Does this vulnerability require the attacker to be authenticated?

No. The vulnerability allows unauthenticated attackers to bypass authorization checks on data fetchers that inherit security annotations. However, if your application enforces authentication at the GraphQL endpoint level (e.g., requiring a valid JWT in all requests), that layer would still block completely anonymous access. The risk is that partially authenticated or lower-privilege users can access data and operations meant for higher-privilege users.

Are all Spring for GraphQL applications affected?

Not all—only those using security annotations (@Secured, @PreAuthorize, etc.) on data fetcher methods within class hierarchies. Applications that rely on service-layer authorization logic, manual permission checks in resolver code, or a separate authorization gateway are less directly affected. Review your resolver implementations to determine if you use inheritance-based annotation patterns.

What if we cannot upgrade immediately?

Implement compensating controls: move authorization logic into the service layer rather than relying solely on method annotations, enable request-level authentication that is difficult to bypass, use a reverse proxy or WAF to restrict GraphQL endpoints to known users/IPs, and disable GraphQL introspection to limit reconnaissance. These do not fix the underlying issue but reduce exposure while you plan the upgrade.

How long have these vulnerable versions been in use?

The vulnerability affects versions from 1.0.0 (released in 2020) through current 2.0.x releases, meaning applications may have been running vulnerable code for years. If you have not upgraded Spring for GraphQL recently, assume exposure and prioritize patching.

This analysis is provided for informational purposes and does not constitute legal or professional security advice. Organizations must verify vulnerability applicability against their specific runtime environments and dependencies. Verify all patch versions and deployment steps against the official VMware Spring Security advisory before applying updates. SEC.co makes no representations regarding the completeness or timeliness of vulnerability intelligence and recommends consulting vendor advisories and performing independent testing prior to deploying patches in production. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).