智能合约安全

2024年07月08日更新 456 人订阅
专栏简介 DeFi安全之杠杆挖矿 SharkTeam系列课程—NFT&GameFi开发与安全 NFT和GameFi概念介绍 ERC20/ERC721/ERC1155概念与协议 闪电贷和重入攻击:Grim Finance被黑事件分析 重入攻击:Uniswap V3流动性协议Visor Finance被黑事件分析 领航Web3安全,让数字生活更安全更美好:SharkTeam线上AMA实录 闪电贷攻击:Sashimi Swap被黑事件分析 ERC20相关业务的合约开发与合约安全 权限问题:Crosswise 被黑事件分析 细节决定成败:QBridge被黑事件分析 损失3.26亿,跨链协议再暴雷:Wormhole被黑事件分析 参数校验不严谨:Superfluid被黑事件分析 ERC721/ERC1155合约开发与合约安全 闪电贷+提案攻击-Beanstalk Farms攻击原理及资金流向分析 监守自盗?Titano.Finance被黑事件分析 AscendEX黑客攻击事件资金流向分析 NFT交易平台安全风险频发--OpenSea & X2Y2安全事件分析 SharkTeam系列课程—NFT 应用场景分析 SharkTeam发布2022年Q1智能合约安全态势感知季报 ChainAegis链上分析:以太坊合并后的中心化风险 大意失荆州-Akutar合约漏洞导致34M美元资金永久被锁 SharkTeam:十大智能合约安全威胁之回退攻击 闪电贷&重入攻击:Hundred与Agave被黑事件分析 从APE空投漏洞谈起,NFT安全情况究竟如何? 千里之堤,溃于蚁穴—跨链协议Nomad被黑事件分析 SharkTeam服务全线升级,重磅推出ChainAegis链上风险分析平台,全面保障Web3生态安全 ChainAegis:从链上数据看,FTX会崩盘吗? NFT合约同样也有重入风险:Revest Finance被黑事件分析 操纵预言机+提案攻击—Fortress Loans被黑事件分析 去年519,今年510—从链上分析的角度看,LUNA会不会真的陷入死亡螺旋? 算法稳定币UST崩盘—是完美风暴还是金融围猎? 6.2亿,再破记录:Ronin Bridge攻击事件技术分析与资金流向分析 周天王的愚人节-NFT精准钓鱼事件技术分析与资金流向分析 【深度】从链上分析和金融安全角度,看stETH的囚徒困境和Celsius挤兑事件 NFT流动性协议的安全困局—NFT借贷协议XCarnival被黑事件分析 NFT流动性市场安全问题频发—NFT交易平台Quixotic被黑事件分析 【深度】OpenSea 新协议 Seaport源码解析 重入攻击+闪电贷—NFT金融协议Omni被黑事件分析 SharkTeam发布2022年第二季度Web3安全态势感知报告 DeFi安全之DEX与AMMs SharkTeam完成Flow生态NFT市场MatrixMarket的安全审计 闪电贷技术详解-Part 1 闪电贷技术详解-Part 2 闪电贷技术详解-Part 3 SharkTeam系列课程:什么是DeFi借贷 DeFi安全之抵押借贷 从链上分析角度看Tornado Cash被制裁事件 Defi安全之借贷杠杆 链上数据角度,看DeFi隐私赛道的现状和未来 火眼金睛,教你如何识别Rug Pull项目 SharkTeam:十大智能合约安全威胁之重入攻击 SharkTeam:十大智能合约安全威胁之操纵预言机 SharkTeam:十大智能合约安全威胁之逻辑校验漏洞 SharkTeam:十大智能合约安全威胁之权限漏洞 SharkTeam:8月Web3安全报告 SharkTeam:十大智能合约安全威胁之合约升级漏洞 警惕以太坊合并后的重放攻击:Omni跨链桥被攻击事件分析 SharkTeam:十大智能合约安全威胁之函数恶意初始化 波卡“以太坊"Moonbeam的技术创新之路 左手以太坊、右手跨链-Moonbeam的创新与突破 批准+校验漏洞-TransitSwap安全事件分析 ChainAegis:BTC和ETH第三季度链上数据解读 默克尔树漏洞成因和链上资金追踪-BNBChain跨链桥攻击事件分析 SharkTeam:Move合约开发与合约安全 Moonbeam的多链架构 高保真还原BNBChain跨链攻击实现原理-攻击者选择高度为110217401的区块到底有什么讲究? SharkTeam:十大智能合约安全威胁之三明治攻击 香港要成为国际虚拟资产中心,链上安全是关键 SharkTeam:十大智能合约安全威胁之提案攻击 ChainAegis:FTX资金流向最新分析,风险大,请尽快提款 SharkTeam:十大智能合约安全威胁之重放攻击 Move语言安全性分析及合约审计要点 之权限漏洞、重入攻击 ChainAegis:Top20 中心化交易所资金储备链上分析-Part 1 区块链安全 Move语言安全性分析及合约审计要点 之逻辑校验漏洞 ChainAegis:Top20 中心化交易所资金储备链上分析-Part 2 ChainAegis:Top20 中心化交易所资金储备链上分析-Part 3 Move语言安全性分析及合约审计要点 之函数恶意初始化 链上数据分析:CeFi频繁暴雷后,DEX会成为主流吗? Move语言安全性分析及合约审计要点之回退攻击 SharkTeam:11月Web3安全报告 SharkTeam与NFMS达成合作,提供Move合约审计服务 Move语言安全性分析及合约审计要点之提案攻击 ChainAegis分析报告:Dogecoin排名前10的市值从何而来? SharkTeam完成APTOS生态项目NFMS的合约审计 ArWiki调研报告 Move语言安全性分析及合约审计要点之合约升级漏洞 Verto调研报告 在深熊中艰难前行,DeFi & CeFi 2022年度分析报告 SharkTeam:2022年度Web3安全报告 ChainAegis:2022年度NFT&GameFi分析报告 Move语言安全性分析及合约审计要点之操纵预言机 加密货币反洗钱(AML)分析 SharkTeam:Move语言安全性分析及合约审计要点 之三明治攻击 ChainAegis:BUSD链上数据分析报告 闪电贷攻击+业务逻辑漏洞:Platypus Finance事件分析 SharkTeam:Move语言安全性分析及合约审计要点之重放攻击 加密货币钓鱼团伙Monkey Drainer链上行为分析 权限漏洞+价格操纵:SwapX被攻击事件分析 ChainAegis:Blur链上数据分析报告 ChainAegis:数读Silvergate & SVB崩盘事件 业务逻辑漏洞+闪电贷攻击:Euler Finance被攻击事件分析 ChainAegis:稳定币协议Liquity链上分析报告 ChainAegis:GMX链上分析报告 SharkTeam与GoPlus Security达成战略合作,共同守护Web3世界安全 香港之夜,Dao的盛会 SharkTeam:2023年第一季度Web3安全报告 Talk with us,公链、DeFi等Web3时代的创新发展机遇有哪些? 香港Web3嘉年华“Web3与安全”主题论坛议程揭秘 2023香港Web3嘉年华,SharkTeam展台指引 权限校验漏洞:SushiSwap被攻击事件分析 香港会议期间,SharkTeam发布“链上安全分析研究报告” 安全是发展Web3的必要条件-SharkTeam受邀香港Web3嘉年华 ChainAegis:LSD赛道链上分析报告 Sui 与 Aptos 技术实现对比 ChainAegis:去中心化保险赛道及风险分析 ChainAegis:Pancakeswap V2V3链上数据分析 ChainAegis:AAVE V2/V3链上数据分析 ChainAegis:Gains Network链上数据分析 逻辑漏洞:DEUS被攻击事件分析 ChainAegis:BRC-20链上数据分析 ChainAegis:Blend链上数据分析 SharkTeam:Tornado.Cash提案攻击原理分析 SharkTeam:Sui主网链上数据分析 SharkTeam:Jimbos protocol闪电贷攻击原理分析 SharkTeam:RWA赛道链上数据分析 SharkTeam:Zksync Era链上数据分析 SharkTeam:Atomic Wallet攻击原理和洗钱模式分析 链安全 Sui主网上线满月,链上持币者数据分析 SharkTeam:Atlantis提案攻击原理分析 SharkTeam:HashFlow攻击事件原理分析 SharkTeam:2023年第二季度Web3安全报告 SharkTeam与Move Accelerator达成合作,Let’s Move! SharkTeam:Themis protocol闪电贷价格操纵攻击分析 SharkTeam:4月28日攻击者就已实施攻击-PolyNetwork攻击原理和资产转移分析 SharkTeam:AzukiDAO攻击事件分析 SharkTeam:BNO攻击事件原理分析 SharkTeam:Vyper漏洞导致Curve和JPEG'd等项目被攻击原理分析 SharkTeam:UniswapV4 Hook最佳安全实践 SharkTeam:UniswapX 源码分析 SharkTeam:Worldcoin运营数据及业务安全分析 SharkTeam与TOKEN2049正式达成合作伙伴关系 SharkTeam:Exactly Protocol攻击事件原理分析 SharkTeam:Rugpull工厂黑色产业链分析 SharkTeam开启9月双城记 SharkTeam上海区块链全球峰会展台指引 SharkTeam:Web3安全实践与创新 KYT/AML:Web3合规展业的必要条件 SharkTeam:典型钓鱼攻击链上资产转移分析 SharkTeam:起底朝鲜APT组织Lazarus Group,攻击手法及洗钱模式 SharkTeam:2023年第三季度Web3安全报告 SharkTeam:BH闪电贷攻击原理分析 SharkTeam:Platypus Finance攻击事件原理分析 SharkTeam:Onyx Protocol攻击事件原理分析 SharkTeam:Raft攻击事件原理分析 从链上分析角度看FTX破产清算过程,美国加密货币监管与风险处置能力究竟如何 SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:ERC2771\&Multicall任意地址欺骗漏洞原理分析 SharkTeam:OKX DEX攻击事件分析及链上资产追踪 SharkTeam:从链上数据看稳定币的安全与监管 SharkTeam:2023年加密货币犯罪分析报告 SharkTeam:MIM_SPELL被攻击事件原理分析 SharkTeam:合约精度计算漏洞与安全建议 SharkTeam:Woo Finance被攻击事件分析 SharkTeam:Prisma Finance被攻击事件分析 SharkTeam:2024年第一季度Web3安全报告 SharkTeam:Hedgey Finance被攻击事件分析 SharkTeam:Sonne Finance攻击事件分析 SharkTeam:Web3常见钓鱼方式分析与安全防范建议 SharkTeam:UwU Lend攻击事件分析 SharkTeam:美国众议院FIT21法案解读 SharkTeam:2024年上半年度Web3安全报告

