State of Java Exploits 2026

This year brought a record 5,649 Java security flaws. Attackers have used 18.

The count says little about danger. Attackers exploit a small and familiar set of flaws: ones with public exploit code, in a few kinds of bug, from a short list of projects, and often years old.

Java CVE From Oracle Attacked by 1 November of that year

Each dot is a Java CVE published between 1 January and 1 November of the year shown. This report's data runs to 1 November 2026, so earlier years are counted over the same ten months. Red dots are those attacked by 1 November of the same year.

The surge in flaws did not bring a surge in attacks #

Between 1 January and 1 November, 5,649 security flaws were published for Java software. That is more than five times as many as in the same months of 2025. In no earlier year did those months produce even a fifth as many.

The number of new Java flaws attacked had risen every year since 2021. By 1 November 2024, attackers had exploited 10 of that year's flaws. By the same date in 2025, the number had nearly doubled, to 19.

This year's surge did not push it higher. By 1 November, attackers had exploited 18 of the flaws published in 2026.

Java CVEs published from 1 January to 1 November, and how many were attacked by 1 NovemberEvery year is counted over the same ten months, so each year's flaws have had the same time to be attacked.

Source: CVE List, NVD, OSV, CISA KEV, VulnCheck KEV, CISA SSVC

Most of the new flaws are Oracle's #

Until this year, Java had no part in the CVE boom. Worldwide, the number published each year nearly tripled between 2018 and 2025, to 48,151. Java's yearly count barely moved.

The 2026 surge comes mostly from Oracle. Its products account for 3,659 of this year's Java CVEs. In all of 2025, they accounted for 165. Java CVEs from other vendors have grown too, but more slowly than CVEs overall.

CVEs published each year, relative to 20181× is the 2018 count for each line.
All CVEsJava CVEsJava CVEs not from Oracle2026, to 1 November

Source: CVE List, NVD, OSV. 2018 counts: all CVEs 16,510, Java 915, Java without Oracle 449. The comparison starts in 2018 because the number of CVEs published worldwide nearly tripled in 2017, when many more organisations began issuing them. The first chart on this page starts there too. NVD has not yet recorded the product for 19% of the CVEs published in 2024 and 37% of those from 2025. Some Java CVEs among them are not counted here yet, so the Java lines from 2024 on will rise as NVD catches up.

Severity scores measure harm, not the odds of attack #

Most organisations decide what to patch by CVSS score. The score estimates the harm a flaw could cause. It does not estimate the chance that anyone will exploit it.

The usual cut-off is 7.0, the line between medium and high. Patching every Java CVE at or above it means 8,648 flaws, half the total. That covers 238 of the 288 that attackers have exploited. It misses the other 50, about one in six. Move the line to test a different policy.

Every Java CVE, sorted by severity scoreEach dot is one CVE, highest score on the left. Everything left of the line gets patched.
Drag right to patch more
8,648CVEs to patch, 49% of all Java CVEs
83%of attacked CVEs covered, 238 of 288
50attacked CVEs left unpatched, 1 in 6
Java CVEPublic exploit codeAttacked in the wild

Source: NVD and CNA CVSS scores. Exploit code: Exploit-DB, Metasploit, Nuclei, or a GitHub proof of concept with five or more stars.

The score does not predict exploit code either. Among medium-rated Java CVEs, 267 have public exploit code or a recorded attack. Among critical ones, 266 do.

A much shorter list that catches almost as many attacks #

There is a better place to start. Public exploit code, published in catalogues such as Exploit-DB and Metasploit or shared on GitHub, exists for 691 Java CVEs. That is fewer than one in 25.

Those 691 include 230 of the 288 Java CVEs attacked in the wild, four in every five. Patching everything scored 7.0 or higher catches 238, but the list is twelve times as long.

Sometimes the attack comes first and the published code follows. That happened with 35 of the 230. In the other 195, the code was public before any recorded attack.

Two ways to decide what to patch firstEach square is ten Java CVEs. Red squares are those attacked in the wild.

Source: NVD and CNA CVSS scores; Exploit-DB, Metasploit, Nuclei, GitHub; CISA KEV, VulnCheck KEV, CISA SSVC.

Exploit code is also a sharper signal in Java than across software as a whole. One in three Java CVEs with public exploit code has been attacked. For all other CVEs, the rate is one in ten.

Much of the difference lies in who the code is written for. Nearly three in four Java exploits target products from the largest vendors, those with 1,000 or more CVEs on record, such as Oracle and Apache. Outside Java, almost half target vendors with fewer than ten CVEs. Attackers seldom use those: about one in 25 has been exploited in the wild.

