homebrew使用方法(恶意代码远程操纵电脑)
homebrew使用方法(恶意代码远程操纵电脑)
2024-10-01 02:37:01  作者:一只淖尔猫  网址: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-10-01寻情记保姆想当一个保姆竟然鸠占鹊巢,被辞退后不仅霸占雇主房子,还将雇主赶出家门画面中这个面色愁容的女子叫彭芳,为了照顾退休的父亲,和患有精神疾病的母亲,2014年,彭芳雇来保姆肖爱英,照顾父母的起居,对于自己5年前。
  • 18 年数字经济占gdp的比重 超6成GDP由消费带动
  • 2024-10-0118 年数字经济占gdp的比重 超6成GDP由消费带动岛君说在中国,服务于企业的企业级应用尤其是移动应用刚刚起步,而在美国,以Salesforce、workday、linkedin为代表的企业级服务领域市值百亿美金以上的企业已经超过十家,市值十亿美金以上。
  • 现在燕子为什么少了(我们不养燕子不食用燕子)
  • 2024-10-01我们不养燕子不食用燕子在唐代诗人秦稻玉代表作《燕子》中,诗人秦稻玉将燕子比喻成人们的好朋友,几度使得主人放下手中的针线活与之一同游玩!曾几何时,燕子可是我们“天气预报员”般的存在在以前,我们并没有这么多的精密仪器来预测天气。
  • 迷你世界教程建筑地图(中式地图搭建的四大要素)
  • 2024-10-01中式地图搭建的四大要素迷你世界是一款充满创造性的游戏,玩家可以根据自己的需求,来搭建各种建筑但对于一些新手玩家而言,这是颇为浩大的工程,为了提高玩家的建筑水平,下面就来跟大家盘点四个小技巧第一:颜色的搭配以及材料的选择众所。
  • 猫饭怎么做(这样做的猫饭最有营养)
  • 2024-10-01这样做的猫饭最有营养自制猫饭首先需要将相应的食材给准备好鱼肉、鸡胸肉、猪肉、牛肉、胡萝卜、白菜、南瓜、西兰花,根据相应的营养比例来制作就比较方便了自制猫饭需要考虑猫咪的营养均衡,主人可以选择一些肉类和蔬菜搭配,混合在一起。
  • 肃州区清水中心幼儿园六一儿童节(秦州区春风幼儿园举行)
  • 2024-10-01秦州区春风幼儿园举行5月30日,天水市秦州区春风幼儿园举行“七彩童年,放飞梦想”庆“六一”主题文艺汇演,22个精彩纷呈、寓教于乐的文艺节目,让孩子、家长、老师共同度过了一个欢快、愉悦的“六一”国际儿童节文艺汇演在该园童之。
  • 特斯拉遥控出车位靠蓝牙还是网络(特斯拉推出狗狗模式)
  • 2024-10-01特斯拉推出狗狗模式【环球网科技综合报道】据《每日邮报》2月14日报道,特斯拉本周将推出狗狗模式,人们可以离开车后仍开放空调,以便在让宠物在无人看管的汽车中保持凉爽狗狗模式不仅可以保持温度适宜,还可以通过屏幕上的消息告知。
  • 霸业是什么意思
  • 2024-10-01霸业是什么意思意思是指称霸诸侯或维持霸权的事业●《史记•匈奴列传》:「晋文公初立,欲修霸业,乃兴师伐逐戎翟」●《三国志•蜀志·诸葛亮传》:「诚如是,则霸业可成,汉室可兴矣!」●。
  • 洋葱炒木耳的做法(洋葱炒木耳怎么做)
  • 2024-10-01洋葱炒木耳怎么做黑木耳用温水泡发两小时,洗净根部杂质,摘成小朵,挤干水分备用洋葱随意切大块;油热后,下入洋葱,用大火爆炒一分钟,炒出葱香;下入发好的黑木耳继续翻炒一分钟;调入适量盐、生抽和鸡精,翻炒片刻,出锅即可。
  • 猛虫过江3亿票房(猛虫过江票房破亿)
  • 2024-10-01猛虫过江票房破亿小沈阳自导自演的电影《猛虫过江》在这几天可以说是话题量很高了因为这是小沈阳第一次做导演,所以在这部电影上映之前,就被炒得很热,再加上小沈阳非常卖力的宣传,还有其师傅的鼎力支持,到现在这部电影的票房已经。
  • 变胖的方法(变胖方法介绍)
  • 2024-10-01变胖方法介绍首先,可以选择高热量、高蛋白的营养物质,比如牛肉、鱼肉、鸡肉、鸭肉等,以上肉类中所含的蛋白质较高且热量较多,进入人体后容易引起人体热量上升,进而使体重上升其次,平日可以多进食含糖分较多的食物,比如高糖。
  • 三个方法推算排卵期(5种推算排卵期的方法)
  • 2024-10-015种推算排卵期的方法月经几乎是每个女人发育成熟后都要经历的,而对于打算要孩子的女性来说,一般会特别关注关于排卵期的计算方法诚然,对于打算要孩子的女性来说,学会如果计算排卵期,可大大提升备孕几率很多女性因为不会计算排卵期,。