homebrew使用方法(恶意代码远程操纵电脑)
homebrew使用方法(恶意代码远程操纵电脑)
2024-11-22 05:46:41  作者:一只淖尔猫  网址:https://m.xinb2b.cn/sport/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 · 头条号签约

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

  • 新人教版三年级数学第一单元考点(三年级数学第一单元)
  • 2024-11-22三年级数学第一单元三年级数学第一单元,各个版本的考点提示汇总在数学的考点提示上,认知类单元的知识点要多一些,比如“时分秒”“克、千克和吨”一些计算类的单元我们会简单的说一些,比如“两、三位数乘一位数”我们要记住的是计算。
  • 国外人的奇幻一生(现实中的魔幻People简史)
  • 2024-11-22现实中的魔幻People简史2021年11月12日,D0日:一个疯狂的想法产生了故事缘起美国一个公开拍卖奢侈品的网站sothebys计划于2021年11月18日拍卖“美国宪法副本”,该副本据悉是1787年美国宪法的“官方版”和宪。
  • 牛排杯好操作吗(为什么这么受年轻人欢迎)
  • 2024-11-22为什么这么受年轻人欢迎牛排杯,这是什么东西,能吃吗?当然能吃,牛排杯的发明就是为了让我们更加方便的吃,更加便宜的吃小伙伴们可能经历过这种情形,很想吃牛排呀,但是去西餐厅太麻烦了,自己做,更麻烦好不好去西餐厅,上菜好慢呀,吃。
  • 词根单词怎么背好?每天使用词根记单词
  • 2024-11-22词根单词怎么背好?每天使用词根记单词每天空出20-30分钟通过词根记单词,并参考下面的复习计划,便能事半功倍掌握更多单词词根词缀记忆法是目前比较有效且快速的记忆单词方法,在掌握500个词根常用词缀,词汇量就能达到2W所以我会逐步整理相关。
  • 牛油果泡泡玫瑰怎么搭配(范爷同款百香果柠檬蜜糖水)
  • 2024-11-22范爷同款百香果柠檬蜜糖水百香果是我非常喜欢的水果之一,泡水喝是我的最爱,那今天就做个范冰冰同款饮品,百香果柠檬蜂蜜水食材准备:2个百香果,半个柠檬柠檬用盐搓下皮去蜡,洗净后切薄片,将半个柠檬量的薄片放入杯子中百香果对半切,将。
  • 夏天好喝的自制冷饮只要三步(分享5种消暑解渴的冷饮给大家)
  • 2024-11-22分享5种消暑解渴的冷饮给大家分享5种消暑解渴的冷饮给大家,调制简单,在家随时能制作品尝一首“夏天的风”一直在耳边回荡,不知不觉也到了三伏天在这段夏天最热的阶段,我几乎每一天都在空调下消暑但凡出去做个什么事就是一身汗湿透衣服,有时。
  • 如何做高效的读书笔记(如何做读书笔记)
  • 2024-11-22如何做读书笔记每个人都有自己的阅读习惯,但五花八门的阅读习惯中,有一些习惯是雷同的,其中比较有共鸣感的,就是做读书笔记读书笔记,可以说是阅读过程中必不可少的环节,也是古今中外都比较盛行的一种读书主张更有一些名人将自。
  • 航海王热血航线马尔高值得养吗
  • 2024-11-22航海王热血航线马尔高值得养吗不值得养,不建议,马尔科霸体防御力顶级,但是技能伤害一般,漫画中定位是船医,马尔高更适合团队作战,治疗技能突出,可以作为辅助角色,而对于新手来说马尔科前期培养难度较大,马尔高移动速度挺快,躲避技能还可。
  • 咖啡拉花的控制方法(如何把控咖啡拉花的正确技巧)
  • 2024-11-22如何把控咖啡拉花的正确技巧咖啡拉花的错误手法你都中了几点呢?Herecomesthetutorial打发好奶泡是拉花成功的一半!以下列举了一些新手小白的常见错误看看你有没有中招~PART01打发的奶泡发泡时间长,气泡厚,导致咖。
  • 佟大为演绎真心英雄(佟大为演绎男版)
  • 2024-11-22佟大为演绎男版由佟大为、于明加、于小伟、周晓欧、丁嘉丽等主演的现代家庭剧《门第》,今晚20:20即将登陆辽宁卫视该剧讲述佟大为、于明加两个门第差异极大的年轻人,一段错综复杂的婚姻生活谈门第:生活需要自嘲精神在《门第。
  • 南昌周围五一小众旅游推荐(五一假期哪里玩)
  • 2024-11-22五一假期哪里玩“五一”放假五天,如何玩得既开心又安心?既然可以出门玩,那去哪儿玩比较好?专家建议,首选室外场地比较开阔的景区目前国内景区只开放室外区域,且接客量不能超过核定最大承载量的30%室外场地开阔,加上限流政。