Protobuf 库中的关键漏洞允许执行 JavaScript 代码
Source: Bleeping Computer

Overview
已经发布了针对 protobuf.js 中关键远程代码执行(RCE)漏洞的概念验证利用代码。protobuf.js 是 Google 的 Protocol Buffers 的广泛使用的 JavaScript 实现。该库在 npm 注册表中极受欢迎,平均每周下载量接近 5000 万次(npmjs.com/package/protobufjs)。它用于服务间通信、实时应用以及在数据库和云环境中高效存储结构化数据。
Vulnerability Details
应用安全公司 Endor Labs 报告称,RCE 漏洞是由不安全的动态代码生成导致的。库通过字符串拼接并使用 Function() 构造函数执行,从 protobuf 架构生成 JavaScript 函数,但未对架构派生的标识符(例如消息名称)进行验证。攻击者可以提供恶意架构,将任意代码注入生成的函数中,当应用使用该架构处理消息时,代码即被执行。
该问题的跟踪编号为 GHSA‑xq3m‑2v4x‑88gg(尚未分配官方 CVE)。
Impact
- 对加载了受攻击者影响的架构的服务器或应用进行远程代码执行。
- 可能访问环境变量、凭证、数据库和内部系统。
- 有可能在基础设施内部进行横向移动。
- 对在本地解码不受信任架构的开发者机器构成威胁。
Affected Versions and Fixes
- 受影响版本: protobuf.js 8.0.0、7.5.4 及更低版本。
- 已修补版本: 8.0.1 和 7.5.5。
补丁通过去除类型名称中的非字母数字字符来对名称进行清理,防止攻击者关闭合成函数。Endor Labs 说明,更长期的解决方案是彻底避免对可被攻击者控制的标识符使用 Function()。
Mitigation Recommendations
- 升级 到已修补的版本(8.0.1 / 7.5.5)。
- 审计 传递依赖,确保未拉入受漏洞影响的版本。
- 将架构加载视为不可信输入,在生产环境中优先使用预编译或静态架构。
- 监控可能的利用迹象,尽管截至目前尚未观察到活跃的野外利用。