边策 金磊 发自 凹非寺
量子位 报道 | 公众号 QbitAI

论攻击科技巨头有多难?

非常容易,而且是简单到极致的那种。

只需要制造虚假的pipnpm软件包,就可以轻松攻破微软苹果特斯拉PayPalYelp等数十家科技公司服务器。

没错,就是我们再熟悉不过的那些安装命令。

这是一位名叫Alex Birsan的黑客最近发现的巨大漏洞:只要上传和科技公司内部软件包名字相同的“李鬼”,就可以让他们在不知不觉中感染恶意软件。

波及范围之广、攻击方式之简单,令人咋舌。

Birsan由此发现了30多家科技公司的存在漏洞,有两家公司已经奖励他3万美元的的bug赏金。

怎么一回事?

事情起源于2020年夏天。

另一位黑客在网上分享了一段GitHub上有趣的Node.js源代码。这段代码原来仅供PayPal内部使用。

Birsan发现,package.json文件列出了安装软件所需的各种依赖项:

其中有来自npm的公共软件包,也有PayPal内部的私有软件包(红色),后者是由PayPal内部托管,这些软件包在公共npm注册表中搜索不到。

Birsan因此产生了很多的疑问:

  • 如果有人假冒PayPal私有软件包的名字,将恶意代码上传到npm会发生什么?

  • PayPal的内部项目是否有可能因此使用假冒的软件包,而不是原来的私有软件包?

  • 系统是否会因为安装假冒软件包而运行恶意代码?

  • 如果这种攻击方法行得通,可以从中获得科技公司的漏洞赏金吗?

  • 这种攻击还会对其他公司起作用吗?

攻击方法

带着这些想法,Birsan将同名的“恶意” Node程序包上传到npm注册表,这样PayPal的程序员如果安装他们的私有软件包,就会被假的软件欺骗和替代。

当然,Birsan的“恶意软件”并不包含破坏成分,它只有一个功能,当对方使用npm安装上与原软件同名的“李鬼”时,就会发送信息通知Birsan。

“恶意软件”将返回用户名、主机名、安装路径等信息,一方面可以帮助公司安全团队根据这些信息确定可能受到攻击的系统,同时还可以避免将Birsan的测试误认为是实际的攻击。

不过,要让安装假软件的服务器向自己发出信息并不容易。因为公司内部电脑都受到防火墙的保护,DNS渗透是解决办法。

Birsan通过DNS协议将信息发送到他的服务器,

Birsan数据经过十六进制编码,将数据伪装成DNS查询的一部分,DNS查询直接或通过中间解析器到达了他自定义的服务器。

通过这种攻击方式,他记录了每台计算机下载软件包的记录。

寻找攻击目标

有了攻击的基本计划,Birsan决定寻找更多可能的攻击目标。

首先就是把攻击的软件生态范围扩大,除了Node.js外,他还将代码移植到Python和Ruby上,这样使用PyPIRubyGems的公司也会受到影响。

接下来就是寻找各大公司的私有软件包名称。

在搜索了整整几天后,Birsan发现,可以在GitHub以及主要软件包托管服务中找到,也可以通过各种互联网论坛上的帖子。

甚至没必要那么麻烦,其实找到私有程序包名称的最佳位置,是在各家公司的javascript文件。

这和前面在package.json找到依赖项类似。同样,require()这些文件中泄漏的内部路径或调用也可能包含依赖项名称。

苹果、Yelp和特斯拉都可以通过这种方式找到。下面就是从Yelp网站上发现的依赖项。

接下来,就开始“攻击”了。

攻击结果如何?

“成功率简直让人吃惊。”

Brisan在按照上述方法进行攻击后,不禁发出这样的感慨。

他将这样的bug叫做依赖性混乱 (dependency confusion),并称已经在超过35个组织、所有三种测试编程语言中,均有发现:

有一点非常明确:非法占用有效的内部包名称,几乎成了一种万无一失的攻击方法。

绝大多数受此影响的公司,规模都是超过1000名员工的,这很可能反映出大型公司内部库的使用率很高。

并且,由于Javascript 依赖名称更容易找到,几乎75% 的已记录回调来自 npm 包,但这并不一定意味着 Python 和 Ruby 不易受到攻击:

事实上,尽管在我的搜索过程中只能识别出8个组织的内部Ruby gem名称,但其中有4个公司很容易因为RubyGems而产生“依赖性混乱”。

Brisan还举了个栗子????。

加拿大电商巨头Shopify就中过招,然后他们为了修复这个bug,特意设立了3万美元的赏金。

无独有偶,在去年8月,他向npm上产了一个Node包,这个包的代码被苹果内部的多台电脑中执行。

苹果为此也设立的3万美元的奖励,但当这位黑客向苹果反映“这个漏洞可能允许威胁参与者在苹果 ID 中注入’后门’”,苹果公司却不这么认为:

在运营服务中实现“后门”需要更复杂的事件序列。

但与此同时,苹果也确实证实,通过使用 npm 包技术,苹果服务器上的远程代码执行是可以实现的。

最后,Birsan奉劝大家不要随意尝试,因为他研究的35家公司,都有公共漏洞赏金计划或允许通过私有协议对安全性进行测试。

如果未经公司授权,请不要尝试这种测试!

大公司缘何频频中招?

看到这里,或许你也会产生疑问:

为什么会发生这种情况?

大公司在面对这样的攻击时,为何会如此脆弱?

Brisan表示,大公司不愿意透露其在“修复”过程中的细节信息,但在他与安全团队沟通过程中,却发现了些有意思的事情。

例如,造成Python“依赖性混乱”的罪魁祸首,似乎就是错误地使用了一个名为extra-index-url的“design by insecure”命令行参数。

当同时使用这个参数和pip install library,来指定你自己的包索引时,虽然达到的效果和预期差不多,但实际上 pip 在幕后做的事情是这样的:

  • 检查指定的(内部)包索引上是否存在库。

  • 检查公共包索引(PyPI)中是否存在库。

  • 以找到的版本为准进行安装。如果两个版本的软件包都存在,则默认从版本号较高的源码安装。

因此,若是将一个名为库9000.0.0的包上传到PyPI,就会导致上述例子中的依赖关系被“劫持”。

虽然这种事情是广为人知的,但若是在GitHub上搜索“extra-index-url”,就可以找到一些属于大型组织的易受攻击脚本——包括一个影响微软.NET Core组件的bug。

这个漏洞可能允许在.NET Core中添加“后门”,但不幸的是,微软并没有把这个漏洞放在“.NET错误赏金计划”的范围内。

还会有新攻击方法

对此,Brisan认为,虽然现在很多大型公司已经意识到了这个bug的存在,也在它们的基础设施中进行了修复,但还是有更多需要被发现的东西

具体而言,他相信要是存在一种更聪明的新方法来泄露内部包名称,那么将会暴露出更多更容易受到攻击的系统。

而若是寻找替代的编程语言和存储库作为目标,就会发现一些额外的“依赖性混乱”bug的攻击面。

……

如此看来,大型公司还需要在这种看似基础的漏洞上,再下点功夫了。

参考链接:

https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

推荐阅读

打击线下刷单,AI已经动手了 | WWW2021研讨会最佳论文奖

小马智行L4无人车今日量产下线,这比融资更具里程碑意义

Nature认定:中国高校论学术,中科大无悬念第一

加入AI社群,拓展你的AI行业人脉

量子位「AI社群」招募中!欢迎AI从业者、关注AI行业的小伙伴们扫码加入,与50000+名好友共同关注人工智能行业发展&技术进展

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~