Vendor size does not explain all of it. Even among exploits for the largest vendors, those for Java products lead to attacks twice as often as the rest.

This year's flood has added almost nothing to the list. Of the 5,649 Java CVEs published in 2026, 36 have public exploit code. Oracle's products are mostly closed source. Just two of its 3,659 new Java CVEs have a public exploit.

Who the exploit code is written forCVEs with public exploit code, split by how many CVEs their vendor has on record, and how many in each group were attacked.
Vendor with 1,000 or more CVEs100 to 99910 to 99Fewer than 10

Source: NVD and CNA vendor names, ignoring Linux distributions and other redistributors. CVEs with no vendor recorded are left out: 43 Java, 1,266 other.

Two-thirds of attacked Java CVEs are rated "automatable" by CISA, meaning a script can carry out the attack from start to finish. Fewer than half of other attacked CVEs are. Ransomware groups are known to have used 17% of attacked Java CVEs. For other attacked CVEs, the figure is 11%.

Forecasts and catalogues miss most new attacks #

Many teams already look past the severity score, to EPSS forecasts and CISA's catalogue of exploited flaws. Both help. Neither saw most of last year's attacks coming.

CISA's catalogue lists 102 of the 288 Java CVEs with recorded attacks. It adds a flaw once attacks are confirmed, so it shows what has already been hit.

EPSS forecasts the chance of an attack in the next 30 days. A year before this report, on 1 November 2025, 766 Java CVEs with no recorded attack yet had a forecast of 10% or more. Over the following year, attackers were first recorded using 46 Java CVEs. The list included 11 of them. Eighteen had not been published when the forecast was made.

EPSS does best with old, well-known flaws, such as the Struts and WebLogic bugs attackers keep returning to. It does worst with new flaws in closed-source products. The day before attacks were first recorded on four Oracle CVEs this past year, EPSS gave each of them a chance of less than 1%.

Public exploit code picked out more of the 46. On 1 November 2025, code was public for 446 Java CVEs with no recorded attack yet. That list included 14 of them. The 446 highest EPSS forecasts that day included 9. No list drawn up that day could include the 18 flaws not yet published.

Patch lists drawn up a year earlier, on 1 November 2025How many of the 46 Java CVEs first attacked in the following year each list included. Each list holds only CVEs with no recorded attack by then.
ListCVEs on itAttackedHit rate
EPSS top 1%12971 in 18
Public exploit code446141 in 32
EPSS 10%+766111 in 70
EPSS 1%+3,383181 in 188
CVSS 7.0+4,751231 in 207

Source: FIRST EPSS scores of 1 November 2025 and of the day before each first recorded attack; NVD and CNA CVSS scores; CISA KEV, VulnCheck KEV, CISA SSVC. The 18 Java CVEs published after 1 November 2025 count as misses on every list. Exploit code with no recorded date (67 entries) counts as public by then.

Three kinds of bug draw half the attacks #

Injection, deserialization and file-handling flaws let an attacker run code on a server or reach its files. Only 14% of Java CVEs are of these kinds. They account for 51% of the attacked ones.

Access-control flaws are the reverse. They make up almost half of Java CVEs but only about a quarter of those attacked.

Deserialization is a peculiarly Java problem. It accounts for 13% of attacked Java CVEs, more than four times its share elsewhere. Java made it easy to rebuild objects from incoming bytes. Attackers learned to craft bytes that run their commands during the rebuild.

Kinds of bug among all Java CVEs, and among the attacked onesTop: the 12,392 Java CVEs with a recorded weakness. Bottom: the 235 attacked ones. Hover over or tap the grey bands for the other five kinds.

Source: NVD and CNA CWE, grouped by Waratek. Counts only CVEs with a usable weakness type: 12,392 of 17,688, and 235 of 288 attacked.

Attackers return to the same projects #

Twelve projects account for 149 of the 288 Java CVEs that attackers have exploited, more than half. Those projects produced only a quarter of all Java CVEs.

Some are hit year after year. Every year from 2016 to 2025 produced at least one Oracle WebLogic Server flaw that was later attacked. Apache Struts has attacked flaws from twelve different years, the earliest from 2006.

In a few projects, the odds are far higher. Across Java, one CVE in 61 has been attacked. In Log4j, and in GeoServer and GeoTools, the rate is roughly one in three.

The JDK is the exception. All 29 of its attacked flaws were published between 2008 and 2016. None of the JDK flaws published since then has been attacked.

Twelve projects, twenty years of attacked flawsA red square marks a year in which the project published a CVE that attackers later exploited.
One attacked CVETwo or threeFour or moreNone

Source: NVD and CNA product names, CISA KEV, VulnCheck KEV. Each CVE counts under the first product it names.

