作者:慢雾安全团队文章来源:慢雾科技
0概述
说到智能合约漏洞,第一时间映入脑海的可能都是算法溢出,call()函数滥用,假充值等漏洞,毕竟这是在很多智能合约上都有实例,并且危害等级也是比较高的,但是有一个漏洞也许很多人都见过、听过却不是很多人都关心的漏洞,它就像是人类世界的亚特兰蒂斯,很多人知道,却很少有研究报告,Google上能找到的,也不过只是说原理而没有复现实战,有点纸上谈兵的感觉。大家都知道的是这是EVM层面的缺陷,而不是智能合约层面的问题,并且在我们默认的思维里面,这是一个已经被修复的漏洞。前段时间尝试翻查短地址攻击的官方修复方案,但是经过我的搜索,并没有找到相关的修复方案,Github上也扒了一遍,也看不到历史release有相关的修复,于是,我猜,真的是我猜,EVM层面可能并没有修复。
1短地址攻击基础知识
短地址攻击其实就是每个ERC20的合约里面都有一个以下的函数
CertiK通过美国AICPA审核获得SOC 2类型I认证:金色财经报道,Web3安全审计公司CertiK已经通过了美国注册会计师协会(AICPA)的审核,获得了该机构颁发SOC 2 类型 I 认证。SOC2类型I认证是AICPA基于确保服务机构满足客户数据安全而提出的标准,素以严苛著称。CertiK通过独立的第三方审计进行了安全控制、流程和政策等多全面审计和评估,满足了SOC 2的严格标准,有能力为客户和合作伙伴提供最高级别安全的承诺。在通过该认证后,CertiK方面也表示将一如既往地致力于提供最先进的安全解决方案,使个人、企业和组织等能在保证安全的前提下充分发挥区块链技术的潜力。[2023/7/18 11:00:28]
当对合约的这个函数进行调用的时候,其实在EVM层面来说是传入一串字节码,就像下图这样,可以在Etherscan里面查看每笔交易的inputdata里面的整个函数的调用数据
传入的字节码一共有136字节(正常来说),里面包含方法的签名(前4字节),和传入的参数值。上面这个图是不正常的,只有134字节,这是我经过特殊处理过的,下面我会详细说
安全团队:JIM2.0代币存在后门功能,请尽快移除WETH/JIM2.0交易对中资产:7月17日消息,据Beosin Alert监测,以太坊上的JIM2.0代币存在后门功能,允许其合约所有者无限铸币。建议用户尽快移除WETH/JIM2.0交易对中的资产。[2023/7/17 10:59:24]
从上面的信息我们可以知道,EVM是根据字节码识别传入的参数的,字节码是多少就是多少,也不会去验证。巧了,就是这样,漏洞就产生了,有人就想用不合法的地址,比如地址故意写少后几位,看看EVM会怎么处理,但是又巧了,EVM不仅不会报错,还会「贴心」的帮你对地址进行补全操作,怎么补全的呢?就是将地址后面不足的部分,用金额数据部分的位数来补全,比方说你的地址本来是
结果由于你心机叵测,故意写少两个0,变成下面这样
那么「贴心」的EVM就会从字节码中的金额数据部分取两位对地址进行补全,而金额数据部分的前两位又恰好是0,那么就是说你的地址还是原来的地址,但是数据部分就少2位了,怎么办呢?这就不符合ABI的字节数啦,没关系,「贴心」的EVM会将你的金额数据部分从末位开始补0,补到为正常的136字节为止,那么有同学就要问了,如果我的地址有6个0,那么我地址故意写少6个0,是不是数据部分就多了6个0?那不是发财了?
加密矿企lanium和能源公司Crusoe宣布知识产权交叉许可:金色财经报道,加密矿企lanium Inc.和Crusoe能源公司今天宣布了一项协议,双方将交叉许可各自的专利技术。Crusoe的基础设施可以降低数字经济的成本和环境影响。根据协议条款,Lancium将把其专利知识产权直接用于可扩展数据中心的操作,作为可控制负载资源(clr)提供给Crusoe。通过对大规模数据中心耗电量的灵活控制,租户可以从较低的电价中获益,同时也为电网运营商提供了维护电网稳定的有力工具。(businesswire)[2022/10/27 11:46:51]
答案就是:你是对的
也就是说,本来填的数据是1,变成字节码后是0x1,如果地址少了6个字节,那么你的data就自动变成0x1000000啦!惊不惊喜,意不意外!
2第一次出师
第一次我尝试使用remix进行复现,但结果是能预料到失败的,如下图,为什么呢?因为这是一个在2017年就被爆出的漏洞,修复方案满天飞,怎么可能那么简单的就让你成功了呢,所以前端肯定会对你的输入的地址进行过滤和检查,想成功,是naive的。
赵长鹏:币安已冻结或追回Curve被盗资金的45万美元:金色财经报道,币安首席执行官赵长鹏发推称,币安已冻结/追回了45万美元的Curve被盗资金,占黑客攻击盗取资金的83%。他表示,币安正在与LE合作,将资金返还给用户。[2022/8/12 12:20:37]
但是作为一个搞事情的人,怎么可以轻言放弃,既然没有找到官方修复方案,底层肯定就还有问题的,于是乎,我只能从最底层开始进行操作,我想到了使用web3进行漏洞复现
3环境准备
操作系统:macOSnode:v8.11.0web3:1.0.0-beta.36rpc:infura测试合约的abi示例合约:
使用remix在测试网部署示例合约,获取合约的地址,下面会用到获取abi的方法:
4第二次出师
注:(??本次所有操作均在命令行中执行)
键入node进入命令行提示符在项目中引入web3并设置provider
Uniswap v3已部署至Celo:7月14日消息,Celo 基金会战略与创新合作伙伴Nikhil Raghuveera今日在 Uniswap 治理论坛宣布,Uniswap v3已在Celo上线。Celo基金会和Climate Collective已为Celo上的Uniswap注入了初始流动性,Celo上ReFi项目Re Source和Impact Market也为Uniswap提供了流动性。
Celo基金会表示即将推出LP管理工具,并将在该类协议完成后启动流动性挖矿。目前Celo上CELO/WETH流动性池中的WETH需要通过Wormhole跨链获得。[2022/7/14 2:12:10]
创建合约实例:
构造方法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的计划
下一篇:
澳大利亚新南威尔士州将数字驾驶执照上链
??RatingProfile?评级概要主要优势ReserveProtocol旨在建立一个分散式的稳定通证和支付系统,立足于稳定通证风口,市场前景较广阔;发展计划清晰.
1900/1/1 0:00:00尽管投资于仍处于萌芽状态的加密货币市场存在风险,但一位首席安全科学家认为,加密货币仍然「绝对是一件好事」——他们只是有一些工作要做.
1900/1/1 0:00:00作者|王也近日,数字货币交易所Bitfinex及其旗下交易平台Ethfinex宣布推出新的IEO交易平台Tokinex.
1900/1/1 0:00:00本文观点仅代表个人,仅限交流学习,所有内容不构成任何投资建议。想及时了解更多行情信息,请添加官方微信进群:jiamibaoluo。昨天文章提到的HT有机会,昨晚就已经直线拉升.
1900/1/1 0:00:00作者:安比实验室&AnChain.ai安比实验室创始人郭宇:2009年,中本聪创造了一个虚拟的去中心化新世界。这仿佛是一片流着奶和蜜糖的应许之地,人们欢呼雀跃,蜂拥而至.
1900/1/1 0:00:00截至北京时间2019年5月24日16点,CSI100指数报847.2点,24h上涨6.07%。成分币中,有93个上涨,7个下跌,指数4小时仍然沿着上升趋势线运行.
1900/1/1 0:00:00