homebrew使用方法(恶意代码远程操纵电脑)
homebrew使用方法(恶意代码远程操纵电脑)
2024-11-25 03:24:40  作者:一只淖尔猫  网址:https://m.xinb2b.cn/tech/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-25平时吃的蜂蜜能养胃吗蜂蜜一直是一种很好的保养品,对于治疗胃病也有很好的帮助,很多人就开始盲目的食用,却不懂如何正确食用要知道喝蜂蜜也要有方法,那么要怎么喝,才能喝出健康呢?科学研究表明:蜂蜜里含有乙酰胆碱,其作用于副交感。
  • 明天北京强降雨 明晚起京城再迎明显降雨
  • 2024-11-25明天北京强降雨 明晚起京城再迎明显降雨今天,京城依旧是晴晒的一天,白天紫外线强,在弱冷空气的渗透下,最高气温有所下降,预计在30℃左右不过,虽然早晚天气逐渐舒适,但中午前后户外体感依旧炎热,外出仍需注意补水防晒雨水又要光顾了根据市气象台预。
  • 民国国文课阅读(民国先生的语文课)
  • 2024-11-25民国先生的语文课民国先生的语文课民国——一个不可跨越的跌宕激情时代,虽然只有短短的37年,并且这期间国家战乱频仍,社会动荡不安,却在我国语文教科书的发展史上产生了跨时代的推动力,具有举足轻重的作用日前,笔者钻进故纸堆。
  • 河南豫剧丑行大全 河南武戏绝活绽放京城
  • 2024-11-25河南豫剧丑行大全 河南武戏绝活绽放京城大河报·大河客户端记者张丛博通讯员姜薇由文化和旅游部艺术司主办、国家京剧院承办的“2019年全国净行、丑行暨武戏展演”于11月8日在北京拉开帷幕河南省京剧艺术中心武戏《赚历城》成功入选此次全国展演,于。
  • 周冬雨魏晨采访 迷妹罗曼史曝周冬雨魏晨剧照
  • 2024-11-25周冬雨魏晨采访 迷妹罗曼史曝周冬雨魏晨剧照来源:电影网日前,由李少红监制,秦鹏执导的电影《迷妹罗曼史》发布“和你看海”爱情剧照这是一部贯穿亲情和爱情的温情电影,周冬雨、魏晨饰演的青年高蓓和青年罗大佑在海边牵手踏浪,满满的青春气息原来“父母爱情。
  • 生男孩还是女孩是谁决定的(生男孩还是女孩不是问题)
  • 2024-11-25生男孩还是女孩不是问题如今年轻的父母都希望生女孩而不是男孩如果要一个孩子,最好是女孩如果头胎是女孩,要二胎的父母就没有什么顾虑,生个男孩也好,再生个女孩也不遗憾但如果头胎是男孩,一般家庭就不太愿要二胎了,因为他们怕二胎再生。
  • 55开黑点刘禅新皮肤(五五开黑节皮肤雨来袭)
  • 2024-11-25五五开黑节皮肤雨来袭王者荣耀的“五五开黑节”今年将改名为“五五朋友节”,根据官方的预告,主要活动有:五排不掉星&不掉战力、多款新皮肤上线以及限定皮肤返场本期就给大家总结一下,今年“五五朋友节”即将上线的皮肤消息!一、关羽。
  • 缅甸的果敢有多少平方公里
  • 2024-11-25缅甸的果敢有多少平方公里果敢面积2700平方公里果敢果敢辖区呈条状,多为山区、丘陵,主要是由三个大“坝子”组成,其中最著名的是“麻粟坝”地势海拔在450至2400米之间,平均海拔1216米,最高2400多米山与山之间的坝子海。
  • 漠视群众利益问题自查报告(我为群众办实事)
  • 2024-11-25我为群众办实事自党史学习教育开展以来,云南省楚雄彝族自治州禄丰市勤丰镇聚焦群众“急难愁盼事”,把“四万三进”活动和党史学习教育“我为群众办实事”实践活动有机结合,用心、用情、用力为民办实事,把“问题清单”变为群众的。
  • 傣族现在的婚嫁风俗(傣族3大典型婚俗聚居地排行榜)
  • 2024-11-25傣族3大典型婚俗聚居地排行榜众所周知,傣族是东亚,东南亚地区一个跨地区的多元化民族因此傣族虽然在民族属性上较为一致,但是不同地区仍有一定的差异,尤其是在家庭与婚姻方面在历史上,傣族的鲜明特点是等级内婚土司之间实行严格的等级内婚,。