当前位置:网站首页>NFT流动性市场安全问题频发—NFT交易平台Quixotic被黑事件分析
NFT流动性市场安全问题频发—NFT交易平台Quixotic被黑事件分析
2022-07-04 15:21:00 【SharkTeam】
7月1日,Optimism生态最大NFT交易平台Quixotic智能合约出现漏洞,黑客利用该漏洞盗取了大量用户的资产
近期NFT流动性市场安全问题频发。SharkTeam第一时间对此事件进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。
一、 事件分析
攻击者地址:0x0a0805082ea0fc8bfdcc6218a986efda6704efe5,简记为0x0a08
攻击合约地址:0xbe81eabdbd437cba43e4c1c330c63022772c2520,简记为0xbe81
被攻击合约地址:0x065e8a87b8f11aed6facf9447abe5e8c5d7502b6,简记为0x065e
攻击者在创建了攻击合约后,通过攻击合约发起了大量的攻击交易,攻击了很多用户,盗取的资产以WETH和Optimism (OP)为主。以第一笔攻击交易为例进行分析,分析内容如下:
txHash: 0xfdee36012cbeb26d37a857a4bb1937ce0b30379a25198735089c75cfd3ea799a
该交易中,攻击者盗取了0.0975 WETH,调用的函数与参数如下:
交易由攻击者地址0x0a08发起,调用了被攻击合约0x065e中的fillSellOrder函数,其中参数contractAddress实际攻击合约地址0xbe81。
fillSellOrder函数如下:
validateSellerSignature函数如下:
这里_validateSellerSignature并没有校验参数sellOrder中的contractAddress,因此攻击者传入的是自定义的合约地址,即攻击合约地址
_fillSellOrder函数如下:
这里在转移NFT时,调用了参数contractAddress对应的NFT合约中的转移函数,在调用该函数前必须要用户进行授权,攻击者完全可以自定义该函数将用户授权的所有代币提取到自己的账户,包括ERC721、ERC1155、ERC20等多种类型。这里攻击者只能提取用户授权的代币。
综上所述,本次安全事件发生的根本原因在于合约本身存在漏洞,用户的过度授权给了黑客可乘之机。
二、安全建议
引发本次安全事件的根本原因是合约对于地址型参数缺少校验以及用户的过度授权。因此,我们建议无论是项目方还是用户都要提高安全意识,尽可能的避免合约漏洞。在代币授权的时候要谨慎而行,尽可能地将授权的代币种类和数量降低到最小。
三、关于我们
SharkTeam的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、苏州、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Huobi Global、OKC、polygon、Polkadot、imToken、ChainIDE等建立长期合作关系。
Telegram:https://t.me/sharkteamorg
Twitter:https://twitter.com/sharkteamorg
Reddit:https://www.reddit.com/r/sharkteamorg
更多区块链安全咨询与分析,点击下方链接查看
D查查|链上风险核查 https://m.chainaegis.com
边栏推荐
- 多年锤炼,迈向Kata 3.0 !走进开箱即用的安全容器体验之旅| 龙蜥技术
- Pytorch deep learning quick start tutorial
- China's plastic processing machinery market trend report, technological innovation and market forecast
- The test experience "tortured" by the PMP test is worth your review
- Research Report on market supply and demand and strategy of China's Sodium Tetraphenylborate (cas+143-66-8) industry
- L1-072 scratch lottery
- Research Report on market supply and demand and strategy of tetramethylpyrazine industry in China
- The Ministry of human resources and Social Security announced the new construction occupation
- Go language loop statement (under Lesson 10)
- C# 实现 FFT 正反变换 和 频域滤波
猜你喜欢
Object. Usage of keys()
Congratulations to Mr. Zhang Pengfei, chief data scientist of artefact, for winning the campaign Asia tech MVP 2022
Capvision Rongying's prospectus in Hong Kong was "invalid": it was strictly questioned by the CSRC and required supplementary disclosure
How to implement a delay queue?
overflow:auto与felx结合的用法
Redis 的内存淘汰策略和过期删除策略的区别
Visual Studio 2019 (LocalDB)MSSQLLocalDB SQL Server 2014 数据库版本为852无法打开,此服务器支持782
Object.keys()的用法
detectron2安装方法
Blood spitting finishing nanny level series tutorial - play Fiddler bag grabbing tutorial (2) - first meet fiddler, let you have a rational understanding
随机推荐
网页游戏引擎
【Go ~ 0到1 】 第六天 文件的读写与创建
Overflow: the combination of auto and Felx
Object.keys()的用法
51 single chip microcomputer temperature alarm based on WiFi control
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下
Transformer中position encoding实践
Lv166 turned over
Understand ThreadLocal in one picture
力扣今日题-1200. 最小绝对差
MD5加密的两种方式
【云原生】服务网格是什么“格”?
Array filter fliter in JS
[Chongqing Guangdong education] National Open University spring 2019 1248 public sector human resource management reference questions
Detailed process of DC-2 range construction and penetration practice (DC range Series)
2022PMP考试基本情况详情了解
多年锤炼,迈向Kata 3.0 !走进开箱即用的安全容器体验之旅| 龙蜥技术
太方便了,钉钉上就可完成代码发布审批啦!
如何为ONgDB核心项目源码做贡献
[acwing] 58 weeks 4490 dyeing