今天發現駭客ionet的所有設備被竄改,引發恐慌。駭客主要利用io.net安全意識薄弱,透過工作流程中的漏洞進行攻擊,包括資料抓取、初始化、資料提取和回報。駭客利用未授權的上報接口,向Redis和Postgresql寫入數據,並修改前置頁面展示和查詢速度。駭客也透過取得USER_ID和DEVICE_ID來手動上報設備。 io.net的安全漏洞導致駭客輕易進行攻擊,但並未影響錢包和認證部分。推測駭客選擇今天攻擊可能與昨天io.net鏡像中增加POW驗證有關。該漏洞已被官方修復。
今天看到有駭客ionet的所有設備都改了,看到大家很恐慌,其實這並不難,主要還是io自己的安全意識太差了
大概講他是怎麼做的。
IO的工作流程
首先將IOworker的工作流程進行分析,其實主要是三個部分,分別是資料抓取上報Uptime(不過在新版本中已經被下掉了)
初始化
在一開始啟動的時候,io.net 會去Secret 的API 請求非常多的配置信息,這裡包含了最新的鏡像,啟動命令,各個API 調用的AuthKey。
數據抽取部分
資料提取的部分包和代碼
內容很簡單,主要是一系列設備資訊的摘要,也可以在容器的/tmp/scrape_metrics.json 中看到摘要的結果。
數據上報
/tmp/scrape_metrics.json
然後就是資料上報,這也是駭客主要用的手段,他會分別往兩個DB中寫入一個數據,分別是Redis和Postgresql。
Postgresql的資料插入
其次是Redis的Put和修改,這裡主要是前置頁面的現實和查詢速度,這也是駭客的主要修改目標之一,這個介面比較簡單,只需簡單的設備ID就可以了
Redis 的修改以及TTL 的覆蓋
以上是關於IO.net 的Worker 是如何運作的主要流程。
駭客是如何污染用戶其他的
這裡其實剛才提到的,io.net自己的安全意識不足,上述的上報接口中,其實是基本沒有做鑑權的,你只需要拿到USER_ID和DEVICE_ID,就手動上報設備,當然這個可以也是為什麼之前能加這麼多設備的原因,因為一個HTTP呼叫就夠了
設備上報介面
這裡要點要提供USER_ID 和DEVICE_ID 就可以往官方插入一個新的設備,然後就是如何取得這些資訊的問題了
取得設備ID
在官方的Explore 中,是可以看到所有Device 的資訊的,透過抓介面探索,我們也可以取得所有的DEVICE_ID 的
取得用戶ID
注意:該方式已回饋給官方安全團隊並已於前幾天修復。
這個原理非常簡單,在第一步的Worker 的初始化過程中,設備會去取得自身的狀態,例如如果是終止或其他狀態,就停止運行,這個介面在之前一直是可以取得User ID 的。
早期介面
所以,在前幾天的時候,只需要透過DEVICE_ID 就可以取得所有者的USER_ID ,
出口要拿到這兩個ID就可以分別上報對應的設備。
存取別人的網絡
這裡其實就是加入tailscale以後進行了一次nmap掃描,可以算上這是腳本小子的自嗨。
由於io.net對於網路之間的通訊使用的是Tailscale,而初始化過程中,是把AuthKey下發到設備上的,所以只需要拿到Authkey,就可以加入到網路中,因此所有權都可以做到同樣的事情。
不要擔心你的設備在沒有被使用的時候是不會加入尾部的。
總結
是否應該恐慌
就整個過程來說,其實並沒有什麼入口,只要願意的話並且有一部分網路安全知識的話,大家都可以輕易做到。
由於io.net沒有對PUT/POST的介面做Auth,導致整個表現像DB被駭了一樣,但實際上收到影響的也只有上報部分的數據,錢包和AuthN部分,看起來還是完全不用擔心的。
為什麼是今天
我個人猜測可能是因為昨天 [io.net]() 的鏡像中,增加了POW 部分的驗證,所以對於腳本小子來說,會更有味道,因此選擇在今天開始攻擊。
資訊來源:0x資訊編譯自網際網路。版權歸作者Holegots所有,未經許可,不得轉載