The JDK got safer. The libraries on top of it did not. #

A decade ago, attackers aimed at the Java runtime itself. Browser applets let any web page run code on a visitor's Java runtime. In 2013, Oracle's JDK and JRE had 177 CVEs. Browsers dropped the plugin, Oracle deprecated applets, and the count fell to 12 in 2025.

Meanwhile, the software built on Java produced more and more CVEs. CVEs in frameworks, application servers and other Java products, excluding Oracle's, rose from about 60 in 2010 to more than 900 a year in 2022 and 2023. This year there have been 1,990.

CVEs published each year in the JDK and in the software built on Java2026 runs to 1 November.
Oracle / Sun JDK and JREJava libraries and products, not Oracle

Source: NVD CPE, OSV

Attackers keep using old Java bugs #

Attackers tend to exploit what is new. Outside Java, half of the CVEs with attack evidence recorded in 2026 were two years old or less.

Java is different. Half of the Java CVEs attacked this year were 4.5 years old or more. More than two in five were published over five years ago, twice the share elsewhere. CISA's catalogue shows the same lag. Since 2023, 45% of the Java CVEs it added were more than a year old when listed. For other CVEs, the share was 21%. In October 2026 it added a Struts flaw published ten years earlier.

How old the bugs were when attacked in 2026Share of each group's attacked CVEs, by years between publication and the attack evidence recorded this year
JavaEverything elseLighter: under five years old

Source: VulnCheck KEV latest evidence, CVE List

How long CVEs waited for CISA's catalogueEach dot is a CVE added to CISA's Known Exploited Vulnerabilities catalogue since 2023, placed by the time between publication and listing.
JavaEverything else

Source: CISA KEV (date added), CVE List (date published). Listings dated before publication are drawn at "same day".

The flaw that gets you hacked may not have a CVE yet #

Severity scores, exploit code and a project's history of attacks all start with a published CVE. A zero-day is a flaw that attackers use before anyone has published one. It cannot appear on any priority list.

Waratek covers both cases. It runs inside the JVM, where it sees the full application context. Its secure RASP rules stop OWASP Top 10 attacks as they happen, whether or not the flaw has been reported. They cover attacks including remote code execution, injection, deserialization, cross-site scripting and file system abuse. For known CVEs, its virtual patches fix the flaw in the running application, without a code change or an upgrade. They protect applications that have not been patched yet, and those that never will be.

How we counted #

Java CVEA CVE affecting a Java product or library, matched by NVD product names, Maven coordinates from OSV, and Oracle's own product families. It includes Java bugs the Waratek agent cannot reach, such as browser-plugin (applet) and JavaFX bugs. Android apps and native libraries are excluded. 17,688 CVEs. Counts from 2024 on will rise: NVD has not yet recorded the product for many recent CVEs, and some Java CVEs among them are not counted here yet.
Oracle's CVEsJava CVEs for an Oracle product. NVD has not yet recorded the product for 1,030 of this year's, so we take those from Oracle's own security advisories.
Everything elseAll other CVEs, leaving out those later withdrawn: 381,145.
AttackedOn CISA KEV or VulnCheck KEV ❤️, or marked "active" in CISA's SSVC. Year comparisons count attacks recorded by the same date each year.
Public exploit codeAn entry in Exploit-DB, Metasploit or Nuclei, or a GitHub proof of concept with five or more stars, as listed by PoC-in-GitHub. A CVE that has been attacked but has no published exploit is not counted. The code's date is the earliest entry in any of these sources; for Metasploit and Nuclei, the day the module or template was first added to the project.
EPSSFIRST's Exploit Prediction Scoring System, as published on the day shown, from FIRST's daily archive. A forecast made on 1 November 2025 is compared with the CVEs first recorded as attacked in the following year.
Vendor sizeThe number of CVEs on record for the vendor a CVE names, ignoring Linux distributions and other redistributors that list it. Where a CVE names several vendors, the largest counts.
ProjectsEach CVE counts under the first product it names, with related products merged (JDK and JRE; GeoServer and GeoTools; Jenkins core and plugins).
VRTThis report is built on a snapshot of Waratek VRT, our public database of Java CVEs, taken on 2 November 2026. VRT updates every hour, and its lists show only the Java CVEs in Waratek's scope by default, so its counts differ from the ones here.
SourcesCVE records from the CVE Program's CVE List, NVD and OSV. Attacks from CISA's Known Exploited Vulnerabilities catalogue, VulnCheck KEV and CISA's SSVC ratings. Exploit code from Exploit-DB, Metasploit, Nuclei and PoC-in-GitHub. Oracle product families from Oracle's Critical Patch Update advisories.