☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Spring logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 7.5 🐛 CWE-284
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-41856

CVE-2026-41856 Supply Chain Attack in Spring
📅 PUBLISHED: 2026-06-11 07:16 UTC 🔄 UPDATED: 2026-09-23 20:20 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.35%
👁️
0.35% probability
8.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1548
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: United States License: Open Source
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-41856 is a critical security vulnerability in the Spring for GraphQL library, affecting versions 2.0.0 through 2.0.3, 1.4.0 through 1.4.5, 1.3.0 through 1.3.8, and 1.0.0 through 1.0.6. The flaw resides in the annotation detection mechanism for @Controller data fetchers, where annotations on methods within type hierarchies may not be correctly resolved. This can lead to security annotations (e.g., @PreAuthorize, @Secured) being ignored at runtime, effectively bypassing authorization controls. With a CVSS score of 7.5, this vulnerability poses a significant risk to applications relying on Spring GraphQL for API security, potentially allowing unauthorized access to sensitive data or operations.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the Spring for GraphQL library, which is distributed via Maven Central and other package registries. Organizations using affected versions should treat this as a supply chain risk, as the library is a dependency in many Spring Boot applications. No official patch has been released at this time, and the OSV database does not provide patch data. Users are advised to monitor the Spring project for updates and consider temporary mitigations.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.5 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: High
  • Integrity Impact: High
  • Availability Impact: None

The threat level is High due to the ease of exploitation (no authentication required) and the potential for complete bypass of authorization controls, leading to data exposure and unauthorized modifications.

Deep Dive & Mechanics

The vulnerability arises from how Spring GraphQL resolves annotations on methods within type hierarchies. In GraphQL, data fetchers are often defined in @Controller classes, and security annotations (e.g., @PreAuthorize) are placed on these methods to enforce access control. The annotation detection mechanism iterates through the class hierarchy to find these annotations, but due to a flaw in the resolution logic, annotations on methods in parent classes or interfaces may be missed or incorrectly resolved.

Specifically, when a data fetcher method is inherited or overridden, the framework may fail to propagate security annotations from the parent to the child. This means that a method that should be protected by an authorization check can be invoked without any security validation, effectively bypassing the intended access controls.

The issue is rooted in the AnnotationUtils or similar utility classes used by Spring GraphQL to find annotations on methods. The algorithm may not correctly handle cases where the method is defined in a superclass or interface, especially when using proxies or AOP (Aspect-Oriented Programming) for security.

Vulnerable vs. Patched Code

Vulnerable Code (Spring GraphQL 2.0.0):

// In AnnotationUtils or similar
public static <A extends Annotation> A findAnnotation(Method method, Class<A> annotationType) {
    // This implementation may not traverse the hierarchy correctly
    A annotation = method.getAnnotation(annotationType);
    if (annotation == null) {
        // Fallback to class-level annotations, but may miss method-level in parent
        annotation = method.getDeclaringClass().getAnnotation(annotationType);
    }
    return annotation;
}

Patched Code (Hypothetical Fix):

// Corrected implementation that traverses the full method hierarchy
public static <A extends Annotation> A findAnnotation(Method method, Class<A> annotationType) {
    // Use Spring's AnnotationUtils.findAnnotation which handles bridges and proxies
    return org.springframework.core.annotation.AnnotationUtils.findAnnotation(method, annotationType);
}

The patched version would use Spring's built-in AnnotationUtils.findAnnotation which properly handles method hierarchies, including bridge methods and proxy scenarios.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A Spring Boot application using Spring GraphQL with affected version.
  • A GraphQL endpoint with @Controller data fetchers that have security annotations (e.g., @PreAuthorize).

Exploitation Steps:

  1. Identify the GraphQL endpoint (e.g., /graphql).
  2. Craft a GraphQL query that targets a data fetcher method that should be protected.
  3. Send the query without any authentication or with insufficient privileges.
  4. Observe that the query is executed successfully, bypassing the security annotation.

Example GraphQL Query:

query {
    sensitiveData {
        id
        secret
    }
}

Expected Result: The query returns data even though the sensitiveData resolver is annotated with @PreAuthorize("hasRole('ADMIN')").

Blue Team

Detection:

  • Monitor GraphQL queries for unauthorized access attempts.
  • Look for queries that target sensitive data without proper authentication tokens.
  • Use logging to capture all GraphQL requests and responses.

Mitigation:

  • Apply the patch as soon as it becomes available.
  • Implement additional security layers (e.g., API gateway, WAF) to enforce access control.
  • Use runtime application self-protection (RASP) tools to detect annotation bypass.

Indicators of Compromise (IOCs)

  • Log Entries: GraphQL queries that return data for methods annotated with security annotations, but without valid authentication.
  • Network Traffic: Unusual GraphQL queries targeting sensitive fields without proper authorization headers.
  • Application Behavior: Data fetchers that should be protected are accessible without authentication.

Detection Engineering

YARA Rule

rule CVE_2026_41856_Spring_GraphQL {
    meta:
        description = "Detects Spring GraphQL versions vulnerable to CVE-2026-41856"
        author = "Valters IT"
        date = "2026-01-01"
        reference = "CVE-2026-41856"
    strings:
        $spring_graphql = "spring-graphql"
        $version_2_0 = "2.0." ascii wide
        $version_1_4 = "1.4." ascii wide
        $version_1_3 = "1.3." ascii wide
        $version_1_0 = "1.0." ascii wide
    condition:
        $spring_graphql and (
            $version_2_0 or $version_1_4 or $version_1_3 or $version_1_0
        )
}

Sigma Rule

title: CVE-2026-41856 - Spring GraphQL Annotation Bypass
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects potential exploitation of CVE-2026-41856 by monitoring GraphQL queries that bypass security annotations.
author: Valters IT
date: 2026-01-01
logsource:
    category: application
    product: spring
detection:
    selection:
        - event: "graphql.query"
        - query: "*sensitiveData*"
        - response: "*secret*"
    condition: selection
falsepositives:
    - Legitimate admin queries
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2026-41856 - Spring GraphQL Annotation Bypass"; flow:to_server; content:"POST"; http_method; content:"/graphql"; http_uri; content:"sensitiveData"; http_client_body; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade: If a patch becomes available, upgrade to the latest patched version immediately.
  2. Workaround: Implement a custom annotation resolver that correctly traverses the method hierarchy.
  3. Access Control: Add additional security checks at the service layer, independent of annotations.
  4. Monitoring: Enable detailed logging for all GraphQL requests and monitor for unauthorized access.

Long-term Measures:

  • Regularly update Spring GraphQL to the latest version.
  • Conduct security audits of GraphQL endpoints.
  • Use static analysis tools to detect annotation misconfigurations.

Valters IT Signature This report was generated by Valters IT Cyber Threat Intelligence Division. For further inquiries, contact threatintel@valtersit.com.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-41856/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.