homebrew使用方法(恶意代码远程操纵电脑)
homebrew使用方法(恶意代码远程操纵电脑)
2024-11-06 03:30:29  作者:一只淖尔猫  网址:https://m.xinb2b.cn/know/pmh317266.html
丰色 发自 凹非寺量子位 报道 | 公众号 QbitAI

Mac包管理工具Homebrew出现了一个大漏洞:

在Homebrew/homebrew-cask仓库中,通过混淆Homebrew项目中自动拉取请求审阅脚本中使用的库,可以合并恶意的拉取请求

如果被滥用,攻击者可以在使用brew的计算机上执行任意Ruby代码!


该漏洞的威胁登记在国内被360CERT评为10分严重。

漏洞的发现者是一位来自日本的后端程序员。


当天下午,他“闲来无事”逛起了HackerOne(漏洞赏金平台)。顺便看看经常使用的Homebrew有没有什么漏洞。

diff检查逻辑存在缺陷

由于Homebrew项目使用GitHub Actions运行CI脚本,小哥查看了.git-hub/workflows/下每个仓库的目录。

其中两个目录:一个负责检查用户提交的拉取请求的内容,进行批准,另一个目录负责自动合并这些被批准的代码。

拉取请求的内容被fetch后会被改为diff文件,并使用git_diff对其进行解析。

小哥一开始检查了可以通过批准请求的几个条件,没有发现问题。

但是直觉作怪,他还是掉过头去二次研究了git_diff仓库。

当看到其中报告了一个“更改行数引发解析错误”的问题时,小哥“灵机一动”:

我是不是能以某种方式对拉取请求进行伪装来满足批准条件,骗过git_diff?

于是他分析了git_diff解析diff文件的步骤,乍一看没毛病,但是细看其中一步发现了“猫腻”:可以多次更改源/目标文件路径信息。

于是通过下面这两行代码:

"b/#{私藏代码写这儿}" b/Casks/cask.rb

第一行将私藏代码以上面的格式嵌入拉取请求,就可以被视为文件路径信息,而非代码变动。

第二行为更改文件路径的必需条件。

这样就可以绕过必需条件,将含有恶意代码的拉取请求视为零行更改的

“无害”请求,最终骗过diff,获得批准,完成自动合并!开始搞事情!


添加“打印日志”操作来验证此漏洞

“今天的收获可不菲”,小哥立即行动,提交了一个PR,通过Homebrew搞起了破坏,在HackerOne上对此漏洞进行PoC演示。

以下是具体代码:

(选取在GitHub上无意发布了一个API令牌的拉取请求iterm2.rb 进行更改 )

"b/#{puts'Goingtoreportit-RyotaK(https://hackeorne.com/ryotak)';b=1;Casks=1;iterm2={};iterm2.define_singleton_method(:rb)do1end}" b/Casks/iterm2.rb

在第一行定义b,Casks,iterm2,iterm2.rb四个变量,才不会在第二行引发未定义错误,这样就可以作为有效的Ruby脚本执行。

通过添加这两行更改,GitHub返回以下差异:

diff--gita/Casks/iterm2.rbb/Casks/iterm2.rbindex3c376126bb1cf9..ba6f4299c1824e100644---a/Casks/iterm2.rb b/Casks/iterm2.rb@@-8,6 8,8@@sha256"e7403dcc5b08956a1483b5defea3b75fb81c3de4345da6000e3ad4a6188b47df"end "b/#{puts'Goingtoreportit-RyotaK(https://hackeorne.com/ryotak)';b=1;Casks=1;iterm2={};iterm2.define_singleton_method(:rb)do1end}" b/Casks/iterm2.rburl"https://iterm2.com/downloads/stable/iTerm2-#{version.dots_to_underscores}.zip"name"iTerm2"desc"TerminalemulatorasalternativetoApple'sTerminalapp

如前面所述,git_diff将匹配的行 “?b/(.*) 视为文件路径信息,而非添加的行,因此,此差异将被视为进行0行更改的请求

由于既不能修改未经授权使用的cask,也没有在homebrew-cask仓库中找到一个测试cask,小哥给Homebrew发邮件求助,按照工作人员的意思添加“打印日志”这一无害修改来验证了这个漏洞。

当其他用户执行brew search/brew cleanup等命令时即使没有安装目标cask,也将执行恶意代码。

官方在3小时之内完成了主要修复,并发布了通报。


“这不是单方面的责任”

针对这次大漏洞,网友们议论纷纷,有人表示:

如果不是使用ruby解析git_diff,而是使用libgit,这个漏洞就不会发生。

如果Apple提供了一个功能更强大的软件包管理器,这不会发生。

如果数以百万计的Homebrew用户给了他们建造如此庞大的项目所需资金的一小部分,这也不会发生。

此漏洞没有单一负责方。


另外,细心的朋友可能还记得,我们此前曾报道了一篇关于黑客用GitHub服务器挖矿的新闻,里面的黑客也是只需提交Pull Request,即使项目管理者没有批准,恶意挖矿代码依然能够执行。

和这次这个漏洞一样,都是抓住了GitHub Actions的自动执行工作流功能来“钻空”。

