HackerNews

HackerNews
Protobuf 库关键漏洞可致 JavaScript 代码执行

Protobuf 库关键漏洞可致 JavaScript 代码执行

给文章评分:
HackerNews 编译,转载请注明出处:
 

针对 protobuf.js 中一个严重的远程代码执行漏洞,概念验证(PoC)利用代码已被公布。protobuf.js 是谷歌 Protocol Buffers 的一个广泛使用的 JavaScript 实现。
 
该工具在 Node 包管理器(npm)注册中心极受欢迎,每周平均下载量近 5000 万次。它用于服务间通信、实时应用程序,以及在数据库和云环境中高效存储结构化数据。
 
周五,应用安全公司 Endor Labs 在一份报告中表示,protobuf.js 中的远程代码执行漏洞(RCE)是由不安全的动态代码生成导致的。
 
该安全问题尚未获得官方的 CVE 编号,目前由 GitHub 分配的标识符 GHSA - xq3m - 2v4x - 88gg 进行追踪。
 
Endor Labs 解释称,该库通过连接字符串并通过 Function () 构造函数执行,从 protobuf 模式构建 JavaScript 函数,但它未能验证从模式派生的标识符,如消息名称。
 
这使得攻击者能够提供恶意模式,将任意代码注入生成的函数中,当应用程序使用该模式处理消息时,注入的代码就会被执行。
 
这为加载受攻击者影响的模式的服务器或应用程序开启了远程代码执行的通道,攻击者可借此访问环境变量、凭证、数据库和内部系统,甚至在基础设施内进行横向移动。
 
如果开发人员的机器在本地加载和解码不可信的模式,该攻击也可能影响这些机器。
 
该漏洞影响 protobuf.js 8.0.0/7.5.4 及更低版本。Endor Labs 建议升级到 8.0.1 和 7.5.5 版本,这两个版本已修复该问题。
 
补丁通过去除非字母数字字符对类型名称进行清理,防止攻击者关闭合成函数。然而,Endor 评论称,从长远来看,彻底的解决办法是完全停止通过 Function 传递攻击者可触及的标识符。
 
Endor Labs 警告称,“利用此漏洞很容易”,安全公告中包含的最小化概念验证(PoC)就体现了这一点。不过,截至目前尚未观察到在实际环境中的主动利用情况。
 
该漏洞由 Endor Labs 研究员兼安全漏洞赏金猎人克里斯蒂安・斯泰库(Cristian Staicu)于 3 月 2 日报告,protobuf.js 维护者于 3 月 11 日在 GitHub 上发布了补丁。npm 包的修复版本于 4 月 4 日发布给 8.x 分支,4 月 15 日发布给 7.x 分支。
 
除了升级到已打补丁的版本,Endor Labs 还建议系统管理员审计传递依赖项,将模式加载视为不可信输入,并在生产环境中优先使用预编译 / 静态模式。












 




 

消息来源:bleepingcomputer.com
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文