從一個錢包被盜的案例 探討Web3的安全指南

2022-01-07 15:01:47

道路千萬條,安全第一條:

1)不要共用密鑰 

2)密鑰離线保存

3)开發和測試分开(空投和主账號隔離)

4)不要下載來歷不明的軟件 

5)立即檢查授權

6)進行授權前,對合約安全進行確認

7)擼空投和福利的時候注意安全 

8)警惕Discord來路不明的人和軟件

注: 本號不推銷任何意義上的商業產品,不提供任何投資建議,不接任何PR需求。本文不構成任何投資上的建議。

*本號文章歡迎大家轉發。

作者 | Chris 阿法兔

事件

2022年元旦假期的某個早上,小C准備寫代碼,繼續測試web3js的鏈上合約交易。突然發現自己的測試账號(bsc鏈 )在metamask歸零了,明明前一晚账戶內還有100USD,然後查完轉账就發現:

錢都沒了,錢哪去了??

背景

技術出身的小C,最近在學習區塊鏈开發。本身是專業开發者,已經很謹慎小心了,通常都是在測試網絡上跑,跑完之後,再會去正式網絡上部署,但是沒有意識到整個產業目前還處在相對混亂的階段,麻痹大意,順手習慣導致造成了損失。

損失是如何造成的?

2021年的最後一天,小C偶然看到一個账號很有趣(這個账號有很多活躍的交易),就追蹤了他的一些鏈上交易,然後看到了一個非常有意思的項目(有很高的年化收益率),然後就鬼使神差地連上了自己的Metamask,然後鬼使神差的進行了approve,因為一般Web3的項目就是這個流程,approve然後轉账就結束了。

但是令人驚呆的一幕出現了:點完之後,整個網站突然卡死了(其實在卡死這段時間,盜取者就把錢轉走了),沒有任何反應,小C當時沒當回事,把站點給關了,去做其他事情了。

過了大概一天,小C重新回來开發的時候,發現账上的錢全部沒有了,去查了歷史記錄,發現账上的余額已經被全部轉走

回顧過程

盜取者是怎么把小C账戶上的錢都轉走的?

現象:只要你approve了,不需要私鑰理論上也可以把對應的錢全部轉走。

小C進行了下溯源,大概是在一個釣魚網站的approve出了問題,於是追溯該轉账記錄。


      從一個錢包被盜的案例 探討Web3的安全指南

如圖,可以看到,先是approve(授權)了一個合約,授權了釣魚合約能夠對账號裏面BUSD進行操作,而且是沒有數量限制的。

為什么會是BUSD呢?小C回憶了一下,一進入這個釣魚站點是默認選了busd,估計在瀏覽站點鏈接錢包之後,盜取者就已經篩選了出了账號裏面錢最多的token了。

然後當小C以為這是一個新的swap合約,並且有很高的年化收益,准備先試試的時候,按照常規流程就進行approve。approve結束後,網站直接卡了。

後來經過追溯,大概在授權之後幾十秒,合約就直接觸發了一個轉账操作,直接把BUSD token給轉走了。

後來去查了一下授權的信息


      從一個錢包被盜的案例 探討Web3的安全指南

基本上metamask默認授權的時候是

ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

轉換成數字,我們認識的就是 1.157920892373162 乘以 10 的 59 次方。基本上就可以理解為無限量轉账了,也就是這個授權的操作,可以讓這個合約無限量的操縱我账號的token。看到這裏感覺背後一涼,因為以前點過很多次approve都是不會去看的。

然後黑客操縱一個可以控制這個合約方法的錢包地址,就發起合約轉账方法,把錢轉走了。所以小夥伴之後點metamask授權的時候一定要小心

小C查了下,盜取者現在這個账號裏大概已經有了3w美金的token了,現在還有源源不斷的受害者在轉錢。但是面對區塊鏈沒有辦法,根本無法找不到這個黑客是誰。

出現問題的環節

問題到底出在哪裏?

因為最近在學習區塊鏈。小C大概理了一下這個釣魚的邏輯方式,害人之心不可有,防人之心不可無。大家有興趣可以了解一下:

  • 正常轉账

案例一:直接用戶間轉账 A用戶向B用戶轉账BUSD

合約正常會檢查以下邏輯

1)判斷A用戶账戶余額是否有足夠的錢 2)是否是A用戶發起的轉账

流程如下圖


      從一個錢包被盜的案例 探討Web3的安全指南

  • 正常合約兌換

就是我們平時使用pancakeswap、uniswap等兌換時候的流程

案例二:通過swap進行token兌換 A用戶進行token兌換(BUSD兌換WBNB)流程 合約進行判斷:

1)A用戶账戶余額是否有足夠的BUSD,(假設已經授權swap合約可以操作A账戶的BUSDtoken)

2)swap合約取A账戶下的500BUSD放入swap的合約池中(假設匯率是1:500)

3)成功後合約再向A账戶轉入1BNB