SharkTeam:十大智能合约安全威胁之逻辑校验漏洞

  • SharkTeam
  • 发布于 2022-09-08 17:16
  • 阅读 4231

第三课【详解逻辑校验漏洞】。

SharkTeam:十大智能合约安全威胁之逻辑校验漏洞 问:我们常提到的智能合约漏洞真的是实际中威胁最大、发生最频繁的安全漏洞吗? 答:完全不是那样。例如“溢出”、“外部调用”等常提到的智能合约安全漏洞并不是最常发生,威胁最大的。 到底哪些安全威胁从发生频率和危害性上能称为Top10的呢?SharkTeam合约安全系列课程之【十大智能合约安全威胁】和您一起讨论和深入。第三课【详解逻辑校验漏洞】。

image.png

一、什么是逻辑校验漏洞

智能合约开发的业务相关逻辑设计复杂,涉及的经济学计算和参数较多,不同项目和协议之间可组合性极其丰富,很难预测,非常容易出现安全漏洞。一般常见的逻辑校验漏洞: (1)未校验返回值 不检查消息调用的返回值,即使被调用的合约抛出异常,执行也会恢复。如果调用意外失败或攻击者强制调用失败,这可能会导致后续程序逻辑出现意外行为 (2)未校验相关数值计算公式 相关的数值计算公式开发时,没有正确使用相应的业务经济学公式 (3)未校验函数传参 函数接收参数时,它不验证输入的数据属性是否具有安全性和正确性 (4)不规范使用require require旨在验证函数的外部输入。在大多数情况下,此类外部输入由调用者提供,但也可能由被调用者返回。在前一种情况下,我们将它们称为前提条件违规。违规条件可能是提供外部输入的合约中存在错误和要求的条件太苛刻

