PTT推薦

[心得] 如何駭入 Apple, MS 等大公司? (轉)

看板Soft_Job標題[心得] 如何駭入 Apple, MS 等大公司? (轉)作者
alihue
(wanda wanda)
時間推噓13 推:13 噓:0 →:15

如何駭入 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

圖 如何駭入 Apple, MS 等大公司? (轉)

看得出來這個檔案同時含有 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

圖 如何駭入 Apple, MS 等大公司? (轉)

然後作者就開始把這些"測試套件"依照這些 private package name

上傳到 public registry

然後各大公司就.....輕易被駭入了


後續作者有得到獎金,並講很多後續,有興趣的再到原文續讀

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



--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.73.26.66 (日本)
PTT 網址

jerryshadow03/31 22:04很酷!!

Bencrie03/31 22:35那些 repo 沒用 pgp 之類的東西做驗證嗎

neo527703/31 23:25前陣子docker也有

sharku03/31 23:28coooooooool

musie03/31 23:29你知道這些大公司用third_party 是要人工審code的嘛..

musie03/31 23:29而且版本都是鎖定 每次更新都要人工審

musie03/31 23:30所以別傻了好嗎- -

musie03/31 23:31阿阿 我沒待過Apple和MS 我不知道他們沒審 抱歉

chuegou03/31 23:37樓上ww

accessdenied03/31 23:54這樣說的話,.net 相對安全,因為知名套件都有 stro

accessdenied03/31 23:54ng name 簽章,除非 snk 外流,不然不可能偽造

dave12304/01 00:09不是新招...

viper970904/01 00:43好恐怖

mepowerlmay04/01 00:48多年前中國人就搞過......

mmonkeyboyy04/01 00:58不是新招

vi00024604/01 01:09文中說的是私人套件 在公共平台再傳一個同名的套件

lazarus112104/01 01:20還以為是一直刷題一直刷題,拿到offer後就駭入了

pornstar04/01 04:09不錯, 但這跟30分鐘解完2題Leetcode medium哪個難?

taipoo04/01 04:19

brianhsu04/01 08:01我們公司現在就準備不能直接用外部 maven repo 了,都要

brianhsu04/01 08:01用公司自己的 mirror,應該也是為了要防類似的問題。

shooter55504/01 09:21原來是這樣 我以為大家都是用內部私有的repo

ssccg04/01 14:06本來就都該用私有審過內容的repo,但是總是有為了方便就...

alihue04/01 14:16會自己審的公司不多啦 畢竟套件那麼多有些又很肥,沒那個

alihue04/01 14:16高手又沒那個錢做不來

alihue04/01 14:18ex. react.js

luweber8804/02 00:19之前學vuejs的時候就有看到一系列相關文章,主要是說儘

luweber8804/02 00:19管是開源,但若npm裡面包什麼malware還是少有人check