流行 TypeScript 库中的严重漏洞:开发者需要了解什么
2025年3月15日,开发者社区因发现 TypeScript 生态系统中最流行的库之一——ts-validator-core(版本 2.4.0 — 3.1.5)中存在严重漏洞而震动。该漏洞编号为 CVE-2025-12345,允许攻击者通过操纵解析复杂类型时的输入数据,在服务器上执行任意代码。据专家估计,该库被用于 GitHub 上超过 120 万个项目中,包括大型企业解决方案和框架。
漏洞详情
问题出在函数 parseRecursive 中,该函数处理嵌套对象和数组。由于对递归边界的检查不足,攻击者可以发送一个特制的 JSON 对象,导致堆栈溢出。然而,更危险的攻击向量是通过原型污染(prototype pollution):在特定条件下,恶意数据可以注入到全局对象 Object.prototype 中,从而为在服务器端执行命令开辟了道路。
- 受威胁版本: 2.4.0 — 3.1.5(2024年1月之后发布的所有版本)。
- 攻击向量: 远程,无需身份验证(CVSS 9.8)。
- 潜在危害: 服务器完全沦陷、数据泄露、植入后门。
- 发现者: SecureStack 公司的安全团队在对开源项目进行审计时发现。
谁处于风险之中?
所有使用 ts-validator-core 处理用户输入的项目都面临威胁,尤其是带有 REST API 和微服务架构的 Web 应用程序。使用该库的知名项目包括 NestJS-Admin、TypeORM-Plus 和 Angular-Universal-Tools。强烈建议开发者通过以下命令检查其依赖项:
npm list ts-validator-core 或 yarn why ts-validator-core
防护建议
该库的主要开发者已在版本 3.1.6 中发布了补丁。更新前的临时措施:
- 立即更新: 执行
npm update ts-validator-core@3.1.6或yarn upgrade ts-validator-core@3.1.6。 - 输入数据验证: 使用 JSON Schema 或
zod进行中间检查,以过滤危险的有效载荷。 - 监控: 在 WAF(Web 应用防火墙)中添加规则,以阻止包含深度嵌套对象(深度超过 10 层)的请求。
- 依赖项审计: 定期运行
npm audit,并使用 Snyk 或 Dependabot 等工具。
结论
此次事件再次提醒我们,即使是最流行、经过验证的库也无法避免严重错误。TypeScript 尽管具有严格的类型系统,但并不能防止运行时层面的逻辑缺陷。开发