绕过Tomcat证书吊销:CVE-2026-24734详解(含实战PoC)

admin 2026-03-26 12:55:09 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细解析了CVE-2026-24734漏洞,这是一个存在于ApacheTomcatNative和Tomcat中的证书吊销绕过漏洞。其核心原因是在使用OCSP响应器进行客户端证书验证时,未完整验证响应的完整性与新鲜度。该漏洞仅影响使用TomcatNative(APR)和OpenSSLTLS的环境。文章不仅分析了漏洞原理,还提供了利用该漏洞的实战PoC演示,包括实验环境搭建和验证步骤。 综合评分: 85 文章分类: 漏洞分析,WEB安全,红队,渗透测试,恶意软件


cover_image

绕过 Tomcat 证书吊销:CVE-2026-24734 详解(含实战 PoC)

haidragon haidragon

安全狗的自我修养

2026年3月23日 12:18 湖南

官网:http://securitytech.cc

#

一、介绍(Introduction)

我们先来看 NVD(美国国家漏洞数据库)对该漏洞的描述:

“Apache Tomcat Native 和 Apache Tomcat 中存在不正确的输入验证漏洞。在使用 OCSP 响应器时,Tomcat Native(以及 Tomcat 中 FFM 端口的相关实现)没有完成对 OCSP 响应的验证或新鲜度检查,这可能导致证书吊销机制被绕过。”


二、背景(Background)

OCSP(Online Certificate Status Protocol,在线证书状态协议) 是一种互联网协议,用于由证书颁发机构(CA)查询 SSL/TLS 证书(通常是 X.509 证书)的状态。

CVE-2026-24734 主要出现在 客户端证书验证阶段,即在 双向 TLS(mTLS) 场景中,Tomcat 会对客户端证书执行 OCSP 检查。

🔍 问题核心

问题的本质是:

  • Tomcat 在校验证书时,会向 OCSP 服务器发起查询

  • OCSP 返回证书状态(有效 / 吊销)

  • 但 Tomcat 没有完整验证 OCSP 响应

  • ❌ 未验证响应完整性

  • ❌ 未检查响应是否“新鲜”(freshness)

👉 导致攻击者可以绕过证书吊销检测


📜 X.509 证书中的 OCSP 信息

每个 X.509 证书中都有一个 AIA(Authority Information Access)扩展字段,用于指定 OCSP 地址:

Authority InformationAccess:
OCSP-URI:http://ocsp.digicert.com

三、Tomcat Native 组件说明

Apache Tomcat 的 Native 库(TC-Native)是一个可选组件

  • 作用:使用 OpenSSL 替代 Java 默认的 JSSE
  • 用于增强 TLS 支持
  • 不默认包含在 Tomcat 中

👉 关键点:

  • 该漏洞 仅在使用 OpenSSL(通过 Tomcat Native / APR)时可利用
  • 默认 Java TLS(JSSE)不受影响

四、漏洞触发条件(Prerequisite)

一个 Tomcat 实例存在漏洞,需要满足:

  1. 安装了 Tomcat Native(TC-Native)
  2. TLS 使用 OpenSSL(APR connector)

📄 示例配置(server.xml)

<Serverport="8005"shutdown="SHUTDOWN">
<ListenerclassName="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on"/>
<Servicename="Catalina">
<Connector
protocol="org.apache.coyote.http11.Http11AprProtocol"
port="8443"
SSLEnabled="true"
scheme="https"
secure="true"
>
<UpgradeProtocol
className="org.apache.coyote.http2.Http2Protocol"
/>
<SSLHostConfig
certificateVerification="required"
certificateVerificationDepth="1"
caCertificateFile="conf/ca.cert.pem">
<Certificate
certificateFile="conf/server.cert.pem"
certificateKeyFile="conf/server.key.pem"
type="RSA"/>
</SSLHostConfig>
</Connector>
</Service>
</Server>

五、PoC 演示(实战复现)

🧱 环境说明

  • Tomcat:OpenLogic 8.5.121-OL
  • TC-Native:1.2.39
  • 使用 Docker 部署

🐳 Dockerfile(核心步骤)

FROM&nbsp;eclipse-temurin:11-jdk

ENV&nbsp;CATALINA_HOME=/usr/local/tomcat
ENV&nbsp;PATH=$CATALINA_HOME/bin:$PATH
ENV&nbsp;LD_LIBRARY_PATH=/usr/local/apr/lib

WORKDIR&nbsp;$CATALINA_HOME

ARG&nbsp;TCNATIVE_VERSION="1.2.39"

