链资讯 链资讯
Ctrl+D收藏链资讯
首页 > ETH > 正文

ETH:合约变量的“皇帝新衣” |成都链安漏洞分析连载第九期 ——外部读取状态变量_Rage On Wheels

作者:

时间:

针对区块链安全问题,成都链安科技团队每一周都将出智能合约安全漏洞解析连载,希望能帮助程序员写出更加安全牢固的合约,防患于未然。引子:外以欺于人,内以欺于心–唐·韩愈《原毁》前景提要

上回书,转账过程纷繁复杂,安全应对各个击破。面对直接涉及以太转账的游戏合约,在使用官方提供的转账函数同时,添加不同账户类型的区别处理以及失败情况下的异常处理乃明智之举。此外,构建合约逻辑避免依赖于合约余额确切值应铭记在心,如有特殊考虑,切记定义状态变量明确余额变化,万不可想当然而为之。本期话题

第九回,合约安全隐私未必,外部读取暴露无遗。

我们在前几回主要讨论的都是在合约内部构建函数和代码书写规范时产生的一些误区和安全隐患。但是对于智能合约这个崭新的概念,仅仅从合约层面本身考虑合约的安全可能并不足够。合约开发者在这个产业蓬勃发展的过程当中,为了赶上项目进度,不得以边学习边实践,即使在代码书写层面功底很扎实的情况下,仍然会因为区块链技术的特殊性埋藏一些不自知的安全隐患。所以,这一回我们将要阐述的安全隐患就是因为“合约中的一切都是公开可见”这一特性造成的。基础小知识

BTC合约多空持仓人数比为0.66,市场做空人数仍占优:分析师表示,截至9月21日10:30,根据OKEx交易大数据,BTC合约多空持仓人数比为0.66,市场做空人数仍占优;而季度合约基差继续维持在200美元上方,永续合约资金费率在0值附近浮动,交割及永续合约持仓总量维持在9亿美元附近;BTC交割及永续合约精英持仓方面,做空账户比为50.00%占据优势,多头持仓比为20.35%占据优势,精英账户多空双方仍有分歧但不大,关注大户持仓变化。从期权合约数据来看,看涨/看跌主动买入量比为0.58,主动看跌量占优。[2020/9/21]

在第七期的关于未初始化局部变量中我们介绍了变量存储的知识。Solidity对复杂的数据类型,比如数组和结构体,会默认存储在Storage当中。没有提到的是关于智能合约中对于变量从作用域的划分。目前的划分包括三种,全局公有变量,全局私有变量,局部变量。其中,全局变量一般储存在storage当中,而结构、数组或映射类型的局部变量,默认会放在存储storage中,除结构、数组及映射类型之外的局部变量,会储存在栈中。公有和私有是可见性说明符,公有变量在合约内部外部均可见,而私有变量仅在当前合约可见。另外还有两个可见性类别在这里我们也介绍一下:external,表示仅在外部可见,即仅可用于消息调用;internal,仅在内部可见,表示的意思是仅在Solidity合约与子合约均可见,不仅限于当前合约内。问题出在哪

独家 | Bakkt期货合约数据一览:金色财经报道,Bakkt Volume Bot数据显示,8月25日,Bakkt比特币月度期货合约日交易额为1.4770亿美元,创历史新高,同比上升15%,未平仓合约量为941万美元,同比下降10%。[2020/8/26]

由于状态变量一般是需要永久存储的变量,所以一定会储存在storage中,联系第七期的知识,storage是存在于区块链当中的,可以类比为计算机的存储磁盘。那么状态变量其实一直存在于区块链当中,对于结构、数组或映射类型的局部变量也是同样的道理。这样一来,即使加上了可见性说明符,例如私有状态变量,根据区块链公开的特性,它也还会是公开的,因为这个私有仅限于合约层面的私有,合约之外依然可以读取。这个附加的可见性说明符就像子给皇帝穿上的新衣,以“”到合约层面的函数和变量,在合约外部却形同虚设。那么,从外部如何读取状态变量呢,下面我们从合约外部的角度分析具体的流程。如何从合约外部读取变量

24小时BTC全网合约成交数据显示:空方占优:据合约帝数据显示,最近24小时BTC全网合约成交量中开多比例为48.83%,开空比例为51.17%。主流合约交易所中,Huobi季度开多比例为50.35%,开空比例为49.65%;OKEx季度开多比例为51.37%,开空比例为48.63%;BitMEX合约开多比例为45.76%,开空比例为54.24%。[2020/4/11]

