homebrew使用方法(恶意代码远程操纵电脑)
homebrew使用方法(恶意代码远程操纵电脑)
2024-11-05 11:32:12  作者:一只淖尔猫  网址: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-06这样做的牛肋骨最好吃把牛肋骨切成块;锅中烧开水,将一小块姜拍碎放入,加入二勺料油,牛肋骨焯水;将焯水后的牛肋骨洗干净,用厨房用纸吸掉些水份;锅中放入山茶油,烧热油后关水,放入一小块黄油,用山茶油的油温融化黄油;倒入牛肋排。
  • 史上最强的资源搜索网站(这才是真正的资源搜索大杀器)
  • 2024-11-06这才是真正的资源搜索大杀器一周前,我们说到知名磁力下载器【闪电下载】在Android版大受欢迎的基础上,推出了PC版至此,无论是手机还是电脑,大家都能随时随地不受限制地看片但有句话怎么说来着?巧妇难为无米之炊虽然现在有地方看片。
  • 致我们终将逝去的青春电影系列(致敬我们逝去的青春)
  • 2024-11-06致敬我们逝去的青春下面为大家推荐5部个人认为最触动心弦的青春电影睡在我上铺的兄弟剧情简介:沪都大学:宿舍的四位性格迥异的兄弟,在毕业之际各自遭遇了情感、学业、工作上的挫折聪明贪玩、厚脸皮的大男孩林向宇(陈晓饰)与女上司。
  • 反恐精英起源控制台怎么打开(csgo观战控制台快捷键)
  • 2024-11-06csgo观战控制台快捷键玩CSGO游戏的小伙伴们应该都知道控制台,而且控制台在CSGO游戏中的地位也是举足轻重的,主要是因为控制台在CSGO游戏中骑着决定性的作用如果你还不知道CSGO控制台怎么打开,你可就亏大了,那不就等于。
  • 乐鑫科技物联网(物联网设备集成平台)
  • 2024-11-06物联网设备集成平台Arduino致力于拓展其平台可支持的设备列表,现已支持ESP32-S2、S3和C3,已被添加至支持列表中ArduinoCloud是Arduino的集成平台,能够以简单的方式开发、部署和管理物联网设备。
  • 出现这四种情况应该更换电池(电池出毛病先别换)
  • 2024-11-06电池出毛病先别换在电动车的日常使用中,大家最关心的问题就是电池了,很多人表示用了一两年的电池,也容易出现续航时间变短,充电充不进去等问题那么,有没有什么办法可以不换新也能修复电池的一些小毛病呢?今天小编来给大家支几招。
  • 车险什么方式买最划算(5种车险购买途径)
  • 2024-11-065种车险购买途径每年快到购买车险时,总是隔三差五地有不同的保险公司业务员打电话骚扰,或许你也总是找借口说“已经买好了”,好让那些人死心不再骚扰;但自己心里清楚得很,车险还没着落到底是找熟人购买,亦或是去保险公司官网购。
  • 俄罗斯有没有贝加尔湖(俄罗斯贝加尔湖)
  • 2024-11-06俄罗斯贝加尔湖俄罗斯贝加尔湖,在清朝时期也叫北海或白哈儿湖,蒙古人称“达拉若尔”,意思是海一样的湖不仅是布里亚特人养殖各种牛羊的牧场,更蕴藏着“世界级宝藏”“世界级宝藏”可是诸多考古学者历经三十多年而给出的称号,根。
  • b站哪里找小黑屋(B站小黑屋是怎么一回事)
  • 2024-11-06B站小黑屋是怎么一回事我是一名科普专栏作者,刚入驻B站不久,还真没有发现这个所谓的小黑屋,不知道是干嘛的这名字听起来怪怪的,应该与“监狱”,“监禁”有关系昨天(2020年1月3日)在B站主页导航上,居然看见挨着专栏那一行的。
  • 如何正确的挑选山地自行车(如何挑选一辆5K以内)
  • 2024-11-06如何挑选一辆5K以内首先,我们有必要了解自行车一般的分类都有哪些:山地车、公路车、折叠车、小轮车、旅行车,斜躺自行车等几类山地车目前在国内有这么几个知名品牌:捷安特GIANT、美利达MERIDA、环球自行车UCC、千里达。
  • 微信经典个性签名短的很有个性(优雅大气的微信个性签名)
  • 2024-11-06优雅大气的微信个性签名一、与其违心赔笑,不如一人安静,与其在意别人的背弃和不善,不如经营自己的尊严和美好二、人生本来就没有相欠,别人对你付出,是因为别人喜欢,你对别人付出,是因为你自己甘愿情出甘愿,事过无悔三、你要做一个不。
  • 赵丽颖最近几部剧评价(赵丽颖未出场被评演技差)
  • 2024-11-06赵丽颖未出场被评演技差赵丽颖、肖央、董子健主演的《谁是凶手》可谓“命途多舛”上线播出前就因海报与日剧《胜者即是正义》相似疑似抄袭被推上了热搜官方紧急发布致歉信,一定程度上控制了事态的发展《谁是凶手》也准时上线播出这部剧上线。