My Avatar

毕竟话少

业精于勤荒于嬉,行成于思毁于随!

智能合约审计-tx.origin漏洞

2020年5月4日 星期一

描叙:tx.origin是solidity中的一个全局变量,它能够遍历调用栈并返回最初发送调用(或事务)的账户的地址,使用tx.origin变量进行身份验证,会导致合约受到网络钓鱼攻击。

核心问题:使用tx.origin全局变量绕过限制,获取一定的权限。

阅读全文

智能合约审计-条件竞争

2020年4月28日 星期二

描叙:程序在运行过程中,因为多个事件的次序异常而造成对同一系统资源的竞争访问,可能导致程序运行出错。

核心问题:检查是否存在多个并发执行的事件、多个事件需要共享访问相同的对象、某些需要对共享对象进行写操作。

阅读全文

智能合约审计-随机误用

2020年4月13日 星期一

描叙:智能合约开发中,在程序中使用随机数较好的伪随机数是很难的。很多看似无法被预言的随机数种子或变量,实际被预言的难度很低。

核心问题:一旦在智能合约中使用了随机性很差的随机数作为关键变量,就面临着随机数被预言的攻击风险。

阅读全文

智能合约审计-拒绝服务

2020年3月22日 星期日

描述:拒绝服务漏洞(DOS)智能合约无法按照设定的方式被调用

核心问题:智能合约中的拒绝服务是一个致命的漏洞,因为漏洞导致的拒绝服务一般为永久性的,无法恢复

阅读全文

智能合约审计-返回值检查

2020年3月9日 星期一

描述:未检查低级别调用的返回值,在solidity中的低级别调用与其他函数调用不同,如果调用中发生了异常并不会将异常传递,而只是返回true或false。因此程序中必须对低级别调用的返回值进行检查,而不能期待其出错后促使整个调用回滚。

核心问题:对低级别调用的函数没有对返回值进行检查。

阅读全文

智能合约审计-整数溢出

2020年1月15日 星期三

描述:变量在参与运算的过程中,运算结果超出了变量类型所能表示的范围,导致实际存储的计算结果出错

核心问题:非预期的整数溢出将导致智能合约运行出错,影响合约的可靠性和安全性

阅读全文

智能合约审计-时间操纵

2020年1月11日 星期六

描述:以太坊智能合约中使用block.timestamp来向合约提供当前区块的时间戳,并且这个变量通常被用于计算随机数、锁定资金等。但是区块的打包时间并不是系统设定的,而是可以由矿工在一定的幅度内进行自行调整。因此,一旦时间戳使用不当,则会引起漏洞

核心问题:矿工操纵时间戳生成对自己有利的随机数,或者来解除合约的时间限制

阅读全文

智能合约审计-访问控制漏洞

2020年1月9日 星期四

描述:合约没有设置合理的访问控制模型,以及没有对合约有效的校验导致访问控制漏洞的发生

核心问题:public的恶意使用(本次案例合约为例)

阅读全文

智能合约审计-重入攻击

2020年1月8日 星期三

描述:漏洞合约中某个函数中,使用call()方法发送eth,若eth的接收者为一个合约地址,则会触发该合约的fallback()函数。若该合约是攻击者的恶意合约,攻击者可以在fallback()函数中重新调用漏洞合约的上述函数,导致重入攻击

核心问题:重要的合约变量在“重入”的过程中没有被修改,从而绕过了限制

阅读全文