在區塊鏈應用日益普及的當下,安全問題成為不可忽視的議題。本文將分享在 ReachMe.io 平臺發現的一個安全漏洞,解析如何低成本繞過系統限制與 CZ 交流。
(前情提要:Android用戶警告!竊密程式「Crocodilus」可覆蓋加密錢包誘拐私鑰 )
(背景補充:微軟警告新惡意木馬程式:鎖定攻擊OKX、Metamask等20種主流Web3錢包 )
背景
昨天,當我還在整理 APT 攻擊相關的素材時,山哥 (@im23pds) 突然激動地來到我的工位旁邊:「Thinking,我發現了一個有趣的專案,CZ 在高頻使用,我們或許可以 0 成本和 CZ Say Hi。」 於是我們迅速擬定了幾個可能的漏洞點:
- 劫持 CZ 在 ReachMe 的帳號;
- 更改 CZ 在 ReachMe 的設定;
- 不花錢給 CZ 發訊息,繞過給他發訊息要花費 1 BNB 的限制。
大約在 10 分鐘後,我們發現可以在 ReachMe.io 低成本和任意使用者 Say Hi 的漏洞,於是我們第一時間聯絡了專案方團隊,並提供漏洞驗證的詳情。專案團隊也在第一時間就迅速修復了該漏洞,同時聯絡我們進行復測。為 ReachMe 團隊認真嚴謹對待安全問題的態度點贊!
(https://x.com/SlowMist_Team/status/1905212712956665896)
此外,慢霧安全團隊很榮幸獲得了 CZ 和 ReachMe 專案方團隊的致謝。
(https://x.com/cz_binance/status/1905240886986039437)
發現過程
ReachMe.io 是一個基於 BNB Chain 的付費聊天平臺,旨在通過加密貨幣支付機制連線 KOL(關鍵意見領袖)與粉絲。使用者向 KOL 傳送私信需支付 BNB ,KOL 可獲得 90% 費用(平臺抽成 10%);若 KOL 5 天內未回覆,使用者可獲 50% 退款。
2025 年 3 月 27 日,幣安創辦人 CZ 將其 X 帳號簡介改為:「DM: https://reachme.io/@cz_binance (fees go to charity)」,即 「在 ReachMe 上 DM 我,費用將用於慈善」。
我們可以看到,和 CZ Say Hi 的成本是 1 枚 BNB,於是我們設想了一些方案,並進行嘗試,看如何繞過 1 枚 BNB 的限制來和 CZ Say Hi。
和山哥一陣研究後,我們發現 ReachMe 在給任意 KOL 傳送訊息的時候會通過 「/api/kol/message」 介面生成訊息的概要資訊,其中包含 「_id」 欄位,這個欄位是在發訊息的時候附帶到鏈上合約 Function: deposit (string _identifier,address _kolAddress) 使用,對應的是_identifier 欄位。
並且給 KOL 傳送訊息附帶的 BNB 其實就是呼叫合約 Function: deposit 附帶的 BNB 數量,於是我們構造了一筆交易,將 「Hi CZ」 的訊息對應的 「_identifier」 以及 CZ 的地址,並附帶 0.01 BNB(最低僅需 0.001 BNB)傳送給合約。
由於 ReachMe 在設計之初並沒有將 KOL 預設的發訊息成本放在合約中進行檢測(或許是為了方便 KOL 更好地隨時調整訊息的價格並且節省 Gas 費?),因此可以通過修改前端程式碼,修改網路響應包或者直接與合約進行互動來繞過 1 BNB 的限制。這是由於服務端在檢索鏈上的交易時也遺漏了訊息價格與鏈上交易的 BNB 數量的檢查。
於是我們用了大約 10 分鐘,成功繞過了和 CZ 對話要花費 1 BNB 的規則,僅花費了 0.01 BNB 就可以和 CZ Say Hi。
另外,值得注意的是,其實還有更深一步的利用,如:給 CZ 發有趣的訊息,進行魚叉釣魚?鑑於 CZ 本人影響較大,後面就放棄了這部分測試,大家也多注意安全,謹防釣魚。
總結
這類結合中心化與去中心化的產品設計,經常會出現鏈上和鏈下的安全檢查不一致的情況。因此,攻擊者可以通過分析鏈上鏈下的互動流程,繞過某些檢查限制。慢霧安全團隊建議專案方儘可能在鏈上和鏈下的程式碼中同步必要的安全檢查項,避免被繞過的可能。同時,建議聘請專業的安全團隊進行安全審計,以發現潛在的安全風險並加以防範。
📍相關報導📍
全球網路普及率最低》北韓駭客Lazarus為何這麼強?屢破各大企業安全網,拉薩路成金正恩賺錢機器發展核武