撰文:Thinking@慢霧安全團隊
事件背景
分析源自一筆轉賬金額10wUSDT,手續費卻高達7,676枚ETH的天價手續費交易。https://etherscan
將int轉成Hexhttps://github
判斷是否可以被2整除,如果不行需要在字符開頭添加一個0,這里主要是為了能夠成功的將數據2個1組寫入到buffer。https://github
if(a
returna;}
以出錯的示例數據:33974229950.550003進行分析,經過intToBuffer函數中的intToHex和padToEven處理后得到7e9059bbe.8ccd,這部分瀏覽器js和nodejs的結果都是一致的。
慢霧:利用者通過執行惡意提案控制了Tornado.Cash的治理:金色財經報道,SlowMist發布Tornado.Cash治理漏洞解析。 5月20日,Tornado.Cash遭受了治理攻擊,利用者通過執行惡意提案控制了Tornado.Cash的治理。5月13日,利用者發起了20提案,并在提案中說明20提案是對16提案的補充,具有相同的執行邏輯。但實際上,提案合約多了一個自毀邏輯,其創建者是通過create2創建的,具有自毀功能,所以在與提案合約自毀后,利用者仍可以部署不同的以與以前相同的方式將字節碼發送到相同的地址。不幸的是,社區沒有看到擬議合約中的犯規行為,許多用戶投票支持該提案。
在5月18日,利用者通過創建具有多個交易的新地址,反復將0代幣鎖定在治理中。利用提案合約可以銷毀并重新部署新邏輯的特性,利用者在5月20日7:18(UTC)銷毀了提案執行合約,并在同一地址部署了一個惡意合約,其邏輯是修改用戶在治理中鎖定的代幣數量。
攻擊者修改完提案合約后,于5月20日7:25(UTC)執行惡意提案合約。該提案的執行是通過 Delegatecall 執行的,因此,該提案的執行導致治理合約中由開發者控制的地址的代幣鎖定量被修改為 10,000。提案執行完成后,攻擊者從治理庫中解鎖了TORN代幣。金庫中的TORN代幣儲備已經耗盡,同時利用者控制了治理。[2023/5/21 15:17:00]
不一致的地方是在newBuffer的操作:
慢霧創始人:去年11月14日-23日期間使用TrustWallet瀏覽器擴展創建的錢包存在風險:4月22日消息,慢霧創始人余弦在社交媒體引用Trust Wallet公告表示,若用戶使用TrustWallet瀏覽器擴展且在2022年11月14日-23日期間創建了錢包,則該錢包將存在風險。本質原因是當時TrustWallet瀏覽器擴展使用的MT19937偽隨機數生成器沒有提供足夠的隨機性,導致私鑰可以被破解。[2023/4/22 14:20:28]
newBuffer(padToEven(hex.slice(2)),'hex');
處理方式分析:瀏覽器js
通過webpack打包好js文件并對文件進行引用,然后在瀏覽器上進行調試分析。
首先輸入的示例字符33974229950.550003會進入到intToBuffer的函數中進行處理。
慢霧:警惕針對 Blur NFT 市場的批量掛單簽名“零元購”釣魚風險:金色財經報道,近期,慢霧生態安全合作伙伴 Scam Sniffer 演示了一個針對 Blur NFT 市場批量掛單簽名的“零元購”釣魚攻擊測試,通過一個如圖這樣的“Root 簽名”即可以極低成本(特指“零元購”)釣走目標用戶在 Blur 平臺授權的所有 NFT,Blur 平臺的這個“Root 簽名”格式類似“盲簽”,用戶無法識別這種簽名的影響。慢霧安全團隊驗證了該攻擊的可行性及危害性。特此提醒 Blur 平臺的所有用戶警惕,當發現來非 Blur 官方域名(blur.io)的“Root 簽名”,一定要拒絕,避免潛在的資產損失。[2023/3/7 12:46:39]
動態 | 慢霧發布有關IOTA用戶Trinity錢包被盜幣攻擊的推測:IOTA 因為近期不少用戶的 Trinity 錢包被盜幣攻擊,為了阻止攻擊繼續、調查與修復具體原因,主網協調器都暫停運行了。這是一個被低估的經典攻擊,官方沒披露具體攻擊細節,但通過慢霧的分析,可以做出某些重要推測,首先可以明確的幾個點:1. 不是 IOTA 區塊鏈協議的問題,是 IOTA 的 Trinity 桌面錢包的問題(官方說的,且先相信)2. 這款桌面錢包基于 Electron(一個使用 JavaScript 為核心構建桌面應用的框架),意味著核心代碼是 JavaScript 寫的3. 在做該做錢包新舊版本代碼的 diff 分析時,發現去除了之前內置的一個交易所功能模塊 MoonPay,這其中關鍵點是去掉了一段可怕的代碼:const script = document.createElement('script');
script.src = 'https://cdn.moonpay.io/moonpay-sdk.js';
document.write(script.outerHTML);如果這個第三方 JavaScript 鏈接主動或被黑作惡,那該桌面版錢包就可以認為是完全淪陷了。到這,慢霧很有理由相信這是個很大的定時炸彈,如果這個定時炸彈是真的炸了,那很吻合官方的一些說辭與解釋,如:盡快升級新版本的 Trinity 桌面錢包,盡快改密碼,盡快轉移資產到安全種子里等等。且看官方的后續披露。[2020/2/19]
同步分析intToBuffer的處理過程,這部分和」關鍵代碼分析「部分的代碼邏輯是一樣的,處理轉換部分得到的結果是7e9059bbe.8ccd。
聲音 | 慢霧:99%以上的勒索病使用BTC進行交易:據慢霧消息,勒索病已經成為全球最大的安全威脅之一,99%以上的勒索病使用BTC進行交易,到目前為止BTC的價格已經漲到了一萬多美元,最近一兩年針對企業的勒索病攻擊也越來越多,根據Malwarebytes統計的數據,全球TO B的勒索病攻擊,從2018年6月以來已經增加了363%,同時BTC的價格也直線上漲,黑客現在看準了數字貨幣市場,主要通過以下幾個方式對數字貨幣進行攻擊:
1.通過勒索病進行攻擊,直接勒索BTC。
2.通過惡意程序,盜取受害者數字貨幣錢包。
3.通過數字貨幣網站漏洞進行攻擊,盜取數字貨幣。[2019/8/25]
接下來分析如何將轉換后的字符填充進入的buffer中,通過這步可以得到buffer的內容是126,144,89,187,14,140,205對應的是7e,90,59,bb,e,8c,cd。
>0x7e->126>0x90->144>0x59->89>0xbb->187>0xe->14>0x8c->140>0xcd->205
這里發現e.這部分的小數點消失了,于是開始解小數點消失之迷,追蹤到hexWrite這個函數,這個函數會將得到的數據2個一組進行切分。然后用了parseInt對切分后的數據進行解析。
然而parseInt('e.',16)->14===parseInt('e',16)->14消失的小數點被parseInt吃掉了,導致最終寫入到buffer中的數據發生了錯誤,寫入buffer的值是7e9059bbe8ccd。
處理方式分析:nodejs
由于瀏覽器上出問題的是7_**__**_e9059bbe.8ccd在寫入buffer的時候小數點被parseInt吃掉了導致數據出錯,但是經過分析,node的數據也是錯誤的,且產生錯誤的原因是和瀏覽器的不一樣。
首先我們先看下如下的示例:
node三組不同的數據填充到buffer得到的結果居然是一樣的,經過分析node的buffer有個小特性,就是2個一組切分后的數據,如果沒法正常通過hex解析的,就會把那一組數據以及之后的數據都不處理了,直接返回前面可以被正常處理的那部分數據。可以理解為被截斷了。這部分可以參考node底層的buffer中node_buffer.cc中的代碼邏輯。
>newBuffer('7e9059bbe','hex')>newBuffer('7e9059bbe.8ccd','hex')>newBuffer('7e9059bb','hex')
執行結果的比較
node由于會將原始數據7e9059bbe.8ccd中的e.及之后的數據進行截斷,所以最終錯誤的值是7e9059bb,相比正確的值07e9059bbe小。
node的執行結果:
瀏覽器由于會將原始數據7e9059bbe.8ccd中的.吃掉,所以最終錯誤的值是7e9059bbe8ccd,相比正確的值07e9059bbe大很多。
瀏覽器的執行結果:
問題的原因
ethjs-util的intToBuffer函數不支持浮點型的數據,且在這個函數中沒有判斷傳入的變量類型,來確保變量類型是預期內的。由于ethereumjs的toBuffer引用了ethjs-util的intToBuffer進行處理,也沒有對數據進行檢查。導致了這次事件的發生,所幸最終善良的礦工歸還了「天價手續費7626ETH」。
吸取的教訓
從第三方的庫的角度來看,在編碼過程中應該要遵循可靠的安全的編碼規范,在函數的開頭要對傳入的數據進行合法性的檢查,確保數據和代碼邏輯是按照預期內執行。
從庫的使用者的角度來看,使用者應該要自行閱讀第三方庫的開發文檔和對接文檔,并且也要對代碼中接入第三方庫的邏輯進行測試,通過構造大量的數據進行測試,確保業務上能夠正常按照期望執行,保證高標準的測試用例的覆蓋率。
參考資料:https://github.com/ethereumjs/ethereumjs-monorepo/issues/1497https://blog.deversifi.com/23-7-million-dollar-ethereum-transaction-fee-post-mortem/https://www.chainnews.com/news/611706276133.htm
據網信無錫微信公眾號消息,近日,無錫市現代產業發展領導小組辦公室下發了《關于印發<無錫市關于加快區塊鏈技術應用和產業發展的實施意見>的通知》.
1900/1/1 0:00:00巴比特訊,9月14日,歐科云鏈OKLink宣布與TokenPocket錢包達成數字資產安全戰略合作.
1900/1/1 0:00:00據新京報消息,中國人民銀行副行長范一飛表示,下一步,央行將堅持開放包容原則,從供需兩方面發力,組織持續優化數字人民幣底層業務能力和基礎技術平臺,積極對外賦能,共同打造數字人民幣生態體系.
1900/1/1 0:00:00介紹: 去中心化技術既是一種組合:一種社會和技術位的構建以形成一個功能性整體,一種組合:一種數據存儲、一種歷史記錄,以及共同創造一個大于其總和的整體.
1900/1/1 0:00:00互聯網現在是一個每個人都有庫存的地方。NFT意味著我們第一次在互聯網上擁有類似數字對象的東西。這種變化的重要性遠遠超出了目前在加密領域流行的東西。它不包含在藝術市場、收藏品甚至游戲中.
1900/1/1 0:00:00巴比特訊,ElectricCoinCo.已經與ProtocolLabs、Filecoin基金會以及以太坊基金會達成協議,以探索Halo的研發,包括如何在各自的生態系統中使用該技術.
1900/1/1 0:00:00