二、攻击事件分析

2.1 Eleven Finance

2021年6月23日,币安智能链(BSC)上DeFi项目Eleven Finance受到闪电贷攻击。攻击流程如下: (1)攻击者ApeSwap上通过闪电贷借到954324.6个BUSD,在PancakeSwap上将部分BUSD兑换为 474378.8个NRV (2)攻击者将兑换的474378.7个NRV和366962.0个BUSD添加流动性到Pancakeswap,铸造了411515.2个Pancake LP Token (3)攻击者通过ElevenNeverSellVault合约,将411515.2个LP token存入Eleven Finance中与Nerve相关的机枪池中,铸造411515.2个11nrvbusd LP token (4)紧急提取 411515.2Pancake LP Token(并未销毁11nvrBUSD LP Token),随后攻击者销毁了对应的11nvrBUSD LP Token,并从金库正常提取了额外的411515.2Pancake LP Token (5)攻击者将所有823030.5Pancake LP Token销毁,移除流动性,提取出948757.5个NRV和733924.0个BUSD,随后将948757.5个NRV 置换成624113.2个BUSD (6)最后归还闪电贷,将剩余的647573.8个BUSD转移到私人地址 问题原因分析:ElevenNeverSellValpult.sol合约中有一个紧急销毁函数emergencyBurn,可以紧急提取存入合约内的Pancake LP Token,但没有考虑到销毁用户将Pancake LP Token存入合约所铸造的11nvrBUSD LP Token。这使得攻击者调用该函数可以从MasterMind.sol挖矿合约下紧急提取LP Token,再通过销毁11nvrBUSD LP Token再次从矿池中提取对应价值的Pancake LP Token从而完成套利。究其原因是函数逻辑没有完全考虑完整,如下图所示:

