[发明专利]基于交易源认证器的智能合约的安全函数设计方法及系统在审
申请号: | 201910266466.9 | 申请日: | 2019-04-03 |
公开(公告)号: | CN109829825A | 公开(公告)日: | 2019-05-31 |
发明(设计)人: | 赵相福;陈中育;林飞龙;郑忠龙;马永进;骆宾逸 | 申请(专利权)人: | 浙江师范大学 |
主分类号: | G06Q40/04 | 分类号: | G06Q40/04;G06Q20/38 |
代理公司: | 北京金智普华知识产权代理有限公司 11401 | 代理人: | 杨采良 |
地址: | 321004 *** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 源认证 交易 设计方法及系统 断言 安全函数 安全技术领域 智能 继续执行 身份认证 信息检测 攻击 有效地 被盗 区块 防御 漏洞 封锁 失败 成功 | ||
本发明属于区块链安全技术领域,公开了一种基于交易源认证器的智能合约的安全函数的设计方法及系统,当EVM执行到交易源tx.origin信息检测代码时,以太坊后续执行路径被封锁;然后,对tx.origin进行断言,若断言成功,则后续路径被打开继续执行;若因攻击造成断言失败,则后续路径被EVM拒绝,最终,EVM回到初始状态,完成对本次攻击的防御。本发明利用交易源认证器txOriginUsage函数有效地解决了交易源tx.origin误用导致的漏洞问题;如果不用本发明提供的方法,而直接使用tx.origin进行身份认证,则造成以太币极容易被盗取。
技术领域
本发明属于区块链安全技术领域,尤其涉及一种基于交易源认证器的智能合约的安全函数设计方法及系统。
背景技术
目前,最接近的现有技术:
tx.origin误用漏洞:tx.origin是以太坊智能合约语言Solidity的一个全局变量,代表交易的源头,与常用的消息发送者msg.sender相似但又有较大的区别:tx.origin遍历调用栈并返回最初的发送者的地址,而msg.sender返回的是当前消息发送者的地址。因此,在智能合约中误用tx.origin进行身份验证会使得智能合约易受到类似网络钓鱼的攻击。
具体来说,如图2所示,Fishable钓鱼合约可以理解为一个私人钱包合约,谁创建了该合约即为该合约的owner。合约owner可以在该合约存储以太币,也可以通过函数withdrawAll()取出所有以太币(当然仅允许owner支取)。漏洞出现在图2第12行require(tx.origin==owner),即通过检测tx.origin与owner的一致完成身份验证。在第13行,向_recipient地址转发该合约中所有的以太币。
攻击具体过程如下:攻击者首先部署恶意合约Attack,然后说服Fishable合约用户发送一定数量的以太币到该合约。只要受害者向Attack发送以太币,Attack将调用fallback函数,而该函数又以attacker为参数(即攻击者想要获益的账户),调用Fishable中的withdrawAll函数。正常情况下身份验证的代码为require(owner==msg.sender),其中msg.sender的值为Attack合约的地址,而owner的值是Fishable合约的所有者,所以攻击者无法获利。
但是,漏洞合约的身份验证代码是require(tx.origin==owner),而tx.origin的值为最初的交易发送者即交易源的地址,于是攻击者实施攻击:1、(诱骗)Fishable合约的所有者向Attack合约发送以太币;2、触发Attack合约的fallback函数;3、在fallback函数调用withdrawAll函数。从该系列调用中看出,最初的交易源发送者的确是Fishable合约的所有者,所以第12行的断言为真,即身份验证代码能够通过。于是,第13行代码将合约中所有以太币发送给攻击者,从而导致Fishable合约的以太币被盗取。
综上所述,现有技术存在的问题是:
(1)以太坊的全局变量在运用时,特别容易被误用,且最新的以太坊虚拟机并未重视这些全局变量误用带来的后果。
从智能合约开发者角度上,现有技术不能有效解决误用tx.origin导致的漏洞问题。
现有技术中,还没有发现利用函数库避免带有tx.origin误用漏洞的合约攻击问题。
(2)如果想要采用智能合约检测工具来检测tx.origin误用漏洞,现有的大部分检测工具都未提供这类检测。
解决上述技术问题的难度:
本问题具有一定的技术难度,重点在于需要对tx.origin误用有清晰的认知和深入的研究。
而在智能合约的编写过程中,大多数编码人员尚未注意到tx.origin误用的严重危害。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江师范大学,未经浙江师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910266466.9/2.html,转载请声明来源钻瓜专利网。