02.slither基本使用参数解析
Slither基于python开发,它可以无需用户干预的情况下在几秒钟内找到真正的漏洞。它是高度可定制化的,并提供一组API接口来轻松检查和分析Solidity代码。
典型的重入漏洞,分析重入漏洞两板斧:1. 找循环 ,2. 找代币变化。
合约中存在两个漏洞代码注入和逻辑错误,通过漏洞利用,可以达到转移任意用户的Carrot代币。利用过中还涉及一个未开源的pool合约。一句话总结漏洞利用过程:利用代码注入漏洞Carrot合约通过调用pool合约的方法成为pool合约的owner,利用逻辑漏洞绕过转账时的授权检查。
本文列举了foundry中常用的命令,方便以后查询使用。
可以销毁任意用户的tcrToken代币?听起来好像是损人不利已的鸡肋漏洞,黑客是如何搞到63.9万的USDT的呢?
此次黑客利用未授权的函数,扰乱了正常的Godzilla币与USDT的流动池,最终攻击大约套利了2.6万的USDT。
本文将重点分析和复现xSurge的攻击过程。该漏洞利用的代码是重入漏洞的典型代码,但利用过程却不是重入。应该是”最像重入漏洞的套利漏洞”。价格计算机制既然可以从数学上证明存在漏洞,能不能用数学的方法来挖掘此类的漏洞?
重入漏洞的典型代码
利用过程却不是重入
在合约代码中,最常用的是使用msg.sender来检查授权,但有时由于有些程序员不熟悉tx.origin和msg.sender的区别,如果使用了tx.origin可能导致合约的安全问题。黑客最典型的攻击场景是利用tx.origin的代码问题常与钓鱼攻击相结合的组合拳的方式进行攻击。
tx.origin的代码问题常与钓鱼攻击相结合的组合拳
一句话对这个漏洞进行总结:合约中的漏洞是个典型的逻辑漏洞,漏洞主要在Pool合约中的mint方法中,在mint方法中调用calcMint方法计算了铸造xFTM时需要的最少FTM和最少FSM,而合约代码只对FSM进行了销毁,却没有考虑FTM的情况,导致即使用户不输入FTM,也能获得xFTM。
逻辑漏洞
Pool合约
mint
没有考虑FTM