Deno,这个标榜“默认安全”的现代 JavaScript/TypeScript 运行时,近日被披露存在两个高危安全漏洞。这两个漏洞分别涉及运行时的加密兼容性和 Windows 平台命令执行功能,可能导致服务器敏感密钥泄露,并允许攻击者在受影响的系统上执行任意代码。
加密模块漏洞(CVE-2026-22863)
其中最严重的 CVE-2026-22863 漏洞 CVSS 评分高达 9.2,它隐藏在 Deno 的 node:crypto 兼容层中。这个模块的设计初衷是让 Deno 能够无缝运行为 Node.js 编写的代码。
根据安全公告,node:crypto 的实现存在一个关键缺陷:它未能正确终止加密操作。在标准的加密流程中,final() 方法本应结束加密过程并清理内部状态。然而,在受影响的 Deno 版本中,调用该方法后,加密流会继续保持开启状态,这实质上创造了一个“无限加密”的场景。
分析报告指出,这种状态管理缺陷“可能导致暴力破解尝试,以及更精细的攻击手段以获取服务器密钥”。报告中提供的概念验证(PoC)显示,调用 cipher.final() 会产生一个内部缓冲仍可访问的 Cipheriv 对象,而不是预期的、已关闭的 CipherBase 对象。这种对加密安全基本流程的破坏,为攻击者打开了窃取密钥的大门。
Windows 命令执行漏洞(CVE-2026-22864)
第二个漏洞 CVE-2026-22864 影响 Deno 在 Windows 平台创建子进程的能力。详细的分析报告描述了一种通过 Deno.Command API 执行批处理文件时“绕过已修复漏洞”的方法。
Deno 本身设计有防止子进程注入攻击的安全机制。当开发者尝试直接运行 .bat 文件时,Deno 通常会抛出 PermissionDenied 错误,并提示“使用 shell 执行 .bat 或 .cmd 文件”,以确保参数得到安全处理。
但研究人员发现,攻击者可以通过修改文件扩展名的大小写(例如使用 .BAT 而非 .bat)或精心操纵命令参数来绕过这一限制。报告中的 PoC 清楚地展示了这一点:通过在批处理文件执行环境中注入参数(如 args: ["&calc.exe"]),攻击者成功运行了 calc.exe(Windows 计算器),从而证明了在主机上执行任意代码的可能性。

修复建议
用户应立即采取行动,将 Deno 运行时升级至 v2.6.0 或更高版本,以彻底修复上述漏洞。定期更新运行时环境是保障应用安全的基础措施之一。
对于更多类似的安全讨论、漏洞分析和 Node.js 生态的技术分享,开发者可以关注 云栈社区 的相关板块,以获取及时的资讯和深度解读。
参考来源:
Critical Deno Flaws Risk Secrets (CVE-2026-22863) & Execution (CVE-2026-22864)
https://securityonline.info/critical-deno-flaws-risk-secrets-cve-2026-22863-execution-cve-2026-22864/
|