CVE-2026-35337
Java vulnerability analysis and mitigation

Overview

CVE-2026-35337 is a Deserialization of Untrusted Data vulnerability (CWE-502) in Apache Storm's storm-client component, enabling authenticated remote code execution via the Nimbus Thrift API. It affects all Apache Storm versions before 2.8.6 (specifically the Maven artifact org.apache.storm:storm-client). The vulnerability was disclosed on April 12–13, 2026, with the fix released in Storm 2.8.6. It carries a CVSS v3.1 base score of 8.8 (High) (GitHub Advisory, oss-security).

Technical details

The root cause is the use of ObjectInputStream.readObject() in ClientAuthUtils.deserializeKerberosTicket() to deserialize a base64-encoded Ticket Granting Ticket (TGT) blob submitted as part of topology credentials via the Nimbus Thrift API, with no class filtering or ObjectInputFilter applied (CWE-502). An attacker with topology submission rights can replace the legitimate KerberosTicket object with a crafted gadget-chain payload in the "TGT" credential field. Upon deserialization by the Nimbus server (and subsequently Worker JVMs), the gadget chain executes arbitrary OS commands in the context of the JVM process. No public proof-of-concept exploit code has been identified at this time (GitHub Advisory, oss-security).

Impact

Successful exploitation grants an authenticated attacker arbitrary code execution on both the Nimbus master node and Worker JVMs across the Storm cluster, resulting in full confidentiality, integrity, and availability compromise. An attacker could exfiltrate sensitive data processed by Storm topologies, modify cluster configurations, pivot laterally to other systems reachable from the Nimbus or Worker nodes, or disrupt distributed stream processing operations entirely (GitHub Advisory, oss-security).

Exploitability

No public proof-of-concept exploit or evidence of in-the-wild exploitation has been observed as of the time of disclosure. The EPSS score is approximately 0.197% (42nd percentile), indicating a relatively low near-term exploitation probability. Exploitation requires authentication with topology submission privileges, which limits the attack surface compared to unauthenticated vulnerabilities. The vulnerability has not been added to the CISA Known Exploited Vulnerabilities (KEV) catalog (GitHub Advisory, oss-security).

Exploitation steps

  1. Reconnaissance: Identify Apache Storm deployments running versions before 2.8.6, particularly those with the Nimbus Thrift API exposed on the network (default port 6627). Confirm topology submission access is available with a valid account.
  2. Obtain topology submission credentials: Authenticate to the Storm cluster using a legitimate account that has topology submission rights.
  3. Craft malicious serialized payload: Using a Java deserialization gadget-chain tool (e.g., ysoserial), generate a serialized Java object payload targeting a gadget chain available in the Storm classpath (e.g., Commons Collections, Spring, etc.) that executes a desired command upon deserialization.
  4. Base64-encode the payload: Encode the raw serialized bytes as a Base64 string to match the expected format of the "TGT" credential field.
  5. Submit crafted topology credentials: Use the Storm Thrift API client to submit a topology with the malicious Base64-encoded payload placed in the "TGT" field of the topology credentials map.
  6. Trigger deserialization: The Nimbus server calls ClientAuthUtils.deserializeKerberosTicket(), which invokes ObjectInputStream.readObject() on the attacker-controlled payload without class filtering, executing the embedded gadget chain.
  7. Achieve RCE: The gadget chain executes the attacker's command in the Nimbus JVM context; Worker JVMs may also deserialize the credential, extending code execution across the cluster (GitHub Advisory, oss-security).

Indicators of compromise

  • Network: Unexpected or anomalous connections to the Nimbus Thrift API port (default 6627) from unusual source IPs or at unusual times; outbound connections from Nimbus or Worker JVM processes to external IPs.
  • Logs: Java deserialization exceptions or ClassNotFoundException errors in Nimbus logs during topology submission; unexpected ObjectInputStream stack traces in Storm logs referencing ClientAuthUtils.deserializeKerberosTicket().
  • Process: Unusual child processes spawned by the Nimbus or Worker JVM (e.g., bash, sh, curl, wget, python, nc) that are not part of normal Storm operation.
  • File System: Unexpected files written to the Storm working directory or /tmp by the Storm process user; new cron jobs, scripts, or binaries created by the Storm service account.
  • Topology Submissions: Topology submission events from accounts not typically used for deployment, especially with malformed or unusually large TGT credential fields in audit logs.

Mitigation and workarounds

The primary remediation is to upgrade Apache Storm to version 2.8.6 or later, which addresses the unsafe deserialization in ClientAuthUtils.deserializeKerberosTicket() (GitHub Advisory, Apache Storm Release). For environments that cannot upgrade immediately, apply a monkey-patch to add an ObjectInputFilter allow-list to ClientAuthUtils.deserializeKerberosTicket(), restricting deserialized classes to javax.security.auth.kerberos.KerberosTicket and its known dependencies — implementation guidance is provided in the Storm 2.8.6 release notes. Additionally, restrict topology submission rights to the minimum set of trusted users to reduce the attack surface (oss-security).

Community reactions

The vulnerability was announced by Richard Zowalla to the oss-security mailing list on April 12, 2026, and received coverage from security news outlets including The Hacker Wire and Infinit Security (oss-security). Social media discussion was noted on Bluesky and Mastodon shortly after disclosure. Community reaction was moderate, with the authenticated-only requirement noted as a mitigating factor limiting broader concern.

Additional resources


SourceThis report was generated using AI

Related Java vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-63219HIGH8.6
  • Java logoJava
  • org.geonetwork-opensource:gn-services
NoYesSep 03, 2026
CVE-2026-49464HIGH8.1
  • Java logoJava
  • nl.nl-portal:taak
NoYesSep 11, 2026
CVE-2026-55864HIGH7.7
  • Java logoJava
  • org.geonetwork-opensource:gn-web-app
NoYesSep 09, 2026
CVE-2026-49463MEDIUM6.5
  • Java logoJava
  • nl.nl-portal:besluiten
NoYesSep 11, 2026
CVE-2026-49439MEDIUM4.3
  • Java logoJava
  • io.openremote:openremote-manager
NoYesSep 11, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management