一、状态变量接着上面的概念,合约的状态变量都是存在于区块链中,就像存储在磁盘中的文件,因此,那么我们可以直接通过访问区块链获取这些状态变量的值。例如针对以下案例合约进行全真模拟操作:将上面的合约部署在ropsten测试链上,获得地址0x9e550E6911b38412964C5C956383757c9FA7F860,然后登陆METAMASK钱包进入浏览器控制台console:1.查看变量a,输入:web3.eth.getStorageAt('0x9e550E6911b38412964C5C956383757c9FA7F860',0,function(x,y){console.log(y。)会得到:2.查看变量str获取16进制结果,输入:web3.eth.getStorageAt('0x9e550E6911b38412964C5C956383757c9FA7F860',1,function(x,y){console.log(y。)转换为字符串,输入:web3.eth.getStorageAt('0x9e550E6911b38412964C5C956383757c9FA7F860',1,function(x,y){console.log(web3.toAscii(y)。)会得到:3.查看ownerweb3.eth.getStorageAt('0x9e550E6911b38412964C5C956383757c9FA7F860',2,function(x,y){console.log(y。)4.查看balanceOf这个稍微复杂一些,由于映射变量不是按照定长变量的顺序存储,其是一个键值对,EVM采用的机制是将其存在sha3(key+slot)处输入进控制台,得到:二、局部变量局部变量直接编码到opcode中,例如上面合约localVar函数中的local变量三、建议上面的读取操作验证了只要是储存在storage里面的变量,都是可以通过不执行合约函数就直接获取的。因此,依赖可见性说明符,将隐私,不可公开的数据存储在区块链上是很不安全的做法。如果真的要将隐私数据储存在区块链中,也要进行相应的加密处理。欲穷千里目更上一层楼区块链时代的安全包含传统互联网安全,智能合约安全等多个方面,对于合约层面的安全考量固然是一方面,但是对于数据存储方面,不沿用互联网安全的理念,盲目信赖新技术却又不深入挖掘新技术某些特性、限制条件、特殊情况,势必无法做到真正意义上的全面防护。目前区块链产业步伐放缓,正是我们深入学习了解这个领域的最佳时机,也是这个产业提升稳健性的最佳契机。更上层楼,与君共勉。参考资料:

分析 | 报告显示:区块链及智能合约可提高全球矿业的透明度及供应链效率:据Newsbtc消息,国际律师事务所White & Case近日发布报告称,区块链技术及其伴生的智能合约可能有助于提高全球矿业的透明度,并提升整个供应链的效率。[2018/9/21]

:以太坊智能合约OPCODE逆向之理论基础篇:https://paper.seebug.org/640/:可见性和getter函数:https://solidity-cn.readthedocs.io/zh/develop/contracts.html#getter:JSON-RPC#eth_getstorageat:https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getstorageat:以太坊数据存储的思考和解读:https://blog.csdn.net/Blockchain_lemon/article/details/79308137:HowtoreadEthereumcontractstorage:https://medium.com/aigang-network/how-to-read-ethereum-contract-storage-44252c8af925相关阅读:链安团队漏洞分析连载第一期一一溢出漏洞链安团队漏洞分析连载第二期——拒绝服务漏洞链安团队漏洞分析连载第三期——竞态条件漏洞链安团队漏洞分析连载第四期——底层函数误用漏洞链安团队漏洞分析连载第五期一一权限验证错误链安团队漏洞分析连载第六期一一游戏合约漏洞全面汇总链安团队漏洞分析连载第七期一一存储器局部变量未初始化链安团队漏洞分析连载第八期一一以太坊转账安全风险

慢雾安全团队发布 BEC智能合约无限转币漏洞分析及预警:据了解,4月22日13时左右,BEC出现异常交易。慢雾安全团队第一时间分析发现,BEC智能合约(https://etherscan.io/address/0xc5d105e63711398af9bbff092d4b6769c82f793d)中的batchTransfer批量转账函数存在漏洞,攻击者可传入很大的value数值,使cnt*value后超过unit256的最大值使其溢出导致amount变为0。

通过此次分析,慢雾安全团队建议智能合约开发者在批量转账时严格校验转出总额amount是否大于0,及在for循环内执行balances[msg.sender].sub(value)操作。

这类漏洞属于不可逆的破坏型漏洞,慢雾安全团队建议其他智能合约发布方及时自查。[2018/4/23]

标签:ETHSTORSTORAGEEthereum YieldSTOR币storj币值得投资吗Rage On Wheels

ETH热门资讯
XRP:瑞波币被看好,日本棒球运动员请愿XRP为东京奥运会官方数字货币_PPL

在奥运会上通过加密货币进行支付,是不是意味着区块链应用的进一步拓展和政府对于加密货币的重视?在将要到来的东京奥运会,可能会实现这一设想.

区块链:聚焦互联网支付安全,中银联与京东金融合作上线区块链风险信息共享平台_BAT

近日,中国银联与京东金融共同发起的“互联网金融支付安全联盟风险信息共享平台”正式上线,并接入双方风控数据投入运营.

ETH:11月6日区块链数据日报「BTCÐ」_LBTC币

BTC数据日报*分析师观点*昨日BTC市场活跃程度明显增加,交易热情大幅升温,昨日流入流出交易所数量较前日增长近100%;大额转账数量较前日增长78%.

比特币:比特币十年:如何延续支付革命的驱动力?_区块链

2008年11月1日,在一个“密码学邮件组”中出现一个署名为中本聪的新帖子。我正在开发一种新的电子货币系统,采用完全点对点的形式,且无需受信第三方的介入.

区块链:借国务院批复海南自贸区东风 区块链能趁机起飞么?_ONE

编者按:本文来自链塔智库,作者:链塔分析师团队,Odaily星球日报经授权发布。10月16日,传闻已久的海南自贸区终于靴子落地.

区块链:ST(Security Token)——证券Token化的金融实践_TOKEN

ST——SecurityToken,近来在圈内的火爆程度与当下遭遇寒冬的资本市场,以及哀嚎遍野的数字货币市场形成了强烈而鲜明的对比.