Apache CXF 3.4 and 3.5 End of Life: 31 Unpatched CVEs and the Fix
Drop-in security support for end-of-life Apache CXF 3.4 and 3.5, covering the 2026 vulnerability wave that upstream fixes never reached.

HeroDevs has launched NES for Apache CXF, bringing Never-Ending Support (NES) to the CXF 3.4 and 3.5 release lines. Apache CXF is the open-source services framework behind a huge share of enterprise Java SOAP and REST integrations: it powers JAX-WS and JAX-RS endpoints in everything from standalone Spring applications to the integration platforms and middleware stacks built on top of it. If your organization exposes or consumes web services from a Java application that predates the Jakarta namespace migration, there is a good chance CXF is in the call path.
That matters right now because 2026 has been the roughest year in CXF's security history. Apache disclosed 26 CXF CVEs in 2026, and the fixes landed only in the 3.6.12, 4.1.8, and 4.2.3 releases. For applications still running CXF 3.4 or 3.5, none of those fixes apply. The HeroDevs vulnerability directory now tracks 31 CXF CVEs in total, 11 of them rated Critical in the directory and every one of them is remediated in NES for Apache CXF.
Running Apache CXF 3.4 or 3.5? See NES for Apache CXF.
The Apache CXF end-of-life picture, briefly
Apache CXF maintains a small set of active branches. As of October 2026 that means 4.2.x, 4.1.x, and 3.6.x, per the official download page. Apache publishes no formal EOL schedule for CXF; a branch is done when it stops receiving releases. By that measure 3.4 has been end of life since 3.4.10 shipped in December 2022, and 3.5 since 3.5.11 shipped in March 2025. Every vulnerability disclosed since then is permanently unfixed on those branches. No OSS fix is available, and none is coming.
What happened with Apache CXF vulnerabilities in 2026
The year's disclosures cluster around two parts of the framework, and both clusters hit hard.
The JMS transport produced a chain of remote code execution bugs. It started with CVE-2025-48913, a Critical (CVSS 9.8) JNDI injection: an attacker who can influence JMS configuration can point the JNDI provider URL at a malicious rmi:// or ldap:// server and execute arbitrary code, the same class of attack that made Log4Shell infamous. The fix turned out to be incomplete, producing CVE-2026-44417. Then CVE-2026-66909 added a second Critical RCE in the same transport via unsafe deserialization of inbound JMS ObjectMessage payloads, and CVE-2026-50632 and CVE-2026-50633 rounded out the set with further JNDI injection paths in JMSConfigFactory and the JCA integration. Five RCE-class vulnerabilities in one transport in roughly a year.
The OAuth2 and OIDC modules took a dozen separate hits. If you use CXF's cxf-rt-rs-security-oauth2 or OIDC modules as an authorization server or token validator, the 2026 batch broke nearly every stage of the token lifecycle: authorization codes that can be replayed (CVE-2026-68079, CVSS 9.8, and CVE-2026-57818), an inverted IP binding check that rejects the legitimate caller while admitting everyone else (CVE-2026-50628, CVSS 9.8), self-issued ID tokens accepted without claim validation (CVE-2026-65583), JWT claims able to silently override PKCE and nonce parameters (CVE-2026-63687), missing audience and issuer validation (CVE-2026-50627), scope self-escalation through dynamic client registration (CVE-2026-61466), revoked tokens that keep working (CVE-2026-68481), a race condition in refresh token processing (CVE-2026-50631), and more.
Beyond those two clusters, 2026 also brought XML external entity (XXE) flaws in WSDL/XSD import parsing and core utilities, LDAP injection in the XKMS certificate repository, signature forgery in JOSE request handling, HTTP response splitting, and a run of denial-of-service bugs in attachment and form-parameter handling. The full list is below.
Which Apache CXF CVEs apply to you?
Thirty-one CVEs is the catalog, not your exposure. CXF is modular, and most of the 2026 wave lands in specific modules. Start with an inventory: mvn dependency:tree -Dincludes=org.apache.cxf (or gradle dependencies | grep cxf for Gradle builds), then map what you actually ship:
Most teams will find a subset applies rather than all 31. The remediation path is the same either way, but knowing which rows are yours is what turns the table below into a checklist.
What NES for Apache CXF covers
NES for Apache CXF is a secure, drop-in replacement for the 3.4 and 3.5 release lines. Security fixes land on HeroDevs-maintained forks and publish under NES coordinates through the HeroDevs registry, so adopting it is a dependency swap, not a migration. No API changes, no Jakarta namespace rewrite, no forced jump to 4.x. Every CVE in the table below is resolved in the current NES releases. Installation and configuration details are in the NES for Apache CXF documentation.
Every Apache CXF CVE in the HeroDevs vulnerability directory
All 31 CXF entries in the vulnerability directory, sorted by severity. Severity labels are the HeroDevs vulnerability directory's ratings; follow each CVE link for the underlying advisory and scoring detail. Affected ranges are the upstream OSS versions; all listed vulnerabilities are remediated in NES for Apache CXF 3.4 and 3.5.
Taking action on Apache CXF 3.4 and 3.5
If you are on CXF 3.6 or 4.x, upgrade to 3.6.12, 4.1.8, or 4.2.3 and stay current with upstream. If you are on 3.4 or 3.5, there is no upstream path short of a major-version migration, and the vulnerabilities above are live in your stack today. NES for Apache CXF resolves all of them as a drop-in replacement, so you can secure what you run now and migrate on your own schedule. Talk to HeroDevs to get started.
Resources
View All Articles
.png)

%20for%20Spring%20Boot%20Managed%20Dependencies%20v2.png)