RUN&nbsp;apt-get update && \
&nbsp; &nbsp; apt-get install -y \
&nbsp; &nbsp; &nbsp; &nbsp; unzip curl build-essential \
&nbsp; &nbsp; &nbsp; &nbsp; libapr1-dev libssl-dev && \
&nbsp; &nbsp; apt-get clean && rm -rf /var/lib/apt/lists/*

WORKDIR&nbsp;/tmp
RUN&nbsp;curl -fsSL https://archive.apache.org/dist/tomcat/tomcat-connectors/native/${TCNATIVE_VERSION}/source/tomcat-native-${TCNATIVE_VERSION}-src.tar.gz \
&nbsp; &nbsp; | tar xz && \
&nbsp; &nbsp; cd tomcat-native-${TCNATIVE_VERSION}-src/native && \
&nbsp; &nbsp; ./configure \
&nbsp; &nbsp; &nbsp; &nbsp; --with-apr=/usr/bin/apr-1-config \
&nbsp; &nbsp; &nbsp; &nbsp; --with-java-home=/opt/java/openjdk \
&nbsp; &nbsp; &nbsp; &nbsp; --with-ssl=yes \
&nbsp; &nbsp; &nbsp; &nbsp; --prefix=/usr/local/apr && \
&nbsp; &nbsp; make && make install

WORKDIR&nbsp;$CATALINA_HOME

六、OCSP 实验环境搭建

目标:

  1. 创建带 OCSP URL 的证书
  2. 吊销该证书
  3. 启动 OCSP 服务器供 Tomcat 查询

🔐 创建服务器证书

openssl&nbsp;genrsa&nbsp;-out&nbsp;server.key.pem&nbsp;2048

openssl&nbsp;req&nbsp;-x509-new-nodes&nbsp;\
-key&nbsp;server.key.pem \
-sha256-days825&nbsp;\
-out&nbsp;server.cert.pem \
-subj"/C=IN/O=TomcatPOC/CN=localhost"&nbsp;\
-addext"subjectAltName=IP:127.0.0.1,DNS:localhost"

🏗️ 初始化 CA 目录

mkdir&nbsp;ocsp-lab
cd&nbsp;ocsp-lab
mkdir&nbsp;certs newcerts private
touch&nbsp;index.txt
echo1000&nbsp;> serial
echo1000&nbsp;> crlnumber

🏛️ 创建 CA

openssl&nbsp;genrsa&nbsp;-out&nbsp;private/ca.key.pem&nbsp;4096

openssl&nbsp;req&nbsp;-x509-new-nodes&nbsp;\
-key&nbsp;private/ca.key.pem \
-sha256-days3650&nbsp;\
-out&nbsp;certs/ca.cert.pem \
-subj"/C=IN/O=TestCA/CN=Test Root CA"

👤 创建客户端证书

openssl&nbsp;genrsa&nbsp;-out&nbsp;client.key.pem&nbsp;2048

openssl&nbsp;req&nbsp;-new-key&nbsp;client.key.pem \
-out&nbsp;client.csr.pem \
-subj"/C=IN/O=TestClient/CN=client1"

⚙️ 配置 OCSP 地址

authorityInfoAccess = OCSP;URI:http://host.docker.internal:2560

✍️ 签发证书

openssl&nbsp;ca&nbsp;-configopenssl.cnf \
-in&nbsp;client.csr.pem \
-out&nbsp;client.cert.pem \
-batch

🚀 启动 OCSP 服务

openssl&nbsp;ocsp \
-index&nbsp;index.txt \
-port2560&nbsp;\
-rsigner&nbsp;certs/ca.cert.pem \
-rkey&nbsp;private/ca.key.pem \
-CA&nbsp;certs/ca.cert.pem \
-text

✅ 测试 OCSP

openssl&nbsp;ocsp \
-issuer&nbsp;certs/ca.cert.pem \
-cert&nbsp;client.cert.pem \
-url&nbsp;http://localhost:2560

👉 正常输出:

client.cert.pem: good

七、验证漏洞

🔗 正常请求(证书未吊销)

curl-v&nbsp;https://localhost:8443/ \
--cacert&nbsp;conf/server.cert.pem \
--cert&nbsp;ocsp-lab/client.cert.pem \
--key&nbsp;ocsp-lab/client.key.pem

👉 返回:

SSL certificate verify ok

❌ 吊销证书

openssl&nbsp;ca&nbsp;-configopenssl.cnf \
-revoke&nbsp;client.cert.pem

⚠️ 再次请求(关键点)

如果存在漏洞:

👉 请求仍然成功(漏洞触发)

如果修复:

sslv3 alert certificate revoked

八、漏洞总结

🎯 漏洞本质

  • OCSP 响应未完整验证
  • 未检查响应时间有效性
  • 导致吊销证书仍被信任

⚠️ 影响范围

仅影响:

  • 使用 Tomcat Native(APR)
  • 使用 OpenSSL TLS

不影响:

  • 默认 Java TLS(JSSE)

九、参考资料

  • NVD

    官方漏洞库

  • Apache Tomcat

    安全文档

  • OCSP 协议说明文档


👍 一句话总结

👉 这是一个典型的“证书吊销绕过”漏洞,本质是 OCSP 校验不完整,在 mTLS 场景下风险很高。

  • 公众号:安全狗的自我修养
  • vx:2207344074
  • http://gitee.com/haidragon
  • http://github.com/haidragon
  • bilibili:haidragonx

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全狗的自我修养 haidragon haidragon《绕过 Tomcat 证书吊销:CVE-2026-24734 详解(含实战 PoC)》

具身智能安全入门 网络安全文章

具身智能安全入门

文章总结: 文档阐述具身智能安全是融合大模型、机器人与功能安全的交叉系统问题。指出当前系统安全意识薄弱,风险集中在感知层对抗样本、语言接口提示注入及执行层情境风
评论:0   参与:  0