撰文: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的結果都是一致的。
慢霧安全預警:Nacos出現遠程代碼執行漏洞攻擊案例,請相關方及時升級:金色財經報道,據慢霧區消息,Nacos 出現遠程代碼執行漏洞攻擊案例。Nacos 是 Alibaba 開源的一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺,幫助用戶快速實現動態服務發現、服務配置、服務元數據及流量管理。Nacos 在處理某些基于 Jraft 的請求時,采用 Hessian 進行反序列化,但并未設置限制,導致應用存在遠程代碼執行(RCE)漏洞。其中,1.4.1 <= Nacos < 1.4.6,使用 cluster 集群模式運行受影響;1.4.0、2.0.0 <= Nacos < 2.2.3,任意模式啟動均受到影響。加密貨幣行業有大量平臺采用此方案,請注意風險,并將 Nacos 升級到官方最新新版本。[2023/6/9 21:25:29]
不一致的地方是在newBuffer的操作:
慢霧:BXH于BSC鏈被盜的ETH、BTC類資產已全部跨鏈轉至相應鏈:11月3日消息,10月30日攻擊BXH的黑客(BSC: 0x48c94305bddfd80c6f4076963866d968cac27d79)在洗幣過程中,多次使用了 AnySwap、PancakeSwap、Ellipsis 等兌換平臺,其中部分 ETH 代幣被兌換成 BTC。此外,黑客現已將 13304.6 ETH、642.88 BTCB 代幣從 BSC 鏈轉移到 ETH、BTC 鏈,目前,初始黑客獲利地址仍有 15546 BNB 和價值超 3376 萬美元的代幣。慢霧 AML 將持續監控被盜資金的轉移,拉黑攻擊者控制的所有錢包地址,提醒交易所、錢包注意加強地址監控,避免相關惡意資金流入平臺。[2021/11/3 6:28:49]
newBuffer(padToEven(hex.slice(2)),'hex');
DeFIL2.0智能合約已通過慢霧科技安全審計:據官方消息,DeFIL2.0智能合約已通過慢霧科技安全審計,并已發布完整審計報告。根據審計報告顯示,本次慢霧科技對DeFIL2.0包括平臺通證DFL的發行及銷毀智能合約、FIL標準算力通證FILST發行智能合約等進行了全面審計,并給出了通過慢霧安全審計,各項安全指標全部合格的結論。投資人可至慢霧科技官網輸入Token名稱(DFL或FILST)、合約地址或審計編號:NO. 0X002108300001進行查詢。[2021/9/2 22:54:03]
處理方式分析:瀏覽器js
通過webpack打包好js文件并對文件進行引用,然后在瀏覽器上進行調試分析。
首先輸入的示例字符33974229950.550003會進入到intToBuffer的函數中進行處理。
動態 | 慢霧區發布XRP假充值漏洞預警:據慢霧區披露,瑞波幣(XRP)存在假充值漏洞(類似于之前披露的 USDT 及以太坊代幣假充值漏洞),已有真實攻擊在發生,一旦攻擊成功,會非常嚴重。[2018/7/30]
同步分析intToBuffer的處理過程,這部分和」關鍵代碼分析「部分的代碼邏輯是一樣的,處理轉換部分得到的結果是7e9059bbe.8ccd。
接下來分析如何將轉換后的字符填充進入的buffer中,通過這步可以得到buffer的內容是126,144,89,187,14,140,205對應的是7e,90,59,bb,e,8c,cd。
分析 | 慢霧安全團隊提醒|EOS假賬號安全風險預警:根據IMEOS報道,EOS 假賬號安全風險預警,慢霧安全團隊提醒:
如果 EOS 錢包開發者沒對節點確認進行嚴格判斷,比如應該至少判斷 15 個確認節點才能告訴用戶賬號創建成功,那么就可能出現假賬號攻擊。
攻擊示意如下:
1. 用戶使用某款 EOS 錢包注冊賬號(比如 aaaabbbbcccc),錢包提示注冊成功,但由于判斷不嚴格,這個賬號本質是還沒注冊成功
2. 用戶立即拿這個賬號去某交易所做提現操作
3. 如果這個過程任意環節作惡,都可能再搶注 aaaabbbbcccc 這個賬號,導致用戶提現到一個已經不是自己賬號的賬號里
防御建議:輪詢節點,返回不可逆區塊信息再提示成功,具體技術過程如下:
1. push_transaction 后會得到 trx_id
2. 請求接口 POST /v1/history/get_transaction
3. 返回參數中 block_num 小于等于 last_irreversible_block 即為不可逆[2018/7/16]
>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
Tags:FERUFFBUFFINTMake A Difference TokenBuff Dogebuff幣與股票區別Spintop
周二,美國參議院銀行委員會舉行了聽證會,會上討論了CBDC和金融隱私問題。 美聯儲主席鮑威爾稱美國中央銀行數字貨幣(CBDC)的開發是“關鍵工作”,他對參議員PatToomey(R-Pa.)表示.
1900/1/1 0:00:00注:原文來自bankless,作者是WilliamM.Peaster。如果我問你,“最古老的以太坊藝術市場是什么”,你會怎么回答? 如果你的第一個猜測是在2015年7月以太坊主網啟動之后發生的事.
1900/1/1 0:00:00NFT行業也有瓜吃了。 北京時間9月15日,推特用戶Zuwu發推指責OpenSea產品負責人NateChastain?利用“老鼠倉”不當獲利.
1900/1/1 0:00:00巴比特訊,9月26日,2021區塊鏈服務網絡全球合作伙伴大會于杭州開幕,會上,BSN發展聯盟代表、杭州移動黨委書記、總經理王文生致辭表示,BSN在成立后.
1900/1/1 0:00:00北京時間7月28日,收益聚合器PolyYeld.Finance遭到攻擊,其代幣YELD歸零,攻擊者獲利25萬美元.
1900/1/1 0:00:00在薩爾瓦多,比特幣作為法定貨幣已經是第三天了。截止目前,已經有許多該法律如何運作的案例。隨著當地居民表明比特幣實施以來在國內消費是很便捷的.
1900/1/1 0:00:00