Safeguard
Vulnerability Analysis•

CVE-2026-41699: High Unsafe Deserialization in Spring for GraphQL

CVE-2026-41699 is unsafe deserialization in Spring for GraphQL paginated queries that can lead to RCE. Upgrade to 2.0.4, 1.4.6 or 1.3.9.

Safeguard Security Team
3 min read

CVE-2026-41699 is a high severity unsafe deserialization flaw (CVSS 8.1) in Spring for GraphQL. A crafted request to a paginated field can lead to remote code execution under specific conditions. Upgrade to 2.0.4, 1.4.6 or 1.3.9, depending on your line.

What's affected

Per the Spring security advisory, these versions are affected: Spring for GraphQL 2.0.0 to 2.0.3, 1.4.0 to 1.4.5, and 1.2.0 to 1.3.8.

Fixed versions:

  • 2.0.4 (open source), 2.0.3.1 (Enterprise Support only)
  • 1.4.6 (open source), 1.4.5.1 (Enterprise Support only)
  • 1.3.9 (Enterprise Support only)

An application is vulnerable only if all three hold: it uses Spring GraphQL, it exposes a paginated Connection field, and its classpath has specific classes that can run unintended logic during instantiation or deserialization.

How to check if you're exposed

mvn dependency:tree | grep spring-graphql
gradle dependencies | grep spring-graphql

Check the resolved version against the lists above. Then look at your GraphQL schema for Connection types, which the Relay cursor pagination style produces, and consider what libraries sit on your classpath. A dependency scan can show the version in each repository.

What to do now

  1. Upgrade to the fixed version for your line.
  2. If you are on 1.3.x without Enterprise Support, plan a move to 1.4.6 or 2.0.4, since 1.3.9 is only listed for Enterprise Support customers.
  3. Spring says no further mitigation steps are necessary beyond upgrading.
  4. Rebuild and redeploy, and confirm the version at runtime.
  5. Review which libraries you carry on the classpath, and remove unused ones to reduce the pool of gadget classes.

Why it matters

The record lists CWE-502, deserialization of untrusted data. Pagination cursors are opaque strings sent by the client and read back by the server. If the server decodes them with a mechanism that can create arbitrary objects, a crafted cursor becomes input to that mechanism.

The vector marks attack complexity as high because success depends on suitable classes on the classpath. That is typical of deserialization bugs: your dependency list sets the risk. The Spring advisory says the issue was discovered internally. The record does not flag this CVE as known exploited.

Quick check

We do not use pagination. Are we safe?

The advisory makes a paginated Connection field one of the conditions. Without one, the path is not reachable, but upgrade anyway.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.