Home/ Blog/ Security news/ Article
Blog · Security news

Fastjson RCE (CVE-2026-16723) now exploited on Spring Boot apps

CVE-2026-16723, a fastjson 1.x remote code execution flaw, is now exploited against US firms. Only Spring Boot fat-JAR apps are hit, and no 1.x patch is coming.

Isometric stack of nested translucent containers pulling a small shard inward through a thin line

The critical fastjson flaw we flagged last week has moved from proof of concept to a live campaign. Security firms now report CVE-2026-16723 under active exploitation, aimed almost entirely at organizations in the United States, and the first thing to check is not which fastjson version you run. It is how your Java apps are packaged.

That distinction is the whole story. fastjson, the JSON library Alibaba built for the Java world, carries a remote code execution flaw rated 9.0 in versions 1.2.68 through 1.2.83. Confirmed exploitation lands against one deployment shape only: a Spring Boot service packaged as an executable fat JAR and launched with java -jar. The same library version inside a plain JAR, a generic uber-JAR, or a Tomcat or Jetty WAR is not reachable through this path. Kirill Firsov of FearsOff Cybersecurity reported the issue to Alibaba, which published its advisory on July 21, 2026.

The exploit fires only inside a Spring Boot fat JAR

The flaw lives in fastjson's type-resolution step. Hand it an @type value you control and it will try to resolve that name to a class before the AutoType allowlist has weighed in. In a fat JAR, that resolution can be aimed at a nested-JAR path, so the process ends up loading code the attacker chose. An @JSONType annotation on the class it loads is then read as a signal to trust it, and the final checks fall away.

Two consequences matter for a defender. It works under fastjson's stock configuration. AutoType is off by default and the attacker needs no separate gadget class on the classpath, so the hardened-by-default assumption does not hold. Pinning your input to a fixed target class does not save you either, because the payload can ride inside a field typed as Object or Map. That is why the packaging, not just the version number in your dependency tree, is the risk signal here.

DeploymentExposure to CVE-2026-16723
Spring Boot executable fat JAR (java -jar), fastjson 1.2.68 to 1.2.83Exploitable, confirmed exploited in the wild
Plain non-fat JAR or generic uber-JAR, same fastjsonNot exploitable through this path
Tomcat or Jetty WAR, same fastjsonNot exploitable through this path
fastjson 1.2.60 or earlierNot affected
fastjson2, any deploymentNot affected
Source: Alibaba advisory (July 21, 2026) and the FearsOff disclosure. Researchers reproduced it on every current Spring Boot line and on JDK builds from 8 up to 21.

There is no patch coming for fastjson 1.x

This is the part the recaps understate. As of late July, Alibaba had not shipped a fixed 1.x release, and the 1.x line no longer gets active upkeep. Version 1.2.83 is the end of the road. Treat this as an end-of-life vulnerability: the vendor exit you normally wait for does not exist here, so "patch and move on" is not an option.

The advisory's interim control is SafeMode, set with the JVM option -Dfastjson.parser.safeMode=true, which turns off the @type handling the exploit rides. It ships off by default, it changes how your app deserializes JSON so it needs compatibility testing, and at least one report cautions it may not neutralize every variant. Alibaba also offers a 1.2.83_noneautotype build as a stopgap. Read all of these as a tourniquet on an unmaintained library, not a fix. The durable answer is moving to fastjson2, whose type handling was redesigned to start from an allowlist and never probes for classes named by the caller. The same trap has bitten the other big Java JSON parser too, as the Jackson allowlist bypass showed earlier this year.

How to tell if you were hit before you migrate

Migrating closes the door. It does not tell you whether someone already walked through it in the window since July 21, and that is the question worth answering now. The request itself is a weak signal. Attacks arrive as ordinary-looking JSON POST bodies, and by Imperva's telemetry most of the malicious requests came from clients forging a browser user agent, with Ruby and Go tooling behind roughly a third of the rest. Blocking on user agent will not catch that.

The higher-fidelity signal is on the host. This exploit makes the application server reach outward, fetching a class resource over a nested-JAR path right after it parses JSON. An app server that suddenly opens an unexpected outbound connection, or resolves a remote class, immediately after handling a request is the behavior to hunt for, not the string in the request body. Watching for that kind of runtime deviation is the core of vulnerability detection that still works when a flaw has no patch. ThreatBook added detection for the pattern on July 22, and Imperva has logged activity across financial services, healthcare, computing, and retail, with small volumes in Singapore and Canada.

Inventory by packaging, then schedule the fastjson2 move

Start with a question your software bill of materials can answer but usually frames wrong: not "do we ship fastjson 1.2.x," but "do we ship it inside a Spring Boot executable JAR." Pull the fat-JAR services to the top of the list; a plain JAR or a WAR on Tomcat can wait behind them. For anything exposed, set SafeMode or drop in the noneautotype build today to buy time, then put the fastjson2 migration on the calendar with a real date, because no future patch will make the 1.x line safe. In Java, the JSON parser is attack surface, and the dependency you stopped thinking about is the one that gets you.

Topics

Frequently asked questions

Is CVE-2026-16723 being exploited in the wild?

Yes. ThreatBook reported in-the-wild exploitation from July 22, 2026, and Imperva has observed attacks aimed almost entirely at United States organizations across financial services, healthcare, computing, and retail, with small volumes in Singapore and Canada.

Which fastjson versions does CVE-2026-16723 affect?

CVE-2026-16723 affects fastjson 1.2.68 through 1.2.83, and Alibaba rates it 9.0. Versions 1.2.60 and earlier are not affected, and fastjson2 is not affected because it handles types with an allowlist-first design.

Does the flaw affect every app that uses fastjson 1.x?

No. Confirmed exploitation is limited to Spring Boot services packaged as executable fat JARs and launched with java -jar. The same fastjson version inside a plain JAR, a generic uber-JAR, or a Tomcat or Jetty WAR is not reachable through this path.

Is there a patch for CVE-2026-16723?

No fixed fastjson 1.x release exists as of late July 2026, and 1.x is no longer maintained, so none is expected. The interim controls are SafeMode or the 1.2.83_noneautotype build, and the durable fix is migrating to fastjson2.

Does specifying a target class stop the exploit?

No. Binding input to a fixed class does not stop CVE-2026-16723, because an attacker can nest the payload inside a field typed as Object or Map. The flaw also works under fastjson's default configuration, with AutoType disabled.

What is SafeMode and does it stop this flaw?

SafeMode is a fastjson setting enabled with the JVM option -Dfastjson.parser.safeMode=true that disables the @type handling this exploit abuses. It is the advisory's interim control, is off by default, needs compatibility testing, and is a stopgap on an unmaintained library rather than a permanent fix.

Ready to meet the Guardians?

Deploys fast - agentless for monitoring and cloud, a lightweight agent for deep endpoint security. Just Suriq, standing watch.