注意第2)3)點,是由合約控制token進行操作。那么也就是說合約可以繞過我們直接發起對我們账號下的token的操作。


      從一個錢包被盜的案例 探討Web3的安全指南

  • 釣魚合約

先看這張溯源圖?


      從一個錢包被盜的案例 探討Web3的安全指南

正常的轉账,轉账方和合約執行的轉账方應該是同一個人,即上圖(1)與(2)應該是由同一個人發起的。而我被轉账的這筆交易,這兩個不是同一個地址。推測應該是由一個可以執行釣魚合約的錢包地址控制執行了合約,然後將我授權給釣魚合約裏的BUSD轉走了。

去查看釣魚合約,不出意料釣魚合約是一個加密的合約。不過想一下也不難,稍微學過Solidity的人都知道,在合約定義的時候,多設置幾個Admin或者Owner就可以了。

所以以後一定要注意項目方的背書,不要隨便給不知道的項目授權!!!

安全建議

因為這件事,小C搜了一些有用的建議和方法,也看到了很多血淋淋的教訓。

這裏列出來一些方法大家可以根據自己的需要選擇。

1)不要共用密鑰

之前看有帖子說一個助記詞生成多個账號的,這種我不建議哈,因為很可能被一鍋端。

2)密鑰離线保存

因為現在有很多剪貼板工具輸入法會將你的剪貼板記錄上傳到雲端,如果你直接復制了,如果雲端泄漏,你的密鑰就直接無了。我的建議就是生成之後,第一時間抄到本子上。當然抄到本子上,你也可以參考我對密鑰自己的字典加密,比如a用1代替,b用2代替,1用a代替,這樣就可以保證即使有人看到了你的紙質密鑰,也不能動你的數字資產。

3)开發和測試分开(空投和主账號隔離)

安裝2個瀏覽器,一個可以是chrome,一個是brave。一個管理你的主錢包。另外一個可以參與領取空投,各種鏈上操作等

4)不要下載來歷不明的軟件

不要去用baidu這些下載來歷不明的軟件,我看到有案例是下載盜版metamask,直接破產的。一定要去正規的地址下載,有條件的可以參考google play。chrome web store等

5)立即檢查你的授權

檢查的網址有下面幾個,debank沒有开源,但是UI交互比較好,後續的有开源的,大家自己抉擇吧。

https://debank.com/

https://approved.zone/

https://tac.dappstar.io/

https://ethallowance.com/


      從一個錢包被盜的案例 探討Web3的安全指南

看到圖上所示,基本上就是無限的。

每次喚起metamask的時候一定要多看看授權,不要像我現在這樣無腦點授權下一步。

6)進行授權前,對合約安全進行確認

https://www.slowmist.com/service-smart-contract-security-audit.html

可以使用慢霧的合約審計功能。

也可以看看該合約是否开源,如果开源的話需要確認該合約是否是可升級合約等等。

7)擼空頭和福利的時候注意安全

用小號去領取,別用大號,授權的時候可以設置額度!!!

8)警惕社工的入侵,小心Discord私聊你的陌生人

比如discord或者telegram,有人跟你認識幾天,說要帶你賺錢拿空投,讓你安裝他發給你的軟件並登錄,這種99.99%你會血本無歸。账號被盜。

特別地,Discord裏面,進nft的官方discord,會有人私聊你,告訴你獲得了白名單,附帶一個mint鏈接。騙子會把頭像和名稱改成官方的樣子,其實是把他和你拉了一個組來實現的。其實只要不貪,這種騙局還蠻好識破的,一般會告訴你在幾個小時內mint,數量1-10。很多大熱項目一個白名單mint一兩個不錯了,這一上來頂格10個還帶時間限制。

還有,會有騙子模仿項目官網做個假網站,私信給項目Server裏的人,讓他們來mint.

還有小夥伴在opensea买了假NFT 後來發現不是官方的 然後過了幾天那個NFT就從账戶消失了 然而?已經扣了...(怎么發現的?看鏈條 還有官方discord 發了官方Opensea網址 )

還有假的collab.land騙錢包密碼,給大v空投然後號稱大v买了那個nft/token.

新的一年到來,大家一定要注意安全呀,希望看到本文的朋友都能平平安安順順利利!

*本文感謝作者Chris,

感謝Free、即本聰、JulzW、大K快跑啊、阿猛先生的補充。

*本文僅為科普使用,不構成任何投資上的建議。

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

    推薦文章

    btc日內再次下跌 短线應當如何處理?

    盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

    加密蓮
    66 1個月前

    7月23日、BTC(合約)ETH(合約)行情分析及操作策略

    昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

    倪老師
    66 1個月前

    幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

    幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

    幣圈院士
    58 1個月前

    7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

    7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

    168超神
    65 1個月前

    悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

    一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

    我是周悅盈
    56 1個月前

    btc完美盈利 晚間波動較大注意

    昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

    加密蓮
    59 1個月前