Skip to main content
Mallory
CriticalPublic exploit

Apache Tomcat CLIENT_CERT authentication soft-fail bypass

IdentifiersCVE-2026-29145CWE-295

CVE-2026-29145 is an authentication flaw in Apache Tomcat and Apache Tomcat Native where CLIENT_CERT authentication does not fail as expected in some certificate-validation scenarios when soft fail is disabled. The issue is described as OCSP checks sometimes soft-failing even though soft-fail behavior is configured to be disabled, resulting in certificate-based authentication not being rejected under conditions where it should fail. Affected versions are Apache Tomcat 11.0.0-M1 through 11.0.18, 10.1.0-M7 through 10.1.52, and 9.0.83 through 9.0.115, as well as Apache Tomcat Native 1.1.23 through 1.1.34, 1.2.0 through 1.2.39, 1.3.0 through 1.3.6, and 2.0.0 through 2.0.13.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation can weaken or bypass intended certificate-based authentication enforcement. In affected deployments, a client certificate validation failure may not cause authentication to fail as expected, which can result in authentication bypass or acceptance of a client certificate that should have been rejected. Downstream advisories also characterize the potential impact as authentication bypass and, more generally, possible disclosure of sensitive information depending on the protected application and resources behind CLIENT_CERT authentication.

Mitigation

If you can’t patch tonight, do this now.

No specific workaround or temporary mitigation is provided in the supplied content. The available guidance is to prioritize upgrading affected Apache Tomcat and Apache Tomcat Native versions to fixed releases.

Remediation

Patch, then assume compromise.

Upgrade to fixed releases. Apache recommends upgrading Apache Tomcat to 11.0.20, 10.1.53, or 9.0.116, and upgrading Apache Tomcat Native to 1.3.7 or 2.0.14, as applicable. Product-specific downstream packages should also be updated to vendor-fixed versions where Tomcat is bundled or redistributed.
PUBLIC EXPLOITS

Exploits

3 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos.

VALID 3 / 3 TOTALView more in app
CVE-2026-29145-TesterMaturityPoCVerified exploit

This repository is a self-contained proof-of-concept lab for CVE-2026-29145, an Apache Tomcat mutual-TLS authentication bypass scenario tied to OCSP validation failure handling. It is not just a detector: it provisions a reproducible environment, generates PKI material, runs a mock OCSP responder, launches a vulnerable Tomcat instance, and then executes a Python PoC that attempts authenticated access to a protected resource. Core exploit capability: the main exploit logic is in poc_exploit.py. It sends an HTTPS GET to https://localhost:8443/protected-resource using a client certificate, private key, and CA bundle from the local certs directory. If the target returns HTTP 200 while the OCSP responder is failing, the script flags the target as vulnerable; if it returns 401/403 or the TLS handshake fails, it treats the target as not vulnerable. The script includes retry handling and a best-effort Tomcat version check from the Server header. Repository structure and purpose: - poc_exploit.py: primary PoC/exploit tester. - simple_proxy_fail.py: mock OCSP responder used to simulate failure (HTTP 500) or success (HTTP 200) for Tomcat’s revocation checks. - docker-compose.yml: orchestrates two services: ocsp-responder on 8888 and vulnerable-tomcat on 8443, with health checks and mounted cert/config files. - tomcat/server.xml: Tomcat HTTPS connector configuration enabling required client certificate verification and OCSP-related OpenSSL settings; defines /protected-resource as a CLIENT-CERT protected context. - tomcat/protected/index.html: simple protected content used to confirm successful access. - setup_certs.sh / setup_certs.ps1: generate CA, server, and client certificates; the client certificate includes an OCSP AIA URL pointing to http://localhost:8888. - run_test.sh: automation wrapper that cleans up, generates certs, launches scenarios, runs the PoC, and validates expected outcomes for vulnerable, success, and patched cases. - cleanup.sh / cleanup.ps1: remove containers, certs, logs, and Python cache artifacts. - requirements.txt: Python dependency on requests. Operationally, the lab demonstrates three scenarios: vulnerable Tomcat with failing OCSP, vulnerable Tomcat with succeeding OCSP, and patched Tomcat with failing OCSP. The exploit is network/web-based and aimed at bypassing mTLS-protected access rather than achieving code execution. No reverse shell or post-exploitation payload is present; the result is unauthorized access to a protected web resource under the vulnerable condition.