image.png

2.2 SafeDollar

2021年6月28日中午,Ploygon上算法稳定币SafeDollar被攻击,被恶意提取了20万USDC和近5万USDT,损失25万美金,SafeDollar(SDO)代币归零。攻击流程如下: (1)首先获得天文数字的SDO,在PolyDex上兑换为USDT和USDC (2)攻击者不断的在资金池中进行存取交易,将资金池中的lpSupply控制到了非常小的量,无限趋近于0,之后发起攻击交易 问题原因分析:在更新资金池中pool.accSdoPerShare时,lpSupply是整个计算的分母,因为分母极小,造成pool.accSdoPerShare极大。而accSdoPerShare是计算SDO奖励的乘数因子,造成攻击者最终获得了天文数字的SDO奖励。

image.png

2.3 Merlin Lab

2021年6月29日,Merlin Lab继5月26日被闪电贷攻击后再次受到攻击,损失近30万美金。随后在23点27分官方宣布关停项目,次日0点26分开始抛售代币并跑路。攻击流程如下: (1)攻击合约将0.1 WBNB存入Alpaca金库 (2)攻击合约将 63.2886 WBNB 以及1 Alpaca 转入 Alpaca金库 (3)调用Haverst()函数获取奖励,这里的奖励包括第2步中添加的资金, Alpaca金库进行复投的时候也包括了第2步中添加的资金,因为第2步添加资金绕过了复投检查条件 (4)调用withdrawAll()函数提取Alpaca金库中的资金以及获取的奖励。这个过程中会从奖励中扣除绩效费,同时铸造 MERL 作为补偿。还在PancakeSwap中做了流动性添加以及兑换 (5)最后将铸造的MERL兑换成 WBNB实现获利 问题原因分析:在铸币过程中,铸造的MERL 明显偏多,跟其实际价值不符。铸币是由mintFor 函数实现,其中,merlinPerProfitBNB的值为20e18,这个值导致最终铸造的MERL相比于BNB的价格比实际要大,即增发了MERL的数量,使得攻击者从中获得了额外的收益。

