“真行者珞珈山诉苦,假猴王水帘洞誊文。” ——《西游记·第五十八回》
在《西游记》中,六耳猕猴冒充猴王孙悟空,以假乱真,过了唐僧,过了众神,纵使是照妖镜也分不出真假。现在,智能合约遇上了“六耳猕猴”,又会擦出怎样的火花?
在智能合约中,构造函数负责一些数据的初始化工作,owner值一般也会放在构造函数中进行初始化。owner是智能合约拥有者的称呼,也常被用来作为该合约的超级管理员。对代币合约来说,owner可能被分配的权限有:铸造/销毁代币、冻结代币等。如果开发者以错误的语法创建“构造函数”,造成构造函数缺失,致使“六耳猕猴”以假乱真,瞒过了开发者,最后使得攻击者成为合约的拥有者(owner),那么攻击者便可依赖owner的权限,对代币进行增发或销毁等操作,进而可能造成整个代币的崩盘。
Ripple内部人士称智能合约将进入XRP账本:金色财经报道,支付公司Ripple的前主要开发者倡导者透露,一项关键功能即将进入XRP分类账(XRPL)。Ripple公司内部人士Matt Hamilton回应了一位匿名推特用户提出的支付网络XRP没有用处的说法。
根据Matt Hamilton的说法,XRP每天都被用于国际支付、NFT和网络货币化等方面。同样在11月,Ripple的首席技术官David Schwartz表示,XRPL上已经有一些NFT被铸造出来。[2022/12/25 22:05:44]
在Solidity语言中,当函数名和合约名相同时,此函数就是合约的构造函数,在合约对象创建时,会先调用构造函数对相关的数据进行初始化。
以太坊Solidity 0.4.22版本中引入了关键字constructor,新的构造函数声明形式:constructor() public { },引入的目的是用以替代低版本中将合约名作为构造函数名的语法形式,从而避免开发者笔误造成构造函数命名错误的问题。引入的这个关键字看似平淡无奇,实则意蕴深刻,且听我慢慢道来。
网络安全公司Halborn完成Apricot Finance智能合约审计:据官方消息,基于Solana网络的去中心化货币市场平台Apricot Finance与网络安全公司Halborn完成外部审计。
Apricot Finance一直与网络安全审计公司Halborn合作,以确保平台的安全。Halborn的任务是对借贷平台进行一系列安全测试,以防止任何低级漏洞。安全测试的范围包括根据Apricot智能合约私有Github存储库中的代码对风险和影响进行评估。经过Halborn团队对代码的手动审查以及自动化安全测试,Halborn对Apricot Finance协议的审计总体上取得了令人满意的结果。Halborn的外部审计使Apricot在确保即将推出的主网安全性方面又迈进了一步。
据悉,Apricot Finance即将上线主网。Apricot由Lend、X-Farm和Assist三个产品组成。[2021/10/4 17:24:04]
下面以ethernaut靶场的Fallout题目为例进行分析。一眼看去,这似乎是一个正常没有漏洞的合约代码,但经过仔细观察发现,该合约存在一个致命错误——构造函数名称与合约名称不一致,Fallout合约的构造函数被写错成了Fal1out(字母l和数字1的差异),这样的错误使其成为了一个被public修饰的普通函数,失去了构造函数仅在合约部署时被调用的特性,使得任何人都可以调用。该题目源码如下图所示:
QuickSwap与以太坊智能合约自动执行工具Gelato Network合作提供限价订单功能:Polygon网络上的去中心化交易所QuickSwap与以太坊智能合约自动执行工具Gelato Network达成合作,已为用户提供限价单服务。[2021/8/17 22:19:31]
图 1
在Fal1out函数中直接指定了函数调用者的地址即为owner,所以只需要调用Fal1out函数即可实现对合约owner的更改。如下图所示:
动态 | 去中心化交易所AirSwap出现智能合约漏洞 目前已修复:据theblockcrypto报道,以太坊去中心化交易所AirSwap称,发现一个智能合约漏洞,该漏洞允许攻击者直接进行代币交易,而无需对手方确认。据AirSwap团队称,该漏洞仅在其系统中出现不到24小时,其中10个账户被确定为“有风险”。确定漏洞后,AirSwap团队进行回滚处理,并联系相应用户进行补救措施。[2019/9/15]
图 2
“假猴王”Fal1out想借着一些字体类型的相似字符的视觉差异混淆视听,可最终还是没能逃过我们的“火眼金睛”。
在过去也曾发生过类似的安全事件,包含着假构造函数的合约被成功发布到主链上,其中比较出名的是“MorphToken事件”,其因为一个看似很小的问题而造成了数千万市值的代币被增发。合约代码地址:https://etherscan.io/address/0x2ef27bf41236bd859a95209e17a43fbd26851f92#code
国际贸易数字化委员会联合企业推出贸易业的智能合约平台:据国际贸易数字化委员会ITDC(International Trade Digitalization Commission)称,ITDC已经正式宣布推出基于区块链技术,针对贸易行业打造的新一代智能合约平台。据悉,项目主要发起人之一、大龙网集团董事长冯剑峰表示,从过去骆驼到船队,再到现在的互联网,全球贸易每一次变革背后,都是贸易量的剧增和成本的剧减。今天,随着传统跨境贸易中海量中小企业成为主角,订单碎片、高频交易带来的是贸易服务成本高企。区块链技术为这些问题带来全新的解决思路。[2018/3/22]
在Owned合约中,由于首字母大小写的错误,导致本该成为构造函数的Owned成为了普通函数owned,且被public修饰,可供任何人调用。如下图所示:
图 3
MorphToken合约继承了Owned合约,并在自己的构造函数内进行了owner的初始化,但是父合约Owned的owned函数是可供任何人调用的,攻击者便可通过调用owned函数更改合约的所有者owner。owner的初始化代码如下图所示:
图 4
由上述可知,任何人都可以通过调用合约的owned函数,成为合约的拥有者(owner)。如下图所示:
图 5
失之毫厘,差之千里,一个小小的字母错误,却导致了合约的代币的崩盘。代币也被恶意增发。如下图所示:
图 6
建议更换Solidity 0.4.22及以上版本,并使用正确的constructor()语法。如下图所示:
图 7
切记: constructor()前并无function,function constructor() public { }为错误的构造函数形式。
如果要使用低于0.4.22的版本,则一定要着重检查函数名是否和合约名一致。如下图所示:
图 8
在智能合约中因开发者粗心,而造成安全漏洞的事件层出不穷,“千里之堤,溃于蚁穴”,成都链安-安全实验室在此给出如下建议:
1、 开发者在编写智能合约敏感函数(如构造函数、回退函数fallback)时,应严格按照官方要求的代码书写规范,注意不要出现字符错误等情况。
2、 在某些情况下,编译器会对constructor的错误使用发出警告,开发者应予以正确对待,不可认为其只是警告信息而忽略不处理。
3、 在合约正式上线前一定要找专业可信的机构做好合约代码的审计工作。
A股市场持续上攻,一举突破3300点,大涨5.39%,投资者跑步入场,券商银行保险股集体上攻,时隔5年,中国股市再次火热起来,而BTC短线也迎来了快速拉升,站上9200美金.
1900/1/1 0:00:00这是一本什么书?本书资料翔实全面,内容重点突出,图文并茂,案例丰富,从全球背景与我国区块链发展现状方面介绍了区块链技术的基本情况,重点介绍了区块链技术的基本构成和应用方向.
1900/1/1 0:00:00据火币行情显示,昨日晚间BTC价格从最高9430开始大幅下跌,窄幅震荡后跌势未止,中午再度下挫,最低触及9126.49,目前局部价格在9150附近.
1900/1/1 0:00:00备受关注的杭州金融科技“监管沙盒”试点正式启动。6月23日,人民银行杭州中心支行发布公告,公开征集金融科技创新监管试点创新应用项目.
1900/1/1 0:00:00近期,河北、贵州、湖南、北京、广州、赣州等多省市发布区块链发展行动规划,对区块链平台建设、促进企业“上链”方面进行规划,国内区块链产业正迎来难得的发展机遇.
1900/1/1 0:00:00自萌芽以来,区块链行业的焦点就一直在技术应用上。现代金融是如此根深蒂固,使得区块链的大规模应用进展十分缓慢.
1900/1/1 0:00:00