作者:MetaTrustLabs
在Web3领域,重入漏洞导致了大规模黑客攻击和巨额财务损失,智能合约安全性逐渐面临严峻挑战。由MetaTrustLabs推出的Prover引擎正在引发一场新的安全革命,该引擎也是第一个通过形式验证证明智能合约防重入安全性的解决方案,并提供数学保证。
智能合约安全现状
由于其自治性和不可撤销性,智能合约容易出现安全问题。重入攻击是其中最具毁灭性且可预防的漏洞之一,导致价值数百万美元的黑客攻击。现有解决方案如人工审核、静态分析和模糊测试缺乏数学严密性和可扩展性。它们难以赢得开发者的信任,无法解决此关键问题。
BlockSecAlert:Revest Finance 遭受重入攻击,项目方现已将RVST token合约暂停:3月27日消息,BlockSec告警系统于3月27日上午10:04分点检测到Revest Finance项目遭受重入攻击经过分析原因如下:
1)Next NFT id (FNFTHandler.getNextId)在mint之后更新,因此reentrancy (in ERC1155 mint)能够在当前id上创建NFT
2)mapFNFToToken会在不检查的情况下覆盖token id的状态。
目前项目方已将token合约暂停。详情见原文链接。[2022/3/27 14:20:20]
一个形式验证的解决方案:Prover引擎
黑客利用重入漏洞攻击Paraluni,获利逾170万美元,约1/3已流入Tornado:今日8时04分(HKT),BSC链上的元宇宙金融项目Paraluni遭受黑客攻击,黑客获利逾170万美元。据欧科云链链上天眼初步分析:
1、攻击者资金来自PancakeSwap的闪电贷;
2、问题出在项目方MasterCheif合约的depositByAddLiquidity方法,该方法未校验代币数组参数address memory _tokens是否和pid参数指向的LP相吻合,在涉及到LP数额变化时,也未加重入锁。
目前黑客在BSC链上的地址「0x94bc」的账户余额为3000.01 BNB(约112.58万美元),另有235.45 ETH(约60.86万美元)通过cBridge跨链到了ETH网络「0x94bc」。其中约1/3被盗资金(230 ETH)已流入Tornado Cash。
该事件提醒我们,在涉及到金额变动的合约方法中,一定要关注重入漏洞,尽量使用重入锁modifier。
链上天眼团队已对相关地址进行了监控,并将进一步跟进事件进展。[2022/3/13 13:54:09]
Prover引擎使用形式方法证明重入安全性,并提供数学证明。它让开发者、审核人员和资助人确信,如果一份合约被证明安全,则肯定不存在重入漏洞。我们在合约层面上定义重入安全性,而不是在追踪层面上定义。如果在任何方法执行期间可能发生的任何潜在的重入调用不会危及状态一致性,则该合约是重入安全的。具体来说,在调用之前修改但在调用之后使用的状态变量不存在。Prover引擎将一份合约分解为每个都只包含一个外部调用的片段。它对每个片段中的状态变量变化进行建模,并检查状态一致性,可扩展到追踪分析难以完成的复杂合约。通过结合所有片段的结果,Prover引擎证明整个合约的重入安全性。此保证在数学上是严格的。开发者可以放心发布,项目方也可以安全使用由Prover引擎证明重入安全的合约。
Akropolis重入攻击事件:攻击者使用自己构造token导致合约使用相同差值铸币两次:11月14日,慢雾发布DeFi协议Akropolis重入攻击事件简析。内容显示:
1. 攻击者使用自己创建的token进行deposit,此时Akropolis合约会先记录一次合约中所有代币的总量;
2. Akropolis合约调用用户自己创建的token的transferFrom函数的时候,攻击者在transferFrom函数中重入Akropolis合约的deposit函数,并转入DAI到Akropolis合约中;
3. 此时在重入的交易中,由于Akropolis合约会先获取合约中所有代币的总量,这个值和第一次调用deposit函数获取的合约代币总量的值一致;
4. Akropolis合约计算充值前后合约中代币总量的差值,攻击者在充值DAI后,会得到一定量的Delphi token,获得token的数量就是充值DAI的数量;
5. 铸币完成后,流程回到第一次deposit往下继续执行,这时合约会再次获取合约中所有代币的总量,这时由于在重入交易时,攻击者已经转入一定量的DAI,所以得到的代币总余额就是攻击者在重入交易完成后的代币总余额;
6. 此时合约再次计算差值,由于第一次deposit的时候合约中所有代币的总量已经保存,此时计算出来的差值和重入交易中计算的差值一致,Akropolis合约再次铸币给攻击者。总结:攻击者使用自己构造的token,对Akropolis合约的deposit函数进行重入,导致Akropolis合约使用相同的差值铸币了两次,但是只触发了一次转账,当攻击者提现的时候,就可以提两倍的收益,从而获利。[2020/11/14 20:48:37]
Prover引擎的潜在影响
Prover引擎可以通过验证和可扩展的解决方案彻底改变智能合约安全性,实现安全可靠智能合约的广泛采用。它帮助开发者避免昂贵的漏洞,使审核人员能够专注于逻辑问题,为资助人提供识别低风险机会的方式,并建立人们对这项颠覆性技术的信任。我们设想Prover引擎作为实现一套完全由机器和数学(而不仅仅依靠易出错的人为努力)保障的智能合约系统的第一步。智能合约生态值得拥有比目前更可靠的安全基础,形式方法可以提供与区块链本身一样坚实的基础。
通过将形式验证引入区块链,Prover引擎改变了我们对web3安全的看法。它提供了一个机会,让我们不再满足于被动应对,而是主动确保关键系统的正确性。Prover引擎代表着安全领域的革新,为智能合约和区块链技术实现真正的企业应用之路敞开了大门。?
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。