Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-65945-poc — CVE-2025-65945 的概念验证 (node-jws 中加密签名验证不当) | Kitploit
工具/GitHubGitHub/jedisct1/cve-2025-65945-poc
漏洞分析漏洞利用Web应用程序漏洞利用密码学渗透测试身份验证
GitHubjedisct1/cve-2025-65945-poc

CVE-2025-65945-poc

CVE-2025-65945 的概念验证 (node-jws 中加密签名验证不当)

查看仓库
5128个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-65945: node-jws 签名绕过

这是 node-jws 库中签名验证绕过漏洞的概念验证。该漏洞允许攻击者在服务器从用户可控数据派生 HMAC 密钥时伪造有效的 JWT。

漏洞原理是什么?

jws.createVerify() 函数在使用 HMAC 算法时,不会验证是否确实提供了密钥。如果你的应用程序根据 JWT 中的某些内容(如 kid 头)查找密钥,并且查找失败,那么你最终可能会使用空密钥进行验证。

攻击者可以利用这一点:

  1. 发送一个包含不存在于数据库中的虚假密钥 ID 的 JWT
  2. 使用空字符串作为密钥签署其恶意负载
  3. 服务器的查找返回 undefined,该值会被强制转换为空字符串
  4. 双方现在都同意使用“密钥”(空字符串),因此签名验证通过

攻击者现在可以冒充任何人或为自己授予管理员权限。

受影响版本

  • jws 3.2.2 及更早版本
  • jws 4.0.0

升级到 3.2.3+ 或 4.0.1+ 以修复此问题。

运行 PoC

确保已安装 Bun,然后:

root@kitploit:~
# 安装受影响版本
bun install [email protected]

# 运行利用程序
bun run exploit.js

你应该会看到输出显示一个伪造的管理员令牌被接受为有效。

该利用程序做了什么?

PoC 模拟了一个服务器,它具有:

  • 一个存储了几个 API 密钥的密钥存储库
  • 根据 JWT 的 kid(密钥 ID)头查找密钥
  • 使用流式 API 的 createVerify()

攻击者创建一个 kid: "non-existent-key" 的 JWT,并使用空密钥签名。当服务器尝试查找此密钥时,获取到 undefined,将空字符串写入验证流,伪造的令牌通过验证。

测试修复

root@kitploit:~
# 升级到修补版本
bun install [email protected]

# 再次运行 - 现在应该失败
bun run exploit.js

使用修补版本,你将看到一个错误:secret must be a string or buffer or a KeyObject。该修复在继续之前验证 HMAC 操作是否具有正确的密钥。

易受攻击的代码模式

如果你的代码类似于以下内容,你可能会受到影响:

root@kitploit:~
const decoded = jws.decode(token);
const secret = lookupSecret(decoded.header.kid); // 可能返回 undefined!

const verifier = jws.createVerify({
  algorithm: "HS256",
  signature: token,
});

verifier.secret.write(secret); // 糟糕
verifier.secret.end();

参考

  • GitHub 安全公告
  • 修复提交
下载工具