GitHub 在热门 Node.js changelog 开源库Standard Version中发现 RCE 漏洞

 聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

上周,GitHub 安全实验室的研究员 Erik Krogh Kristensen  StandardVersion 中发现一个漏洞,可导致黑客在多个node.js 仓库(包括遍布2万多个项目的流行的standard-version changelog 工具)中执行shell 命令。

已公开的 PoC 显示,如果standard-version的 releaseCommitMessagForms 参数是由受用户控制的输入提供的,那么恶意行动者能够操纵程序流,在应用服务器上运行任意 shell 命令。

GitHub 将该漏洞标记为“中危”级别。GitHub 安全实验室的一名发言人表示,“这个漏洞的完整 exploit 难以创建,因为它是易受攻击的一个库函数。”GitHub 指出,“完整的 exploit 要求某些客户端使用由受用户控制的输入的特定库函数”,并向所有依赖standard-version 的开源项目更新至修复版本 (8.0.1)。

总结一下,standardVersion 函数中含有一个命令注入漏洞。Standard-verison 库的客户端可能未意识到这个问题,因此可能会编写出包含漏洞的代码。如果库客户端调用了输入不可信的易受攻击的方法,则可能引发远程代码执行后果。

命令注入漏洞


GitHub CodeQL 团队在开发新查询以检测类似 bug 时发现了这一漏洞。实验室的发言人指出,“该查询建模了一个危险的代码模式,从而引发命令行注入漏洞。在调查这个问题时,我们注意到其它15个安全问题也遵循同一个模式:‘不慎允许远程代码执行的库 API’。有时,由于缺乏最佳实践文档,不同的代码库中一再出现危险的模式。”

在大概11.5万个开源项目中运行该查询后,GitHub 安全实验室在其它库中发现了类似漏洞,包括 git-diff-apply、mversion、node-dns-sync 等。

GitHub 已通知项目维护人员更新代码。GitHub 安全实验室建议不使用可见字符串解析为 shell 命令的 API。例如,使用 child_process.execFile,而不是使用 child_process.exec。

该发言人表示,“CodeQL 团队的一个目标是识别这些模式和构建查询,阻止开发人员再次引入该漏洞。”

开发人员可以使用多种工具如 GitHub 代码扫描工具在开发仓库时和自动化开发者工作流中的安全性时运行安全检查。发言人指出,“开发人员可以深入分析出现问题的地方,提前在生命周期中检索更多的漏洞信息。另外,保持更新依赖关系,同时在使用字符串拼接构建 shell 命令时要非常仔细。”

 

 

 

 

推荐阅读

基于JS的勒索软件Ransom32利用Node.js感染用户

Juniper Networks 修复开源操作系统 Junos OS 等中的多个严重漏洞

谷歌开源漏洞扫描器“海啸”,专为大型企业服务

原文链接

https://portswigger.net/daily-swig/github-security-team-finds-remote-code-execution-bug-in-popular-node-js-changelog-library

https://github.com/advisories/GHSA-7xcx-6wjh-7xp2

题图:Pixabay License

本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

    点个 “在看” ,加油鸭~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值