ChenjpDisclosed May 8, 2026pythonbashnetworkweb
CVE-2026-29145-TesterMaturityPoCVerified exploit

This repository is a self-contained proof-of-concept lab for CVE-2026-29145, an Apache Tomcat mutual-TLS authentication bypass tied to OCSP validation failure handling. It is not just a detector: it provisions a vulnerable environment, generates certificates, runs a mock OCSP responder, and executes a Python exploit/test script against a protected Tomcat endpoint. Repository structure: the main exploit logic is in poc_exploit.py, which sends an HTTPS GET to https://localhost:8443/protected-resource using a generated client certificate and key. If the server returns HTTP 200 while the OCSP responder is failing, the script reports the target as vulnerable; 401/403 or SSL handshake failure are treated as non-vulnerable behavior. simple_proxy_fail.py implements the mock OCSP responder used to induce the failure condition, returning HTTP 500 in fail mode or HTTP 200 in succeed mode. docker-compose.yml orchestrates two services: a Python-based OCSP responder on port 8888 and a Tomcat container on port 8443, defaulting to tomcat:10.1.52-jdk17. tomcat/server.xml configures Tomcat for TLS with required client certificate verification and OpenSSL OCSP enabled. setup_certs.sh generates the CA, server, and client certificates, embedding the OCSP URL http://localhost:8888 into the client certificate. run_test.sh automates vulnerable, success, and patched scenarios, while cleanup.sh removes containers, certificates, logs, and Python cache artifacts. Main exploit capability: authentication bypass validation against Tomcat CLIENT_CERT-protected content under OCSP hard-fail conditions. The exploit does not deliver code execution or a shell; instead, it demonstrates unauthorized access to a protected web resource when revocation checking fails open. The included environment is designed to reproduce the issue reliably by making the OCSP responder fail. Notable targets and observables include the protected HTTPS endpoint on localhost:8443, the OCSP responder on localhost:8888, certificate files under certs/ and /usr/local/tomcat/conf/certs/, and Tomcat configuration in tomcat/server.xml. Overall maturity is operational because the repository includes working automation, environment setup, and a concrete exploitation path, but the payload is fixed to access validation rather than a customizable post-exploitation action.

sancliffeDisclosed Apr 23, 2026markdownbashnetworkweb
cve-2026-29145MaturityPoCVerified exploit

This repository is a small disclosure-oriented PoC for CVE-2026-29145 affecting Apache Tomcat client-certificate authentication with OCSP validation. The repository contains mostly documentation files (README.md, analysis.md, timeline.md, DISCLOSURE.md) plus a single Bash PoC script at poc/CVE-2026-29145.sh. The PoC is minimal and non-weaponized: it performs a curl request with a client certificate, private key, and CA certificate against an HTTPS endpoint to show that access succeeds even when strict OCSP checking is expected to reject the certificate. The technical write-up claims Tomcat mishandles OCSP 'Unknown' states (for example when the responder returns TryLater), effectively treating a non-good certificate as acceptable despite soft-fail being disabled. The stated impact is authentication bypass in mutual TLS / CLIENT_CERT deployments, potentially leading to elevation of privilege by inheriting the authenticated client-certificate principal. No exploit automation, shell payload, persistence, or post-exploitation logic is present; this is a proof-of-concept reproduction artifact accompanied by disclosure documentation.

gregk4secDisclosed Mar 8, 2026markdownbashnetworkweb
EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
Apache Software FoundationTomcatapplication
Apache Software FoundationTomcat Nativeapplication

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity9

Community discussion across Reddit, Mastodon, and other social sources.