黑入苹果特斯拉竟如此容易!这位鬼才的攻击方法火了,微软等35家公司一起悬赏...相关推荐

  1. 黑入苹果、特斯拉竟如此容易!这位鬼才的攻击方法火了!

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 转载自:量子位 论攻击科技巨头有多难? 非常容易,而且是简单到极致的那种. 只需要制造虚假的pi ...

  2. 无人车企哪家强?通用第一Waymo第二,苹果特斯拉进黑榜

    李杉 安妮 编译整理 量子位 出品 | 公众号 QbitAI 昨天,咨询公司Navigant Research发布了一年一度的自动驾驶技术公司排名. 在这份排名中,Navigant将公司分为领导者.竞 ...

  3. AI一分钟 | 无人驾驶技术排名:百度居中游,苹果特斯拉垫底;Google在深圳设立办公室

    一分钟AI 苹果智能扬声器HomePod的组装厂之一英业达被爆已经开始出货HomePod,首批只有100万台. 美国调研机构发布最新无人驾驶技术排行榜,百度居中游,苹果特斯拉垫底. Google证实已 ...

  4. “依赖混淆”供应链攻击现身 微软苹果特斯拉优步等超35家企业内网失陷

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 安全研究员 Alex Birsan 通过一种新型供应链攻击设法攻陷了超过35家主流企业的内网系统,包括微软.苹果.PayPal.Sho ...

  5. u盘安装centos8黑屏_u盘centos7 安装 黑屏苹果电脑怎么安装win7系统还原

    3.然后进入资料备份界面,通过勾选可以选择对"我的文档"."收藏夹"."桌面文件"进行备份,备份资料会保存到自动生成的"XBGho ...

  6. 真是疯了!3毫米厚的黑科技面料,竟能抗住-196℃极寒!

    程序君个人微信和我聊聊编程和创业的事加好友 ©程序员严选 丨为您甄选全球好物 就算里三层外三层的裹得像熊一样 竟然一点都不暖和 ... 一款用宇航服上黑科技材质,打造的神奇抗寒神器--S.KISTLE ...

  7. android beam苹果,安卓多年黑科技 苹果终于蹒跚追上_苹果 iPhone X _手机评测-中关村在线...

    安卓多年黑科技 苹果终于蹒跚追上 用"Android系统多年的黑科技,iOS现在终于用上了"这一句话来形容iOS 11.3支持刷公交卡这个行为一点也不为过.是的,早在三四年前多数A ...

  8. 造车之心不死?苹果已与至少四家公司进行谈判

    [TechWeb]4月18日消息,据路透社报道,三名知情人士表示,苹果已经与至少四家公司进行了谈判,这四家公司有可能成为其应用于自动驾驶汽车中的激光雷达(LiDAR)传感器的潜在供应商. 苹果与这四家 ...

  9. 揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司

     聚焦源代码安全,网罗国内外最新资讯! 作者:万佳 最近,一名安全研究员利用一种新颖的软件供应链攻击成功入侵了 35 家大型科技公司的内部系统,这些公司包括微软.苹果.PayPal.特斯拉.Uber. ...

最新文章

  1. 重磅 | 2017年深度学习优化算法研究亮点最新综述火热出炉
  2. 使用 ApplicationLoader 上传应用到 Appstore
  3. 1856: [Scoi2010]字符串
  4. Jquery的ajax提交成功后刷新页面
  5. 阿里云应用高可用服务公测发布
  6. hive load data inpath 空目录_hive学习笔记之四:分区表
  7. python使用全局变量的坑,要使用global
  8. C语言学习4(数据的输入与输出)
  9. GIPC2018年度中国专利代理十强
  10. 禅道程序员的10条原则--转载--为了不忘
  11. 【BZOJ 4551】【TJOI2016】【HEOI2016】树
  12. 基于Socket的.NET应用组件
  13. HaaS Python 云端一体AI 车型识别功能
  14. 使用TinyPNG的API进行图片压缩
  15. 2019年6月中国编程语言排行榜
  16. hook IE 总结
  17. 以太网没有有效的ip怎么解决
  18. 使用自定义注解实现接口的参数校验
  19. Android百度地图短链分享的使用
  20. 特斯拉充电电流设置多大_特斯拉充电时间需要多久?汽车知识介绍

热门文章

  1. 如何使用Twitter Bootstrap获得中心内容?
  2. 如何在ImageView中缩放图像以保持纵横比
  3. 谈谈js初级封装代码
  4. IIS 6.0安全增强
  5. Python-str函数
  6. Ajax学习-Ajax简介
  7. 【转】c# winform 打包部署 自定义界面 或设置开机启动
  8. 微信支付curl出错及错误码解决方案
  9. VCTransitionsLibrary –自定义iOS交互式转场动画的库
  10. c语言基础 验证ascii 码表