作者:慢霧安全團隊文章來源:慢霧科技
0概述
說到智能合約漏洞,第一時間映入腦海的可能都是算法溢出,call()函數濫用,假充值等漏洞,畢竟這是在很多智能合約上都有實例,并且危害等級也是比較高的,但是有一個漏洞也許很多人都見過、聽過卻不是很多人都關心的漏洞,它就像是人類世界的亞特蘭蒂斯,很多人知道,卻很少有研究報告,Google上能找到的,也不過只是說原理而沒有復現實戰,有點紙上談兵的感覺。大家都知道的是這是EVM層面的缺陷,而不是智能合約層面的問題,并且在我們默認的思維里面,這是一個已經被修復的漏洞。前段時間嘗試翻查短地址攻擊的官方修復方案,但是經過我的搜索,并沒有找到相關的修復方案,Github上也扒了一遍,也看不到歷史release有相關的修復,于是,我猜,真的是我猜,EVM層面可能并沒有修復。
1短地址攻擊基礎知識
短地址攻擊其實就是每個ERC20的合約里面都有一個以下的函數
幣安駁回CFTC訴訟的最后期限被延長至10月23日:金色財經報道,幣安首席執行官趙長鵬和前首席合規官Samuel Lim試圖駁回美國商品期貨交易委員會(CFTC)的訴訟。法院允許被告在7月27日之前單獨提出支持駁回訴訟的動議。然而,法院已將原告(CFTC)訴訟的最后期限延長至9月22日,從而推遲了幣安以法院缺乏管轄權為由駁回訴訟的計劃。此外,幣安可以在10月23日之前回復CFTC的回復,將回復限制在35頁以內。
與此同時,當雙方提出駁回訴訟的動議時,管轄權開示為“保留”。這意味著,在幣安和CFTC都提出動議之前,訴訟將繼續在法院進行,訴訟可能會延長到明年。
幣安還面臨美國司法部的調查,并且訴訟可能迫在眉睫,因為美國證券交易委員會和美國商品期貨交易委員會的訴訟通常與司法部的訴訟一起提起。[2023/7/27 16:02:14]
當對合約的這個函數進行調用的時候,其實在EVM層面來說是傳入一串字節碼,就像下圖這樣,可以在Etherscan里面查看每筆交易的inputdata里面的整個函數的調用數據
Patrick McHenry:Gensler反對現貨比特幣ETF是想扼殺加密貨幣在美國的發展:7月1日消息,美國眾議院金融服務委員會主席Patrick McHenry針對“美國證券交易委員會(SEC)稱貝萊德、富達投資等資管公司提交的現貨比特幣ETF的申請文件并不充分”發表意見稱,如果這些報告是準確的,SEC主席Gary Gensler需要進行解釋,ETF將為日常投資者提供受SEC監管的產品。Gary Gensler反對的唯一原因是他想徹底扼殺加密貨幣在美國的發展。[2023/7/1 22:11:34]
傳入的字節碼一共有136字節(正常來說),里面包含方法的簽名(前4字節),和傳入的參數值。上面這個圖是不正常的,只有134字節,這是我經過特殊處理過的,下面我會詳細說
從上面的信息我們可以知道,EVM是根據字節碼識別傳入的參數的,字節碼是多少就是多少,也不會去驗證。巧了,就是這樣,漏洞就產生了,有人就想用不合法的地址,比如地址故意寫少后幾位,看看EVM會怎么處理,但是又巧了,EVM不僅不會報錯,還會「貼心」的幫你對地址進行補全操作,怎么補全的呢?就是將地址后面不足的部分,用金額數據部分的位數來補全,比方說你的地址本來是
NFT公司Nemus在亞馬遜雨林的業務遇阻并被質疑為“加密殖民主義”:12月20日消息,巴西企業家 Flavio de Meira Penna 的 NFT 公司試圖在巴西亞馬遜州收購超過 150 平方英里的土地雨林,然后結合加密貨幣和游戲化模型來吸引投資者參與亞馬遜雨林的保護。但該業務受到官僚主義、土地所有權法規的困擾,以及當地土著社區的強烈反對。
聯邦檢察官建議 Nemus 停止銷售基于土地的 NFT,并按照國際要求咨詢原住民。該地區的原住民表示,Nemus 的活動正在迅速播下不和的種子,并喚起人們對亞馬遜殖民活動的痛苦回憶。?
據悉,Nemus 基金會將 96.5% 的 NFT 銷售收入將用于購買新土地還是投資當地的“可持續”項目,通過創造當地經濟機會來打擊森林砍伐等犯罪活動。 目前 Nemus 已售出 1,500 個 NFT,該公司計劃在 2023 年底之前啟動 DAO。[2022/12/20 21:56:09]
結果由于你心機叵測,故意寫少兩個0,變成下面這樣
彭博社:美CFTC和SEC正在深入調查三箭資本:金色財經報道,兩位知情人士透露,美國商品期貨交易委員會(CFTC)和證券交易委員會(SEC)目前正在深入調查三箭資本(Three Arrows Capital),以確定該公司是否違反了規則,在資產負債表方面誤導投資者,并且沒有在兩家監管機構注冊。兩家機構均拒絕置評,但其審查可能導致對公司和個人處以罰款和其他處罰。
此前報道,總部位于新加坡的三箭公司于7月申請破產,稱其業務“在加密貨幣市場劇烈波動后崩潰”,三箭聯合創始人Su Zhu和Kyle Davies目前仍下落不明,導致該破產案的清算人及其律師無法追蹤,清算人向法院申請通過二人的電子郵件地址、Twitter帳戶及其律師的電子郵件地址送達傳票。(彭博社)[2022/10/18 17:29:38]
那么「貼心」的EVM就會從字節碼中的金額數據部分取兩位對地址進行補全,而金額數據部分的前兩位又恰好是0,那么就是說你的地址還是原來的地址,但是數據部分就少2位了,怎么辦呢?這就不符合ABI的字節數啦,沒關系,「貼心」的EVM會將你的金額數據部分從末位開始補0,補到為正常的136字節為止,那么有同學就要問了,如果我的地址有6個0,那么我地址故意寫少6個0,是不是數據部分就多了6個0?那不是發財了?
Nexo發布聲明:承諾費率是“個位數”,未提供高回報產品:金色財經報道,在被監管機構指控在未告知客戶風險的情況下提供高36%回報率產品之后,Nexo發布聲明稱其承諾費率是“個位數”,并沒有監管機構聲稱的那么高。Nexo補充稱,這些費率是為了“考慮到業務的基本可持續性和客戶資產的安全性”,屬于低風險產品,而且只有Axie Infinity一款產品提供了36%利率且該產品是個“例外”。不過,Nexo 是否為美國公民服務的問題也在討論中,該公司今日已表示不再讓新的美國客戶參與相關產品。(cryptobriefing)[2022/9/28 22:35:44]
答案就是:你是對的
也就是說,本來填的數據是1,變成字節碼后是0x1,如果地址少了6個字節,那么你的data就自動變成0x1000000啦!驚不驚喜,意不意外!
2第一次出師
第一次我嘗試使用remix進行復現,但結果是能預料到失敗的,如下圖,為什么呢?因為這是一個在2017年就被爆出的漏洞,修復方案滿天飛,怎么可能那么簡單的就讓你成功了呢,所以前端肯定會對你的輸入的地址進行過濾和檢查,想成功,是naive的。
但是作為一個搞事情的人,怎么可以輕言放棄,既然沒有找到官方修復方案,底層肯定就還有問題的,于是乎,我只能從最底層開始進行操作,我想到了使用web3進行漏洞復現
3環境準備
操作系統:macOSnode:v8.11.0web3:1.0.0-beta.36rpc:infura測試合約的abi示例合約:
使用remix在測試網部署示例合約,獲取合約的地址,下面會用到獲取abi的方法:
4第二次出師
注:(??本次所有操作均在命令行中執行)
鍵入node進入命令行提示符在項目中引入web3并設置provider
創建合約實例:
構造方法abi,也就是構造我們上面說的交易里面的inputdata,由于我們是要構造短地址攻擊,所以我們的地址是要比正常的地址的位數要少的,為的就是要讓EVM用零自動補全缺失的地址,但是正常的構造是會失敗的,例如下圖這樣
但是,再次聲明一下,作為一個搞事情的人,不能輕言放棄!于是我們需要一點特別的方法,一開始的時候我到了這里就以為會有檢測就不行了,太天真,其實是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的計劃
下一篇:
澳大利亞新南威爾士州將數字駕駛執照上鏈
鏈聞消息。在紐約共識大會期間,硬件錢包Cobo金庫現貨在48小時內銷售一空。即將上線開售的新版助記詞金屬存儲設備「Cobo金鋼匣」,首日銷售額超過舊版的歷史銷售額總和.
1900/1/1 0:00:00中央財經大學法學教授鄧建鵬今日發表《區塊鏈監管的未來之路——深度思考》一文,文中就區塊鏈監管給出了7點建議。他表示,其一,我們首先建議監管機構加強國際協作,強化國際監管.
1900/1/1 0:00:00最近半年交易所安全事故頻發,中心化交易所的弊端暴露無遺,但去中心化交易所因性能問題尚不能大規模普及,處于一個相當尷尬的位置.
1900/1/1 0:00:00針對加密貨幣的ClipboardHijacking軟件是一款利用Windows復制粘貼功能,將受害者加密貨幣錢包地址替換更改為攻擊者地址的惡意劫持軟件.
1900/1/1 0:00:002019年5月14日,TokenGazer發布了區塊鏈項目RVN評級報告。當前TokenGazer往期的項目評級報告、深度研究報告、加密貨幣月報等均已收錄在官網:www.tokengazer.c.
1900/1/1 0:00:00彭博社報道,通過代幣銷售籌集了40億美元之后,Block.one開始回報股東了。億萬富翁PeterThiel,AlanHoward以及LouisBacon經見證了許多大發橫財的日子,但可能沒有一.
1900/1/1 0:00:00