作者alihue (wanda wanda)
看板Soft_Job
标题[心得] 如何骇入 Apple, MS 等大公司? (转)
时间Wed Mar 31 21:59:11 2021
如何骇入 Apple, Microsoft 等大公司? (转)
原始文章:
https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
作者一直对这行指令感兴趣
pip install package_name
大部分的人不管在 pip(python) 或 npm (node) 安装套件,基本上都是相信发布者的
那如果有人恶意利用信任呢?
没有一个套件托管服务可以保证它托管的套件都是没後门的 (malware-free)
在之前的研究,对於这类的漏洞通常是基於知名套件,新增一个 typo 版本等等
The Idea
作者在 github 上发现了 Paypal 的一个 package.json 档案
https://i.imgur.com/DckciS2.png
看得出来这个档案同时含有 public 与 private packages
应该是被内部的 registry hosted
所以一个假设来了:
如果在 public registry 去上传恶意程式,并使用这些 private package name
Paypal 内部预设会不会使用在 public 的这些套件呢?
可能是 developer 或 CICD System 都可能预设使用 public registry 的套件
然後,作者发现 npm 允许在安装套件时执行任意程式码
因此作者在 preinstall script 写了些程式去取得一些主机资料
ps. 作者其实是想跟目标公司提供这些漏洞赚奖金为前提,
取得一些内部主机资料证明有骇入
然而一般大公司资安严密,怎麽会那麽容易让你把资料往外送呢?
作者利用了 DNS protocal,把偷到的主机资讯夹在 DNS query 上,
该 DNS query 直接或间接通过 intermediate resolvers
到达了自架的 authoritative name server
计画大概是这样
接下来就是如何知道内部的 private package name
除了从 github 找一些没处理好的 config 外
其实从 js 中最容易发现 (从一些公司公开的网址)
package.json 通常会随着 build,把一些相依定义包入 js 中
https://i.imgur.com/Nj6P3j5.png
然後作者就开始把这些"测试套件"依照这些 private package name
上传到 public registry
然後各大公司就.....轻易被骇入了
後续作者有得到奖金,并讲很多後续,有兴趣的再到原文续读
原文:
https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.73.26.66 (日本)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1617199154.A.FA1.html
1F:推 jerryshadow: 很酷!! 03/31 22:04
2F:推 Bencrie: 那些 repo 没用 pgp 之类的东西做验证吗 03/31 22:35
3F:推 neo5277: 前阵子docker也有 03/31 23:25
4F:推 sharku: coooooooool 03/31 23:28
5F:→ musie: 你知道这些大公司用third_party 是要人工审code的嘛.. 03/31 23:29
6F:→ musie: 而且版本都是锁定 每次更新都要人工审 03/31 23:29
7F:→ musie: 所以别傻了好吗- - 03/31 23:30
8F:→ musie: 阿阿 我没待过Apple和MS 我不知道他们没审 抱歉 03/31 23:31
9F:推 chuegou: 楼上ww 03/31 23:37
10F:推 accessdenied: 这样说的话,.net 相对安全,因为知名套件都有 stro 03/31 23:54
11F:→ accessdenied: ng name 签章,除非 snk 外流,不然不可能伪造 03/31 23:54
12F:→ dave123: 不是新招... 04/01 00:09
13F:推 viper9709: 好恐怖 04/01 00:43
14F:推 mepowerlmay: 多年前中国人就搞过...... 04/01 00:48
15F:推 mmonkeyboyy: 不是新招 04/01 00:58
16F:→ vi000246: 文中说的是私人套件 在公共平台再传一个同名的套件 04/01 01:09
17F:→ lazarus1121: 还以为是一直刷题一直刷题,拿到offer後就骇入了 04/01 01:20
18F:推 pornstar: 不错, 但这跟30分钟解完2题Leetcode medium哪个难? 04/01 04:09
19F:推 taipoo: 酷 04/01 04:19
20F:推 brianhsu: 我们公司现在就准备不能直接用外部 maven repo 了,都要 04/01 08:01
21F:→ brianhsu: 用公司自己的 mirror,应该也是为了要防类似的问题。 04/01 08:01
22F:→ shooter555: 原来是这样 我以为大家都是用内部私有的repo 04/01 09:21
23F:→ ssccg: 本来就都该用私有审过内容的repo,但是总是有为了方便就... 04/01 14:06
24F:→ alihue: 会自己审的公司不多啦 毕竟套件那麽多有些又很肥,没那个 04/01 14:16
25F:→ alihue: 高手又没那个钱做不来 04/01 14:16
26F:→ alihue: ex. react.js 04/01 14:18
27F:推 luweber88: 之前学vuejs的时候就有看到一系列相关文章,主要是说尽 04/02 00:19
28F:→ luweber88: 管是开源,但若npm里面包什麽malware还是少有人check 04/02 00:19