image.png

image.png

image.png

2.4 XDXSwap

2021年7月2日,火币生态链(Heco)上DeFi项目XDXSwap受到闪电贷攻击。损失约400万美金。攻击流程如下: (1)攻击合约向ETH-WHT交易对合约转账1wei的WHT (2)攻击合约向ETH-WHT交易对合约中转账约376e18的假币 (3)攻击合约调用ETH-WHT交易对中的swap函数做闪电贷,借贷1.816 ETH 问题原因分析:在步骤1中转入的1 wei的WHT,保证了token0是有输入的,输入为1 wei,闪电贷检查条件成立。攻击者只是使用了1wei 的WHT就兑换了1.816 ETH。同时使得储备金中ETH 数量减少,于是ETH兑换WHT的价格上涨。接下来,攻击用使用同样的办法在 ETH-WHT交易对中使用1wei ETH兑换了376.778 WHT。攻击者使用同样的方法共攻击了11个交易对。共获利约400万USDT。闪电贷的功能实现合约,存在借出不还的严重漏洞,造成用户的巨额损失,是项目方fork Uniswap合约代码并修改时引入的严重漏洞。

image.png 2.5 ApeRocket Finance 2021年7月14日,BSC和Polygon上DeFi项目ApeRocket Finance遭到闪电贷攻击,损失共计126万美金,项目代币SPACE下跌逾75%。攻击流程如下: (1)以BSC上的攻击交易为例,攻击者首先从Biswap和Pancake上分别通过闪电贷借取355K和1.25M的Cake,共计约1.6M CAKE (2)攻击者将509K的CAKE存入投入AutoCake金库合约中进行流动性挖矿,占比此金库合约总资金量的99.5% (3)将剩下的1.1M的CAKE同样转入此AutoCake金库合约,调用harvest函数进行收益耕作 (4)调用getReward函数并获得SPACE奖励 (5)归还闪电贷并获利 问题原因分析:在调用getReward函数时,会出发_harvest函数,在此函数中使用了当前AutoCake金库合约中的CAKE余额,并在MASTCHEF合约中中进行奖励计算,导致SPACE奖励计算错误。

image.png

三、预防措施

开发人员在日常开发中应当采取哪些适当的措施去避免相关逻辑漏洞呢?回顾上述攻击事件后,我们可以发现逻辑漏洞发生在合约开发人员身上,合约开发人员可能在开发时未能完全考虑到业务逻辑的安全性。为了构建安全的智能合约,我们需要考虑其业务逻辑的安全性。应该遵循以下开发规范: (1)若使用低级调用方法,请确保通过检查返回值来处理调用失败的可能性 (2)函数接收参数时,需要验证输入的数据属性是否具有安全性和正确性 (3)在计算业务经济学公式要正确使用经济学公式 (4)验证合约的业务逻辑是否按照正确的顺序步骤进行,不能出现业务逻辑跳过和顺序不同、条件限制执行 (5)验证合约的业务逻辑不依赖于通过多次调用不受信任的合约中同一函数检索的值 (6)验证合约逻辑不依赖合约余额(例如 balance == 0) (7)验证合约不会自动发送资金,而是让用户在单独的交易中自行提取资金 (8)项目上线前,需联系专业的第三方专业审计团队进行审计

关于我们:SharkTeam的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、苏州、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如OKC、polygon、Huobi Global、Polkadot、imToken、ChainIDE等建立长期合作关系。

image.png Telegram:https://t.me/sharkteamorg Twitter:https://twitter.com/sharkteamorg 更多区块链安全咨询与分析,点击下方链接查看 D查查|链上风险核查 https://m.chainaegis.com

点赞 0
收藏 2
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论