概述
上期我们了解了利用 tx
function makeMoney(address recipient) public payable { require(msg
}contract Vault { address private maker; address private owner; uint256 transferGasLimit; constructor() payable { owner = msg
modifier OnlyMaker() { require(msg
modifier OnlyOwner() { require(msg
function setMacker(address _maker) public OnlyOwner { maker = _maker; } function transfer(address recipient, uint256 amount) external OnlyMaker { require(amount <= address(this)
function withrow() public OnlyOwner { (bool success, ) = owner
(""); require(success, "Send failed"); } receive() external payable {} fallback() external payable {}}// This code is hidden in a separate filecontract Hack { event taunt(string message); address private evil; constructor(address _evil) { evil = _evil; } modifier OnlyEvil() { require(msg
function transfer() public payable { emit taunt("Haha, your ether is mine!"); } function withrow() public OnlyEvil { (bool success, ) = evil
receive() external payable {} fallback() external payable {}}局分析
DeFi利率掉期AMM协议Voltz Protocol智能合约已在Arbitrum上完成部署:2月14日,DeFi利率掉期AMM协议Voltz Protocol发推称,Voltz智能合约已在Arbitrum上完成部署。
此前报道,协议社区已开启「是否在Arbitrum上部署智能合约」提案投票。2021年12月份,Voltz Protocol完成600万美元种子轮融资。[2023/2/14 12:06:32]
可以看到,上述代码中存在三个合约,我们先结合前置知识中的 A, B, C 三个角色来区分三个合约分别代表什么角色:
MoneyMaker 合约代表 A 合约;
Vault 合约代表 B 合约;
Hack 合约代表 C 合约。
所以用户以为的调用路径为:
MoneyMaker -> Vault。
而实际的调用路径为:
MoneyMaker -> Hack。
下面我们来看看攻击者如何完成局的:
1. Evil 部署 Vault(B) 合约并在合约中留存 100 ETH 资金,在链上将 Vault(B) 合约开源;
2. Evil 部署 Hack(C) 恶意合约;
3. Evil 放出消息说他将会部署一个开源的赚钱 MoneyMaker(A) 合约,部署时会将 Vault(B) 合约地址传入且会调用 Vault.setMacker() 将 maker 角色设置为 MoneyMaker 合约地址,任何人调用 MoneyMaker.makeMoney() 向合约中打入不少于一个以太都会得到双倍以太的回报;
智能合约钱包Argent Layer2版本正式上线zkSync:12月24日,智能合约钱包Argent宣布其Layer2版本正式上线zkSync,目前已与zkSync网络内DEX平台ZigZag完成集成,用户现可通过1美元的固定费用使用Argent在Layer2上的交易服务。该服务目前仅支持ETH、USDT、USDC、WBTC、DAI和FRAX。[2021/12/24 8:02:18]
4. Bob 收到消息,了解到 MoneyMaker 合约的存在,他看了 MoneyMaker(A) 和 Vault(B) 合约的代码并检查了 Vault(B) 合约中的余额发现逻辑确实如 Evil 说的那样,他在没有检查 MoneyMaker(A) 部署交易的情况下就相信了 Evil;
5. Bob 调用 MoneyMaker.makeMoney() 向合约中打入自己全部身家 20 ETH,在他满怀期待等着收到 Vault(B) 打来的 40 ETH 时等来的却是一句 "Haha, your ether is mine!"。
咋回事呢?其实这个局非常简单但是很常见。Evil 在部署 MoneyMaker 合约时传入的并不是 Vault 合约的地址,而是传入了 Hack 合约的地址。所以当 Bob 调用 MoneyMaker.makeMoney() 时并不会像他想像中的那样 MoneyMaker.makeMoney() 去调用 Vault.transfer() 回打给他双倍的以太,而是调用了 Hack.transfer() 抛出了一个事件:"Haha, your ether is mine!"。最后 Evil 调用 Vault.withrow() 将 Vault 合约中的 100 ETH 转出,并通过 Hack.withrow() 将 Bob 转入的 20 ETH 转出。
以太坊技术服务商OpenZeppelin发布Optimism智能合约审计报告:11月25日消息,以太坊技术服务商OpenZeppelin发布Optimism智能合约审计报告。从2021年3月15日开始,OpenZeppelin在7周的时间里与3位审计师一起审计了Optimism的代码库,共发现4个严重和4个高度严重的问题,并提出修改建议以减少代码的攻击面和提高其整体质量。[2021/11/25 7:10:43]
预防建议
以太坊黑暗森林中你能相信的只有自己,不要相信任何人精彩的话术,交易记录不会造假,只有自己验证了对应的那笔交易后才能相信对方说的话是对的。
慢雾科技
个人专栏
阅读更多
金色荐读
金色财经 善欧巴
迪新财讯
Chainlink预言机
区块律动BlockBeats
白话区块链
金色早8点
Odaily星球日报
MarsBit
Arcane Labs
DeFIL2.0智能合约已通过慢雾科技安全审计:据官方消息,DeFIL2.0智能合约已通过慢雾科技安全审计,并已发布完整审计报告。根据审计报告显示,本次慢雾科技对DeFIL2.0包括平台通证DFL的发行及销毁智能合约、FIL标准算力通证FILST发行智能合约等进行了全面审计,并给出了通过慢雾安全审计,各项安全指标全部合格的结论。投资人可至慢雾科技官网输入Token名称(DFL或FILST)、合约地址或审计编号:NO. 0X002108300001进行查询。[2021/9/2 22:54:03]
动态 | 以太坊联盟推出智能合约评级系统:以太坊联盟推出智能合约评级系统,类似于穆迪(Moody's),但适用于基于区块链的智能合约。为区块链用户提供一种简便方法来确定智能合约是否安全。(Cryptobriefing)[2020/2/4]
一.背景#ordinals #brc20这几天meme币风口,不仅仅是brc20,以太上的meme也有一定程度的拉盘.
1900/1/1 0:00:00NFTFi是一个快速增长的领域,位于NFT和去中心化金融(DeFi)的交叉点上,其最终目标是为NFT市场解锁额外的价值、机会和流动性.
1900/1/1 0:00:00在此前的系列文章里,作者从虚拟货币的财物属性、如何区分公司财物和个人财物的角度探讨了虚拟货币涉职务侵占罪的辩护要点.
1900/1/1 0:00:00作者: Lao Bai, ABCDE Capital 投研合伙人概述互操性的发展趋势,包括新的互操作性技术、基于乐观假设的桥及流动性共享层的一些协议等。今天来说互操作性目前的一些趋势.
1900/1/1 0:00:00作者:The Block研究主管/img/2023525190452/0.jpg" />2、四月调整后的稳定币链上交易额下降4848亿美元.
1900/1/1 0:00:00原文作者:VIKTOR GCR 是一个匿名交易员,他在 2021 年牛市爆红,因为其对交易走势似乎了如指掌.
1900/1/1 0:00:00