作者:慢霧安全團隊文章來源:慢霧科技
0概述
說到智能合約漏洞,第一時間映入腦海的可能都是算法溢出,call()函數濫用,假充值等漏洞,畢竟這是在很多智能合約上都有實例,并且危害等級也是比較高的,但是有一個漏洞也許很多人都見過、聽過卻不是很多人都關心的漏洞,它就像是人類世界的亞特蘭蒂斯,很多人知道,卻很少有研究報告,Google上能找到的,也不過只是說原理而沒有復現實戰,有點紙上談兵的感覺。大家都知道的是這是EVM層面的缺陷,而不是智能合約層面的問題,并且在我們默認的思維里面,這是一個已經被修復的漏洞。前段時間嘗試翻查短地址攻擊的官方修復方案,但是經過我的搜索,并沒有找到相關的修復方案,Github上也扒了一遍,也看不到歷史release有相關的修復,于是,我猜,真的是我猜,EVM層面可能并沒有修復。
1短地址攻擊基礎知識
短地址攻擊其實就是每個ERC20的合約里面都有一個以下的函數
Blur:借貸協議Blend可在某些特定條件下允許用戶貸款無限期保持開放狀態:金色財經報道,NFT聚合交易器Blur在社交媒體發文稱,旗下借貸協議Blend允許用戶按照當前市場利率借入ETH。但是,如果用戶借入的金額低于抵押NFT的地板價并且有一定緩沖范圍,那么其貸款可以無限期地保持開放狀態。此外,Blur透露已經有用戶發現了這一點,并且通過抵押Azuki NFT以0利率貸款了一個多月。[2023/6/21 21:52:33]
當對合約的這個函數進行調用的時候,其實在EVM層面來說是傳入一串字節碼,就像下圖這樣,可以在Etherscan里面查看每筆交易的inputdata里面的整個函數的調用數據
傳入的字節碼一共有136字節(正常來說),里面包含方法的簽名(前4字節),和傳入的參數值。上面這個圖是不正常的,只有134字節,這是我經過特殊處理過的,下面我會詳細說
從上面的信息我們可以知道,EVM是根據字節碼識別傳入的參數的,字節碼是多少就是多少,也不會去驗證。巧了,就是這樣,漏洞就產生了,有人就想用不合法的地址,比如地址故意寫少后幾位,看看EVM會怎么處理,但是又巧了,EVM不僅不會報錯,還會「貼心」的幫你對地址進行補全操作,怎么補全的呢?就是將地址后面不足的部分,用金額數據部分的位數來補全,比方說你的地址本來是
MULTI短時突破4.7美元,日內漲幅達到26%:金色財經報道,行情顯示,MULTI短時突破4.7美元,現報4.62美元,日內漲幅達到26%,行情波動較大,請做好風險控制。
社區用戶反饋,部分用戶在 Multichain 的跨鏈資金已于今日陸續成功到賬。[2023/6/5 21:16:41]
結果由于你心機叵測,故意寫少兩個0,變成下面這樣
那么「貼心」的EVM就會從字節碼中的金額數據部分取兩位對地址進行補全,而金額數據部分的前兩位又恰好是0,那么就是說你的地址還是原來的地址,但是數據部分就少2位了,怎么辦呢?這就不符合ABI的字節數啦,沒關系,「貼心」的EVM會將你的金額數據部分從末位開始補0,補到為正常的136字節為止,那么有同學就要問了,如果我的地址有6個0,那么我地址故意寫少6個0,是不是數據部分就多了6個0?那不是發財了?
答案就是:你是對的
也就是說,本來填的數據是1,變成字節碼后是0x1,如果地址少了6個字節,那么你的data就自動變成0x1000000啦!驚不驚喜,意不意外!
美聯儲宣布加息25個基點,符合市場預期:金色財經報道,美國聯邦儲備委員會結束為期兩天的貨幣政策會議,宣布上調聯邦基金利率目標區間25個基點到4.50%至4.75%之間,加息幅度符合市場預期。這是美聯儲自去年3月開啟本輪加息周期以來連續第八次加息,累計加息幅度為450個基點。本次加息后,美國基準利率水平再次刷新2008年金融危機以來的峰值。[2023/2/2 11:41:52]
2第一次出師
第一次我嘗試使用remix進行復現,但結果是能預料到失敗的,如下圖,為什么呢?因為這是一個在2017年就被爆出的漏洞,修復方案滿天飛,怎么可能那么簡單的就讓你成功了呢,所以前端肯定會對你的輸入的地址進行過濾和檢查,想成功,是naive的。
但是作為一個搞事情的人,怎么可以輕言放棄,既然沒有找到官方修復方案,底層肯定就還有問題的,于是乎,我只能從最底層開始進行操作,我想到了使用web3進行漏洞復現
3環境準備
距以太坊合并還剩20,000個區塊:金色財經報道,最新數據顯示,當前距離以太坊合并還剩20,000個區塊,預計剩余時間為3天7小時46分鐘。[2022/9/12 13:23:50]
操作系統:macOSnode:v8.11.0web3:1.0.0-beta.36rpc:infura測試合約的abi示例合約:
使用remix在測試網部署示例合約,獲取合約的地址,下面會用到獲取abi的方法:
4第二次出師
注:(??本次所有操作均在命令行中執行)
鍵入node進入命令行提示符在項目中引入web3并設置provider
創建合約實例:
構造方法abi,也就是構造我們上面說的交易里面的inputdata,由于我們是要構造短地址攻擊,所以我們的地址是要比正常的地址的位數要少的,為的就是要讓EVM用零自動補全缺失的地址,但是正常的構造是會失敗的,例如下圖這樣
報告:Nomad跨鏈橋事件中有88%的攻擊地址是“模仿者”:8月11日消息,Coinbase在博客文章中對上周Nomad跨鏈橋黑客攻擊事件進行了分析,根據該文章,參與此次攻擊的地址中,88%的地址已被確定為“模仿者”,在8月1日盜取了總價值8800萬美元的代幣。“模仿”方法是原始漏洞利用的變體,該漏洞利用了Nomad智能合約中的一個漏洞,允許用戶從不屬于他們的跨鏈橋中提取資金。模仿者復制相同的代碼,但修改目標代幣、代幣數量和接收地址。就提取的資金總額而言,前兩名黑客是盜取的資金最多。由于wBTC、USDC和wETH代幣在Nomad跨鏈橋中的集中度最高,最初的黑客首先攻擊的是Bridge的wBTC,其次是USDC和wETH。
截至8月9日,從Nomad跨鏈橋合約中被盜的17%的資金已歸還,大部分歸還發生在Nomad跨鏈橋要求于8月3日將資金發送到回收地址后的幾個小時內,而最近幾天的速度比最初發布地址時要慢。34%的被盜資金尚未移動, 49%的被盜資金已從攻擊地址轉入其他地方。[2022/8/11 12:18:05]
但是,再次聲明一下,作為一個搞事情的人,不能輕言放棄!于是我們需要一點特別的方法,一開始的時候我到了這里就以為會有檢測就不行了,太天真,其實是web3的檢測,我們需要一點特別的方法。這個方法分為兩步
第一步,先構造正常的abi,這次使用的地址是'0xdfca6234eb09125632f8f3c71bf8733073b7cd00'
如圖,現在的abi,也就是inputdata,是136字節的。
第二步:使用一個小技巧,將abi里面地址后面的兩個零偷偷抹掉,本來是136字節的,現在只有134字節了,也就是我上面說到的不正常的inputdata,就是在這個時候構造出來的
以上就是把零抹掉之后的abi
ok,一切都準備好之后就可以到最激動人心的時刻了
在項目中引入ethereumjs-tx
導入你的私鑰并做一些處理:
構造原始交易數據,這是一筆十分原生的以太坊交易數據,每一次的合約調用,其實都會構造下面這一個數據。有關這方面的知識也不詳細展開,但是,除了nonce我們是不怎么了解之外,其他都是我們在remix上調用合約的時候會接觸到的,有關于nonce的說明,其實就是帳號所發送的交易數量,比方說你的帳號曾經處理過5筆交易,那么nonce就等于4,可以在ehterscan上查看到你的帳號的最后一筆交易的nonce,以下是具體的交易數據:
對交易進行簽名和對交易做一點處理
發送交易
5奇跡再現
通過預先設置的event事件我們可以看到,EVM成功補零,輸入本來是123,但是EVM提取的結果卻是31488,本來的16進制123是0x7b,現在是0x7b00!刺激!
6后記
「貼心」的我在測試網上也布了合約,而且我還驗證了,可以在鏈上查詢記錄,眼見為實。https://kovan.etherscan.io/address/0x6e2f32497a7da13907831544093d3aa335ecbf33#code
這次的操作,不禁使我想起了飛躍瘋人院里面的那句話--ButItried,didn'tI?Goddamnit,atleastIdidthat.
7參考資料
web3js1.0接口方法(中文手冊)http://cw.hubwiz.com/card/c/web3.js-1.0/1/2/21/
短地址攻擊詳解https://zhuanlan.zhihu.com/p/34470071
有關ABI的詳細信息在這里https://solidity-cn.readthedocs.io/zh/develop/abi-spec.html
來源鏈接:mp.weixin.qq.com
本文來源于非小號媒體平臺:
慢霧科技
現已在非小號資訊平臺發布1篇作品,
非小號開放平臺歡迎幣圈作者入駐
入駐指南:
/apply_guide/
本文網址:
/news/3627019.html
以太坊ETH
免責聲明:
1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場
上一篇:
阿聯酋證券監管機構批準了規范ICO的計劃
下一篇:
澳大利亞新南威爾士州將數字駕駛執照上鏈
Tags:ETHNOMADNOMWEB3ethylenepropylenenomad幣交易所nomc幣價格ALFweb3Project
韓國海關當局正在尋求采用三星的區塊鏈技術支持分散通關系統。三星集團的IT部門三星SDS周五表示,韓國海關已簽署了一份諒解備忘錄,將三星的Nexledger區塊鏈用于新平臺.
1900/1/1 0:00:00一家網站的主要收入來源是廣告,如果沒有人點擊廣告,就等于沒有收入。尤其是一些內容流量網站,就靠著廣告活著。但是廣告能給網站帶來的收入畢竟有限,窮則思變,他們開始盯上了虛擬貨幣.
1900/1/1 0:00:00作者丨萊道君 來源丨萊道區塊鏈 新浪財經19日某自媒體消息,在比特幣一路浩浩蕩蕩的沖擊8000美元的時刻,北京云集隱居四合院見到了一群排隊的場景,在隊列前方是一個比特幣取款機.
1900/1/1 0:00:00加密貨幣漏洞獎勵方面的支出越來越高了。Coinbase、EOS、Stellar以及Augur等平臺近段時間都獎勵了發現安全漏洞的白帽黑客一大筆錢.
1900/1/1 0:00:00KCon2018黑客大會在經過首日高質量的閉門培訓,以及兩天干貨議題分享之后,于8月26日晚圓滿落下帷幕.
1900/1/1 0:00:00文|梁雨山陳向明 出品|火星財經APP 最明顯的例子是,加密貨幣從下跌中恢復的速度越來越快。以過去一周為例,比特幣在周五下跌超過10%,導致幣市全面回調.
1900/1/1 0:00:00