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

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

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

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

homebrew使用方法(恶意代码远程操纵电脑)(1)

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

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

homebrew使用方法(恶意代码远程操纵电脑)(2)

当天下午,他“闲来无事”逛起了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,获得批准,完成自动合并!开始搞事情!

homebrew使用方法(恶意代码远程操纵电脑)(3)

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

“今天的收获可不菲”,小哥立即行动,提交了一个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小时之内完成了主要修复,并发布了通报。

homebrew使用方法(恶意代码远程操纵电脑)(4)

“这不是单方面的责任”

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

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

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

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

此漏洞没有单一负责方。

homebrew使用方法(恶意代码远程操纵电脑)(5)

另外,细心的朋友可能还记得,我们此前曾报道了一篇关于黑客用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-06-26婚姻登记网上预约已暂停【婚姻登记网上预约已暂停,市民政局:市民仍可现场办】近日,市民党女士通过长江网武汉城市留言板咨询,从12月7日开始,全省婚姻登记预约服务系统因升级改造无法使用后,想知道升级改造期间如何办理婚姻登记,何。
  • 教男生怎么追女生的电影(如何让男神成为男友)
  • 2024-06-26如何让男神成为男友在爱情片中,无非就是两种剧情,一种是男追女,一种是女追男前一种戏码可能占据了大部分的银幕时间,至于后一种则是爱情片中较为稀缺的物种男追女的桥段要么是浪漫得煽情,要么俗烂的连观众都为女演员打抱不平那么邻。
  • dnf天空套哪个部位最好看(DNF第10期天空套好看吗)
  • 2024-06-26DNF第10期天空套好看吗[海峡网]天空套羽翼特效展示金色和白色翅膀的展示图(啊哈哈红色正好没找到):同时国服有一个小细节,就是白色的翅膀更粉嫩一点,有点发粉光同时散搭翅膀颜色跟以前的原理是一样的当4/4散搭的时候,翅膀是白色。
  • 小孩三岁说话口齿不清怎么办(孩子说话口齿不清)
  • 2024-06-26孩子说话口齿不清当孩子喊出第一声“爸爸”和“妈妈”的时候,内心的激动不言而喻直到现在,还能依稀记得他们第一次喊人的情景,还能记得自己内心的感动听到他们开口喊人,多日来的辛苦和努力,瞬间就被遗忘随着孩子不断长大,他们的。
  • 学习成绩差按什么穴位(穴位按摩强脑力)
  • 2024-06-26穴位按摩强脑力又是一年考试季,不少考生都在做最后的冲刺此时,如何提高记忆力,成为不少考生和家长关心的问题下面给大家推荐一些按摩方法,日常可以多尝试,有助于提高记忆力按按百会穴百,有多之意会,交会也“百会”意指手足三。
  • 热血高校百兽之王芹泽多摩雄(热血高校芹泽多摩雄携新片归来)
  • 2024-06-26热血高校芹泽多摩雄携新片归来记得当年还是在上高中,一部校园动作电影《热血高校》扑面而来,看的那叫一个过瘾啊,由小栗旬、山田孝之等主演的前两部实在是经典中的经典,至于第三部就显得有些牵强了如果说影片中的第一男主角那一定是泷谷源治,。
  • 福建哪个地方二手车便宜(福建二手车市场为何热不起来)
  • 2024-06-26福建二手车市场为何热不起来东南网7月8日讯(福建日报记者庄严通讯员李加进)随着我国汽车保有量的增加,二手车交易市场越来越活跃根据中国汽车流通协会公布的信息,2018年全国累计完成二手车交易1382.19万辆,同比增长11.46。
  • 霍雨浩王秋儿回史莱克(王秋儿出现在史莱克)
  • 2024-06-26王秋儿出现在史莱克绝世唐门的动漫继续更新中,霍雨浩终于结束了日月帝国的交流,回归史莱克学院霍雨浩在回归史莱克城时,在意料之外遇见了长相酷似王冬儿的王秋儿也正是因为这一次会面,霍雨浩对王秋儿产生非常强烈的好奇心很多人认为。
  • 荷仙菇意面(荷仙菇意面怎么做)
  • 2024-06-26荷仙菇意面怎么做准备荷仙菇1小把、雪山蘑菇可选配、意大利面/自选粗细100g、薄盐生抽3匙、葡萄籽油4匙等配料荷仙菇等食材洗净备用取锅用盐水煮意大利面至7分熟;另取炒锅,加葡萄籽油,中火炒熟豌豆,加1碗水,加荷仙菇、。
  • 狗狗老是用脚刨土(狗狗喜欢刨土挖坑)
  • 2024-06-26狗狗喜欢刨土挖坑狗狗为什么这么喜欢挖地?除了天性之外,还有没有别的原因呢?怎样才能让狗狗不再乱挖呢?1、狗狗挖掘是天性狗狗喜欢挖掘的原因有很多,其中一个就是天性所驱比如迷你雪纳瑞和腊肠犬这些品种,尤其擅长那是因为它们。