月亮链 月亮链
Ctrl+D收藏月亮链

INT:SMT/BEC 合约整数溢出解析——Solidity 合约中的整数安全问题_UIN

作者:

时间:1900/1/1 0:00:00

链闻ChainNews:

在传统的桌面windows攻防对抗领域,伴随着微软和合作伙伴对软件开发流程推行SDL规范,同时对安全投入的逐步加大,单一的封包超长和文件特定字段内容超长导致的溢出漏洞在一些大型软件里几乎绝迹。目前,零星剩下了一些整数类的漏洞。如去年的nginxcve-2017-7529。而区块链方向,比较早的整数溢出类漏洞可追溯到2010年的比特币大整数溢出,CVE-2010-5139,黑客通过整数溢出构造了大概92233720368

?//0-1=2**256-1functionunderflow()returns(uint256_underflow){uint256min=0;returnmin-1;}}

在线测试工具中编译运行结果如下。

可以看到uint256当取最大整数值,上溢之后直接回绕返回值为0,uint256当取0下溢之后直接回绕,返回值为2^256-1。这是solidity中整数溢出场景的常规情况。

受监管的DeFi交易平台Swarm Markets推出SMT代币:总部位于德国且受德国联邦金融监管局(BaFin)监管的DeFi交易平台Swarm Markets 已宣布推出SMT代币,SMT代币将用于在其他用例中为Swarm Markets平台上的流动性提供动力。官方表示,50%的SMT代币将用于奖励池,没有为团队预留代币。SMT用户可以享受协议交易费用50%的折扣。(zycrypto)[2021/7/9 0:40:35]

1

functiondiv(uint256a,uint256b)internalconstantreturns(uint256){//assert(b>0);//Solidityautomaticallythrowswhendividingby0uint256c=a/b;//assert(a==b*ca%b);//Thereisnocaseinwhichthisdoesn'tholdreturnc;}

LBank蓝贝壳上线SMTY(Smoothy Finance),最高涨幅达946%:据官方消息,4月27日22:00LBank上线SMTY,开放USDT交易。SMTY开盘价格为0.5USDT,当前最高报价为5.23USDT,最高涨幅946%,截止发稿价格稳定在3.12USDT。资料显示,Smoothy Finance 是一个单池、低费用、零滑点的稳定币互换协议,即在一个稳定币池里,可以实现多种稳定币的互换。

Smoothy是一种新型的解决方案,用于将由相同底层资产 (例如稳定币) 有效支持的资产与单个池进行兑换,该池包括一组部署在兼容以太坊的区块链智能合约。

注:信息仅供分享,不构成任何投资建议。[2021/4/27 21:04:44]

functionsub(uint256a,uint256b)internalconstantreturns(uint256){assert(b<=a);returna-b;}

functionadd(uint256a,uint256b)internalconstantreturns(uint256){uint256c=ab;assert(c>=a);returnc;}}

动态 | 新加坡金融科技协会会长Chia Hock Lai先生加入SmartMesh基金会(SMT)担任顾问:据SmartMesh官方消息,新加坡金融科技协会会长Chia Hock Lai先生已于近日加入SmartMesh基金会担任顾问,其将为SmartMesh在新加坡的发展提供政策支持,并为SmartMesh在全球的落地应用普及提供帮助。Chia Hock Lai表示:很自豪加入SmartMesh基金会,支持这个通过区块链和天地一体化物联网技术为人们提供最后一公里连接服务的去中心化项目。[2019/8/14]

可以看到相关的可能产生溢出的操作都单独封装成函数,加入assert断言做判断避免溢出。调用SafeMath库的方法如下。

2.SMT合约中的整数安全问题简析

与大型软件或者操作系统动辄十万行甚至千万行代码不同,智能合约的代码行数通常不多,功能也不是很复杂。一起来看下SMT合约的相关代码。

SMT最新公告:“以太坊智能合约溢出漏洞事件”已经得到全面控制:据SmartMesh(SMT)官方微博公告,此次“以太坊智能合约溢出漏洞事件”已经得到全面控制。对于此次溢出事件流出的“假币”,SMT基金会承诺将从公开流通市场进行回购,并进行销毁。[2018/4/27]

SMT的合约地址是https://etherscan.io/address/0x55f93985431fc9304077687a35a1ba103dc1e081#code问题存在于transferProxy()函数代码如下

在进行加法操作的时候没有采用Safemath库进行约束。_feeSmt参数和_value参数均可以被外界进行控制,_feeSmt和value均是uint256无符号整数,相加后最高位舍掉,结果为0。

直接溢出绕过代码检查导致可以构造巨大数量的smt代币并进行转账。

攻击者的恶意转账记录可以从如下链接进行看到。https://etherscan.io/tx/0x1abab4c8db9a30e703114528e31dee129a3a758f7f8abc3b6494aad3d304e43f

火币Pro暂停SMT交易的公告:火币Pro发布公告称,应SmartMesh(SMT)项目方的要求,火币Pro暂停SMT/USDT、SMT/BTC和SMT/ETH的交易,具体开放时间另行通知。[2018/4/25]

3.BEC合约中的整数安全问题简析