针对滥用Actions的问题,GitHub近日也更新了帮助保护维护者的新功能,比如在任何Actions工作流运行之前,来自首次贡献者的Pull Request将需要**具有写访问权限的仓库协作者的手动批准**。

参考链接:[1]https://blog.ryotak.me/post/homebrew-security-incident-en/[2]https://news.ycombinator.com/item?id=26922448[3]https://brew.sh/2021/04/21/security-incident-disclosure/[4]https://wangzhan.360.cn/774.html[5]https://github.blog/2021-04-22-github-actions-update-helping-maintainers-combat-bad-actors/

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态

  • 昆明十强装修公司有哪些(2022昆明十大装修公司排名)
  • 2024-11-062022昆明十大装修公司排名点击文末“蓝字链接”找本地靠谱装修公司,省30%昆明靠谱的装修公司有哪些?装修一直是个鱼龙混杂的行业,好的坏的参差不齐,我们如果要装修的话必须擦亮眼睛,找对一家靠谱的装修公司那么昆明有哪些优质的装修公。
  • 花生放冷冻好不好(剥好的花生米如何保存)
  • 2024-11-06剥好的花生米如何保存剥好的花生米如何保存1、先将购买回的花生米晒4~5天,用清水淘净,再放入100℃的开水中浸烫,15~20分钟后料袋装起来,可长时间不发霉、不变色、不走油;或在盛花生米的容器里放1~2支香烟,干辣椒片,。
  • 怎样做冬瓜好吃(冬瓜的做法)
  • 2024-11-06冬瓜的做法牛肉馅用盐、料酒、白胡椒、生抽、葱姜末先腌一下肉馅掺入香菜末,用筷子朝着一个方向打到粘稠锅中加水,糖粿开锅后转入小火开始汆丸子放入冬瓜,加入盐调味,放上香菜,冬瓜丸子汤就做好了。
  • 宝妈要经常给宝宝换这件东西(半年就需要更换一次)
  • 2024-11-06半年就需要更换一次前几天去看闺蜜,她正在收拾东西,我发现垃圾桶里丢了好几个奶嘴、毛巾,看着都挺新的,就问她是不是丢错了,怎么把新的东西扔了?闺蜜告诉我没有丢错,这些东西虽然看着很新,但是已经用了很久了,里面的一些残留物。
  • 硬盘分区的使用顺序(新硬盘管理分区步骤)
  • 2024-11-06新硬盘管理分区步骤磁盘管理分区步骤:按下键盘的winr输入diskmgmt.msc进入磁盘管理【新硬盘需要分区后才会识别,如需硬盘整个为一个磁盘,步骤⑥不更改数,如硬盘已初始化,跳过前三个步骤,从步骤④开始操作】,。
  • 保护环境森林画作品(曹旻油画自述解析)
  • 2024-11-06曹旻油画自述解析艺术简介曹旻,1986年出生,2009年毕业于南京艺术学院,现为北京师范大学宇一艺术研究院任助理研究员主要展览2014艺尚·重庆——国际当代艺术双年展,重庆阳光世纪购物中心,重庆2014美丽新世界——。
  • 小鹏还将推出一款旗舰suv小鹏g9(凭什么敢称50万内最好SUV)
  • 2024-11-06凭什么敢称50万内最好SUV作为国内市场“头部”造车新势力企业之一,从入门级的G3i、P5,到更显主流的P7,再到如今的G9,可以说小鹏汽车正在逐步完善着自身的产品布局只不过相比其竞争对手蔚来、理想等品牌而言,小鹏的旗舰产品来得。
  • 杭州注册公司流程及费用标准多少(杭州注册公司分哪些类型)
  • 2024-11-06杭州注册公司分哪些类型现在开始创业的人越来越多了,而公司注册是开始创业的第一步公司注册的过程中,从注册地址到注册资金等等,都不允许出错,为了防止大家多走弯路,接下来,小纯就给大家介绍一下:杭州注册公司分哪些类型,怎么区别?。
  • 客家早餐标准做法(广东客家人一餐不吃就想的早餐)
  • 2024-11-06广东客家人一餐不吃就想的早餐广东人的早餐可以说是非常丰富的,像一些茶楼里,吃一个早餐能吃几个小时,边点边吃,边吃边喝茶边聊聊天,那气氛,可真是舒服,不过这可不是人人都有这闲情,每天这样吃早餐的对于上班和上学一族来说,早上是最忙碌。
  • 高铁怎么叫外卖?(今起坐高铁可以叫外卖啦)
  • 2024-11-06今起坐高铁可以叫外卖啦7月17日起,坐高铁也能订外卖啦,这其中的流程您了解吗?目前订餐系统已经开通,共有27个站点接受网络订餐,下面小千就来手把手教您开启“高铁饕餮之旅”~资料图千龙网记者万小军适用对象乘坐G、D字头的动车。
  • 吴京战狼2现在怎么样了(吴京让这两个人无地自容)
  • 2024-11-06吴京让这两个人无地自容《战狼2》现在的票房已经突破了56亿大关,早在《战狼2》上映票房超过20亿的时候,吴京就请了剧组的很多人员一起开庆功宴,也包含了茅台的董事长但是娱乐圈来的明星却少之又少,有网友就问了,是不是吴京得罪了。