区块链整数溢出漏洞

SimpleLove 渗透测试 24287

2018年4月22日,黑客对BEC智能合约发起攻击,凭空取出

57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000.792003956564819968

个BEC代币并在市场上进行抛售,BEC随即急剧贬值,价值几乎为0,该市场瞬间土崩瓦解。

2018年4月25日,SMT项目方发现其交易存在异常,黑客利用其函数漏洞创造了

65,133,050,195,990,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000 + 50,659,039,041,325,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000

的SMT币,火币Pro随即暂停了所有币种的充值提取业务。

2018年12月27日,以太坊智能合约Fountain(FNT)出现整数溢出漏洞,黑客利用其函数漏洞创造了

2 + 115792089237316195423570985008687907853269984665640564039457584007913129639935

的SMT币

0x02 漏洞简介

在编程语言里面,因为算术运算导致的整数溢出漏洞屡见不鲜

  • C语言的整数溢出机制
  • CVE-2020-16040: Chromium V8引擎整数溢出漏洞分析
  • http.sys整数溢出漏洞(MS15-034)验证方法

在solidity语言中,变量支持的类型从uint8-uint256,int8-int256。每一个整型变量只能存储固定大小数值范围内的数。uint表示无符号数。比如uint8只能储存0->2^8-1范围内的数字。当一个uint8类型的变量值为255时,在进行加一,就会发生进位,导致整体翻转为零。

回复

我来回复
  • 暂无回复内容

扫码关注
扫码关注
分享本页
返回顶部