BEC的合约地址是0xC5d105E63711398aF9bbff092d4B6769C82F793D,合约代码可以访问etherscan的如下网址进行查看https://etherscan.io/address/0xc5d105e63711398af9bbff092d4b6769c82f793d#code。代码一共是299行。

问题函数如下图。

可以看到batchTransfer函数中,语句balances=balances.sub(amount)和balances]=balances].add(_value)中,调用Safemath库中的安全函数来完成加减操作,但是在第三行代码,uint256amount=uint256(cnt)*_value却直接使用乘法运算符。

其中变量cnt为转账的地址数量,可以通过外界的用户输入_receivers进行控制,_value为单地址转账数额,也可以直接进行控制。乘法运算溢出,产生了非预期amount数值,并且外界可以通过调整_receivers和_value的数值进行操控。紧接着下面有一句对amount进行条件检查的代码require(_value>0&&balances>=amount);其中balances代表当前用户的余额。amount代表要转的总币数。代码意思为确保当前用户拥有的代币余额大于等于转账的总币数才进行后续转账操作。因为通过调大单地址转账数额_value的数值,amount溢出后可以为一个很小的数字或者0,很容易绕过balances>=amount的检查代码。从而产生巨大_value数额的恶意转账。

攻击者的恶意转账记录,可以从如下链接看到https://etherscan.io/tx/0xad89ff16fd1ebe3a0a7cf4ed282302c06626c1af33221ebe0d3a470aba4a660f。

可以从代码totalSupply进行看到,bec代币总量共计才7000000000枚。

但是攻击者通过溢出amount绕过后续require中的判定条件分别向两个地址恶意转账了57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000.792003956564819968枚bec代币。

4.合约整数漏洞事件总结

单纯从技术上来说,smt和bec的本次合约的漏洞成因和利用都不复杂,均是通过构造恶意的整数溢出绕过条件检查。相信以太坊生态下的其他数千种代币的合约也不同程度的存在类似的整数漏洞安全隐患,由于Solidity合约是直接跟钱打交道,合约的安全开发和审计值得ICO项目方和Solidity开发人员投入更多时间和精力,确保合约的安全性。

参考链接:https://ethereumdev.io/safemath-protect-overflows/https://zhuanlan.zhihu.com/p/35989258?utm_medium=social&utm_member=ZjZlYmQ1MGZkMjZjZmJkNTE4MGFmMmExZjA5NTM0NmE=&utm_source=wechat_session&wechatShare=1&from=timeline&isappinstalled=0

更多精彩内容,关注链闻ChainNews公众号,或者来微博@链闻ChainNews与我们互动!转载请注明版权和原文链接!

来源链接:www.8btc.com

本文来源于非小号媒体平台:

链闻研究院

现已在非小号资讯平台发布1篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/3626905.html

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

下一篇:

文摘|确保加密货币安全的十条戒律

标签:INTUINVALUNTcointiger交易所官网QUINTAVALASPUNT

比特币价格实时行情热门资讯
加密货币:联合国官员:技术有益,但加密货币领域犯罪也必须打击_美国加密货币

联合国网络犯罪、反和反资助恐怖主义部门负责人尼尔·沃尔什近日接受了TechRepublic的采访。在采访中,沃尔什就网络安全、犯罪以及加密货币和区块链在这其中扮演的角色发表了看法.

1900/1/1 0:00:00
区块链:如何理解并非「100% 防弹」的区块链安全?_加密货币存在的意义

原文标题:《区块链安全性:解读》事实证明,「安全」是个挺难弄明白的事儿。人们之所以选择区块链,就是为了让彼此,特别是相互不信任的彼此,以一种安全的、防篡改的方式共享「贵重」数据.

1900/1/1 0:00:00
EOS:条条大路通罗马:实现数字货币双花攻击的多种方法_MRPOTATO价格

2008年,中本聪提出了一种完全通过点对点技术实现的电子现金系统。该方案的核心价值在于其提出了基于工作量证明的解决方案,使现金系统在点对点环境下运行,并能够防止双花攻击.

1900/1/1 0:00:00
EOS:黑客年底扎堆「冲业绩」?区块链行业显现「白帽」不足_APP

原文标题:《嚣张的黑客,和正在消失的防护网...……》失序的区块链行业里,时刻隐藏着风险,黑客就是其一.

1900/1/1 0:00:00
EER:比特小鹿BitDeer矿业生态大会即将在京举行 三大亮点惹关注_BTC币最新消息

经历了一轮牛熊转换,比特币价格重回高位,加密货币市场迎来艳阳天,比特币挖矿热潮再度掀起。一方面,以比特币为首的主流数字货币价格处在高位震荡,通过追涨杀跌持币的方式很难把握较大收益;另一方面,比特.

1900/1/1 0:00:00
ARK:数字钱包哪个好用?当然是首选TarK钱包_区块链最大局

数字钱包是通往区块链世界的入口。随着区块链技术的大火,数字钱包的热度也随之高涨。市面上各种各样的数字钱包琳琅满足,哪一个能拔得头筹呢?TarK钱包凭借先进的技术、坚固的安全防护措施以及多功能配置.

1900/1/1 0:00:00