Back to blog
CVEJavaRCEtechnique

Fastjson 1.x CVE-2026-16723: a critical RCE with no patch, actively exploited

Published on 2026-07-257 min readCleanIssue

> In short: CVE-2026-16723 is a critical remote code execution flaw (CVSS 9.0) in Alibaba's Fastjson 1.2.68 through 1.2.83, the Java JSON library. On an affected Spring Boot executable fat-JAR, a malicious JSON request runs code with the privileges of the Java process — no AutoType enablement, no classpath gadget, no authentication. As of July 25, 2026, no patched 1.x release exists. Mitigation: enable SafeMode or migrate to Fastjson2.

Why this matters to you

Fastjson is one of the most widely used JSON libraries in the Java ecosystem. If your backend (or a partner's, or a client's) is Java/Spring, there is a real chance it pulls Fastjson transitively. This CVE sits in the direct lineage of Log4Shell and Spring4Shell: a ubiquitous Java library, a default config that is unsafe, and an exploitation path that needs no authentication.

The distinctive angle here is that the maintainer has no 1.x patch. The official recommendation is to migrate to Fastjson2 — a multi-week engineering task for most teams, not a one-line dependency bump. In the meantime, every exposed Fastjson 1.2.68–1.2.83 endpoint is a live target.

The flaw in two sentences

The bug is in Fastjson's type-resolution path. An attacker-controlled @type value is turned into a class-resource lookup, and on a Spring Boot fat-JAR a crafted nested JAR path can fetch attacker-controlled bytecode. An @JSONType annotation inside that resource is treated as a trust signal, allowing the class to pass Fastjson's type checks and load — achieving code execution.

Critically, AutoType does not need to be enabled and no gadget class needs to exist on the classpath. That removes the two controls most teams thought protected them. The chain was reproduced on Spring Boot 2.x, 3.x, and 4.x across JDK 8, 11, 17, and 21. Entrypoints include JSON.parse, JSON.parseObject(String), and JSON.parseObject(String, Class) — and binding input to a fixed class is not enough if an Object or Map field lets the payload nest.

What makes it worse than a normal RCE

Three aggravating factors stack up:

  • No patch. Version 1.2.83 was already Alibaba's recommended upgrade for a 2022 AutoType bypass — it is now itself in the affected range. There is no newer 1.x to move to.
  • Active exploitation. ThreatBook captured in-the-wild activity from July 20; Imperva reported targeting across financial services, healthcare, computing, and retail, primarily in the US.
  • Scope uncertainty. A CISA-ADP assessment on July 23 marked exploitation as none, contradicting the vendor reports. The flaw is absent from CISA's KEV catalog. The mismatch is unexplained — treat the vendor reports as the source of truth.
  • What to do

  • Inventory Fastjson everywhere, including transitive dependencies. Run mvn dependency:tree | grep fastjson (or the Gradle equivalent). Many teams don't know they pull it in via another library.
  • Enable SafeMode immediately on any Fastjson 1.x you cannot replace: -Dfastjson.parser.safeMode=true, or use the restricted artifact com.alibaba:fastjson:1.2.83_noneautotype. Alibaba lists both as mitigations. Note the advisory says neither "fully remediates" — they buy time.
  • Plan the migration to Fastjson2, which is unaffected (it does not use the same resource-probing and annotation-based trust path). Scope the breaking-change surface — parseObject semantics differ.
  • Block `@type` at the edge (WAF / API gateway) as defense-in-depth. Look for "@type" and nested-JAR URL patterns in inbound JSON. This is a stopgap, not a fix.
  • Hunt for compromise on exposed Spring Boot fat-JAR services: unexpected outbound connections, child processes, suspicious @type values in logs, file changes, web shells.
  • The pattern this confirms

    Fastjson CVE-2026-16723 is the third reminder in five years that "parse untrusted JSON with a library that resolves attacker-controlled types" is a fundamentally unsafe default. Log4Shell taught us about JNDI, Spring4Shell about data binding, and now Fastjson reminds us that even with AutoType off, the type-resolution path itself is attack surface. For a SaaS vendor, the lesson is operational: any deserialization library that has had two serious RCEs in its lifetime belongs on a watchlist with a migration plan already written.

    Building HR, payroll, or recruiting software? CleanIssue performs security audits for HR SaaS in real-world conditions, no source code access needed. For a first read of your exposure, start with an external review of your application.

    Need an external review of your HR SaaS?

    Share your product, stack, and client context. We will come back with the right review scope.

    Discuss your audit