CN115470498A - 一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法 - Google Patents

一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法 Download PDF

Info

Publication number
CN115470498A
CN115470498A CN202211163193.3A CN202211163193A CN115470498A CN 115470498 A CN115470498 A CN 115470498A CN 202211163193 A CN202211163193 A CN 202211163193A CN 115470498 A CN115470498 A CN 115470498A
Authority
CN
China
Prior art keywords
intelligent contract
reentry
refund
attack
contract
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211163193.3A
Other languages
English (en)
Inventor
陈虹
王颖辉
刘腊梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Liaoning Technical University
Original Assignee
Liaoning Technical University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Liaoning Technical University filed Critical Liaoning Technical University
Priority to CN202211163193.3A priority Critical patent/CN115470498A/zh
Publication of CN115470498A publication Critical patent/CN115470498A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明设计一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法,属于计算机网络安全领域;首先提出了一种重入攻击智能合约,是基于现有拍卖退款智能合约通过增加退款函数withdraw的方式,避免使用revert()方法进行优化得到的;为了验证重入攻击智能合约的有效性,使用promela语言将重入攻击智能合约转化为reentrancySecure.pml形式化文件,对重入攻击智能合约进行建模;最后将重入攻击智能合约模型进行形式化验证;采用本方法优化的智能合约能够避免因系统中断产生的重入攻击,与带有漏洞智能合约相比,优化后的智能合约等效内存使用量减少、搜索深度提升以及运行时间也有缩短。

Description

一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法
技术领域
本发明属于计算机网络安全领域,尤其涉及一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法。
背景技术
1995年密码学家尼科萨博提出了“智能合约”概念,智能合约是能够自动执行合约条款的计算机程序,由于其具有可信、去中心化特点被应用于区块链中。重入漏洞存在于合约之间的交互过程,常见的合约之间的交互其实也是很多的,例如:向未知逻辑的合约发送ether,调用外部合约中的函数等,在以上交互过程看似没有什么问题,但潜在的风险点就是外部合约可以接管控制流从而可以实现对合约中不期望的数据进行修改,迫使其执行一些非预期的操作。智能合约和一般程序不同,因其不可篡改性,使得其无法通过打补丁方式来修复,一旦遭受攻击,合约将无法被调用。
当智能合约的交易金额特别巨大,而同时发现合约上有较为明显漏洞时,将导致巨额资产损失。近五年因智能合约安全问题引发了诸多攻击事件。2016年6月,恶意攻击者利用Solidity语言中的递归调用splitDAO漏洞,入侵以太坊公有链上作为智能合约执行的最大众筹项目The DAO,导致超过6000万美元的以太币被盗;2017年,黑客利用Parity多重签名钱包合约中的委托调用漏洞,获取钱包地址的所有权并转移内部资产,导致价值上亿美元资金被冻结;2018年4月22日,BeautyChain出现安全漏洞,导致BEC损失64亿人民币;同年4月28日,EOS被爆出可能存在BEC合约类似的安全漏洞,若此漏洞存在,则极大可能导致市场价值归零,金融行业也因此蒙受较大损失;2020年8月,非法用户利用存在漏洞的智能合约导致YAM项目暴跌致崩盘。
智能合约中的部分函数执行是依赖于外部调用结果,该情况下又没有对外部返回的结果做严格控制,比如返回结果非预期的处理,可能会引发一些安全事故,因而可能会造成系统的意外中断。例如DoS攻击导致的KotET安全漏洞事件。该事件可能会造成系统资源的耗尽直至中断。2021年8月17日,BSC上DeFi项目XSURGE遭遇闪电贷攻击。当地时间8月16日,XSURGE官方在遭攻击前曾发布了关于SurgeBNB漏洞的声明,由于SurgeBNB合约不可更改且已被放弃,因此无法修补该漏洞。XSURGE称没有透露任何关于此漏洞性质的具体细节,但强烈建议用户尽快迁移出SurgereBnb,该漏洞随时可能被攻击者触发。在声明发布后,XSURGE随后便遭遇攻击,攻击者在SurgeBNB中窃取了500万美元。2022年3月27日,RevestFinance遭到黑客攻击。黑客利用了Revest合约的逻辑漏洞盗取了近770万枚ECO、579枚LYXe、近7.15亿枚BLOCKS以及超35万枚RENA,价值约200万美元。黑客攻击使用从TornadoCash取出的资金发动了攻击,通过SushiSwap以及Uniswap将盗取的Token兑换成了ETH,最后通过Tornado Cash平台将ETH转移到了其他账户。
案例表明,智能合约若自身存在漏洞隐患,会严重威胁用户信息和财产安全,甚至造成难以预估的损失。面对智能合约存在的安全问题,研究高效的合约漏洞优化方法具有重要意义。能够对智能合约漏洞进行完备性和安全性分析的方法目前仍未被提出,当前对于智能合约的安全保障主要依靠专家审计和人工复查,而该类方式不能保证代码的绝对安全。
目前针对智能合约漏洞研究主要以智能合约部署后检测是否存在漏洞为主。2020年,赵伟等针对目前没有利用符号执行技术检测漏洞问题,提出利用符号执行技术检测智能合约漏洞的方案,结果显示,对漏洞库中70份含漏洞的智能合约检测正确率达85%,但存在漏检率偏高且检索时间长等问题。2021年,朱飑凯等针对智能合约漏洞挖掘误报率、低效能等问题,提出一种基于动态模糊测试和机器学习的适用于智能合约漏洞的检测方法模型,使40352份智能合约样本中,OOB错误率低至5%以下,但对常见漏洞类型检测没有提及;同年,李宗鸿等针对现有符号执行检测速度慢的问题,结合深度优先与广度优先进行路径选择,提出一种自底向上求解约束的改进符号执行方法,该方法针对选取的100份带有漏洞的智能合约检测率达84%,但在几类常见漏洞分类检测方面没有深入研究。在智能合约部署前进行检测及优化的较少,针对可重入攻击的优化改进方面的研究也是进展缓慢。
发明内容
针对现有技术的不足,本发明设计了一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法。
一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法,具体包括以下步骤:
步骤1:设定重入攻击智能合约,contract reentrancy合约是不含拒绝服务漏洞的合约;所述重入攻击智能合约是基于现有拍卖退款智能合约通过增加退款函数withdraw的方式,避免使用revert()方法进行优化得到的;
首先定义并输入当前领先者currentFrontrunner、当前金额currentBid、存储退款映射refunds和退款数组refund;若保存到合约中金额大于当前最高价,则继续执行支付函数bid()和退款函数withdraw();否则,则中止支付函数bid(),执行退款函数withdraw();
bid()函数带有关键字“payable”是带有支付性质的函数;退款函数将需要退款的地址借助变量refund来存储,依次退款,以此来避免重入攻击;
使用solidity语言进行重入攻击智能合约编写,合约名字为reentrancySecure,该合约首先定义mapping类映射refunds来存储用户之间的退款,避免拒绝服务攻击,随后设计bid支付函数用于用户间竞价,最后设计withdraw函数用于执行用户的退款;
设置支付金额为vether(v<100)用于建议退款,点击bid按钮后,该笔交易成功执行,生成对应的合约地址及交易地址,花费一定的燃料费gas,然后点击withdraw按钮合约执行退款功能,vether被退回,该笔交易成功,仅花费很少的燃料费gas;
步骤2:为了验证重入攻击智能合约的有效性,使用promela语言将重入攻击智能合约转化为reentrancySecure.pml形式化文件,对重入攻击智能合约进行建模:
步骤2.1:首先将solidity代码翻译成等效Promela代码,将一部分solidity代码去除,其他部分直接或间接换成Promela代码语句;建模时对合约控制语句进行抽象,对合约控制语句进行形式化定义如下所示:
(B,σBM)→True:
(if(B){O},σBM)→(O,σBM) (1)
(B,σBM)→False:
(if(B){O},σBM)→(//,σBM) (2)
式1和式2为if语句,其中,B表示判断条件,σBM分别表示存储在智能合约上的全局变量和局部变量,判断条件分为True(真)和False(假),若判断条件为真时,执行操作O,∥表示若判断条件为假,不执行任何操作;
(B,σBM)→True:
(while(B){O},σBM)→(O,while(B){O},σBM) (3)
(B,σBM)→False:
(while(B){O},σBM)→(//,σBM) (4)
式3和式4为while语句,其中,B表示判断条件,σBM分别表示存储在智能合约上的全局变量和局部变量,判断条件分为True真和False假,若判断条件为真时,执行操作O再进行判断,∥表示若判断条件为假,不执行任何操作;
步骤2.2:在使用promela建模时,需要将solidity中的控制语句转换为promela语句;定义转化规则如下:
需要转化的只有上述if语句和while语句两个部分,promela中if语句的关键词需要以fi来结尾,如果达到条件,就执行相应语句,否则跳出循环;while需要转化成do关键字,同时以od来结尾,如果满足循环条件则一直循环,否则跳出循环向下执行;
步骤2.3:基于上述步骤对入攻击智能合约进行建模;
首先定义msg_sender,msg_value类型以及初始值、定义整型数组refunds用于存放退款、定义出价最高者currentFrontrunner以及出具金额currentBid;定义付款函数sendCoin,用于货币传输;定义amount和receiver,amount参数用于存储账户金额,receiver参数用于存储收款人即参与竞价的地址;定义交易函数bid:包含通道变量currentstate,用于存储当前参与竞价地址以及竞价金额;定义退款函数withdraw,用于进行地址的退款,同时避免重入攻击;
将上述提及所有函数使用关键字run来激活进程;最终得到重入攻击智能合约模型;
步骤3:将步骤2得到的重入攻击智能合约模型进行形式化验证;
利用Remix在线编辑器编写智能合约并编译运行,采用形式化验证工具SPIN进行形式化验证,包含语法校验和冗余校验,得出校验结果及运行日志;
将编写完成的“reentrancySecure.pml”文件导入到SPIN;对reentrancySecure.pml进行语法校验和冗余校验:使用“syntax check”进行语法校验,得出“无语法错误”的提示,使用“Redundancy check”进行冗余校验,得出“无冗余”的提示;使用“Verification”检验验证优化后的重入智能合约的安全性及效率,生成存储空间使用情况及运行时间。
本发明有益技术效果:
区块链智能合约为新兴技术,因其不可篡改性及分布式特性被广泛用于大宗交易,但也因不可篡改性使其无法通过打补丁的方式对带有漏洞的合约进行修补,因此,部署前对合约进行漏洞优化显得尤为重要,目前漏洞的优化还未提出通用性方法,还依靠专家及人工的经验,同时,针对重入型漏洞进展缓慢。本发明致力于只针对拍卖退款智能合约漏洞中由非正常退款引发的重入漏洞问题。实验结果表明,采用本文方法优化的智能合约能够避免因系统中断产生的重入攻击,与带有漏洞智能合约相比,优化后的智能合约等效内存使用量减少了约61.2%,搜索深度提升了近39%,运行时间也有缩短。
附图说明
图1本发明实施例一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法流程图;
图2本发明实施例reentrancySecure.pml语法校验结果;
图3本发明实施例reentrancySecure.pml冗余校验结果;
图4本发明实施例未优化智能合约形式化验证运行日志;
图5本发明实施例优化后智能合约形式化验证运行日志。
具体实施方式
下面结合附图和实施例对本发明做进一步说明。
当前对智能合约漏洞进行完备性和安全性分析的方法目前仍未被提出,对于智能合约的安全保障主要依靠专家审计和人工复查,而该类方式不能保证绝对安全。本发明基于拍卖退款交易应用场景中退款时产生的重入攻击问题,设计区块链拍卖退款交易智能合约重入攻击漏洞优化方法,如附图1所示,同时结合形式化验证技术,对优化后的重入攻击智能合约验证后表明效率和运行时间得到提升。
本发明实施例的实验环境:
(1)操作系统:基于
Figure BDA0003861004380000051
Workstation 16 Pro搭载的Ubuntu 16.04.7 LTS镜像;
(2)处理器:
Figure BDA0003861004380000052
CoreTM i5-10300H CPU@2.50GHz×4;
(3)内存:虚拟内存4.0GB(3.8GB可用);
(4)编程环境:Remix在线编辑器,Ispin形式化验证工具图形界面;
(5)编程语言:Solidity 0.4.15,Promela形式化验证语言。
一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法,具体包括以下步骤:
步骤1:设定重入攻击智能合约,contract reentrancy合约是不含拒绝服务漏洞的合约;所述重入攻击智能合约是基于现有拍卖退款智能合约通过增加退款函数withdraw的方式,避免使用revert()方法进行优化得到的。
首先定义并输入当前领先者currentFrontrunner、当前金额currentBid、存储退款映射refunds和退款数组refund;若保存到合约中金额大于当前最高价,则继续执行支付函数bid()和退款函数withdraw();否则,则中止支付函数bid(),执行退款函数withdraw();
bid()函数带有关键字“payable”是带有支付性质的函数;退款函数将需要退款的地址借助变量refund来存储,依次退款,以此来避免重入攻击;
使用solidity语言0.4.15版本进行重入攻击智能合约编写,合约名字为reentrancySecure,该合约首先定义mapping类映射refunds来存储用户之间的退款,避免拒绝服务攻击,随后设计bid支付函数用于用户间竞价,最后设计withdraw函数用于执行用户的退款;
设置支付金额为vether(v<100)用于建议退款,点击bid按钮后,该笔交易成功执行,生成对应的合约地址及交易地址,花费一定的燃料费gas,然后点击withdraw按钮合约执行退款功能,vether被退回,该笔交易成功,仅花费很少的燃料费gas。
步骤2:为了验证重入攻击智能合约的有效性,使用promela语言将重入攻击智能合约转化为reentrancySecure.pml形式化文件,对重入攻击智能合约进行建模:
步骤2.1:首先将solidity代码翻译成等效Promela代码,将一部分solidity代码去除,其他部分直接或间接换成Promela代码语句;建模时对合约控制语句进行抽象,对合约控制语句进行形式化定义如下所示:
(B,σBM)→True:
(if(B){O},σBM)→(O,σBM) (1)
(B,σBM)→False:
(if(B){O},σBM)→(//,σBM) (2)
式1和式2为if语句,其中,B表示判断条件,σBM分别表示存储在智能合约上的全局变量和局部变量,判断条件分为True(真)和False(假),若判断条件为真时,执行操作O,∥表示若判断条件为假,不执行任何操作;
(B,σBM)→True:
(while(B){O},σBM)→(O,while(B){O},σBM) (3)
(B,σBM)→False:
(while(B){O},σBM)→(//,σBM) (4)
式3和式4为while语句,其中,B表示判断条件,σBM分别表示存储在智能合约上的全局变量和局部变量,判断条件分为True真和False假,若判断条件为真时,执行操作O再进行判断,∥表示若判断条件为假,不执行任何操作;
步骤2.2:在使用promela建模时,需要将solidity中的控制语句转换为promela语句;定义转化规则如下:
需要转化的只有上述if语句和while语句两个部分,promela中if语句的关键词需要以fi来结尾,如果达到条件,就执行相应语句,否则跳出循环;while需要转化成do关键字,同时以od来结尾,如果满足循环条件则一直循环,否则跳出循环向下执行;
步骤2.3:基于上述步骤对入攻击智能合约进行建模;
首先定义msg_sender,msg_value类型以及初始值、定义整型数组refunds用于存放退款、定义出价最高者currentFrontrunner以及出具金额currentBid;定义付款函数sendCoin,用于货币传输;定义amount和receiver,amount参数用于存储账户金额,receiver参数用于存储收款人即参与竞价的地址;定义交易函数bid:包含通道变量currentstate,用于存储当前参与竞价地址以及竞价金额;定义退款函数withdraw,用于进行地址的退款,同时避免重入攻击;
上述提及所有函数是三个不同的进程名,使用关键字run来激活进程;最终得到重入攻击智能合约模型;
建模形式化代码如下:
交易函数sendCoin():
int amount;//定义一个账户用于存储交易额
If amount<high_sendCoin_account:
amount++;
assert(balances[msg_sender]>amount)
支付函数bid():
chancurrentstate=[2]of{byte,int};
assert(msg_value>currentBid);
msg_value=currenBid+msg_value;
currentFrontrunner=msg_sender;
退款函数withdraw():
chan refund=[2]of{byte,int};
currentFrontrunner=msg_sender;
重入攻击智能合约交易输出的详细信息如表1所示。
表1 优化后合约运行日志
Figure BDA0003861004380000071
其中,参数Status表示本次交易状态,参数from表示账户地址,参数to表示合约地址,参数gas表示花费燃料,参数Transaction cost表示交易燃料,参数hash表示交易加密,参数value表示交易10ether。contract reentrancy中,gas>>Transaction cost(燃料费与交易费不等),并未花费全部资源来支撑本次交易,表明不存在拒绝服务漏洞。
优化智能合约执行withdraw退款函数后结果如表2所示。
表2withdraw退款函数运行日志
Figure BDA0003861004380000072
Figure BDA0003861004380000081
表2中,参数value表示交易0ether。本次拍卖完成后不存在资源耗尽问题,同时在运行withdraw退款函数后系统资源由表1的65651gas变为表2的23804gas,参数value由表1的10ether变为表2的0ether,表明退款成功。
步骤3:将步骤2得到的重入攻击智能合约模型进行形式化验证;
利用Remix在线编辑器编写智能合约并编译运行,采用形式化验证工具SPIN进行形式化验证,包含语法校验和冗余校验,得出校验结果及运行日志。
将编写完成的“reentrancySecure.pml”文件导入到SPIN;对reentrancySecure.pml进行语法校验和冗余校验:使用“syntax check”进行语法校验,如附图2所示,得出“无语法错误”的提示,使用“Redundancy check”进行冗余校验,如附图3所示,得出“无冗余”的提示;使用“Verification”检验验证优化前后的重入智能合约的安全性及效率,生成存储空间使用情况及运行时间等数据,如附图4、附图5所示。
形式化验证记录对比如表3所示。
表3 形式化验证记录对比
Figure BDA0003861004380000082
其中,equivalent memory usage for states表示等效内存占用量,actualmemory usage for states表示实际状态占用量,total actual memory usage表示总共实际内存占用,compression表示压缩率,elapsed time表示运行时间。
运行日志表明,优化后智能合约与带有漏洞智能合约的总存储空间占用基本相同,但在等效内存使用量方面,优化后的智能合减少了约62.8%,说明优化后的智能合约空间利用率更高。运行时间也减少了44.9%。

Claims (4)

1.一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法,其特征在于,具体包括以下步骤:
步骤1:设定重入攻击智能合约,contract reentrancy合约是不含拒绝服务漏洞的合约;所述重入攻击智能合约是基于现有拍卖退款智能合约通过增加退款函数withdraw的方式,避免使用revert()方法进行优化得到的;
步骤2:为了验证重入攻击智能合约的有效性,使用promela语言将重入攻击智能合约转化为reentrancySecure.pml形式化文件,对重入攻击智能合约进行建模;
步骤3:将步骤2得到的重入攻击智能合约模型进行形式化验证。
2.根据权利要求1所述的一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法,其特征在于,步骤1所述设定重入攻击智能合约具体为:
首先定义并输入当前领先者currentFrontrunner、当前金额currentBid、存储退款映射refunds和退款数组refund;若保存到合约中金额大于当前最高价,则继续执行支付函数bid()和退款函数withdraw();否则,则中止支付函数bid(),执行退款函数withdraw();
bid()函数带有关键字“payable”是带有支付性质的函数;退款函数将需要退款的地址借助变量refund来存储,依次退款,以此来避免重入攻击;
使用solidity语言进行重入攻击智能合约编写,合约名字为reentrancySecure,该合约首先定义mapping类映射refunds来存储用户之间的退款,避免拒绝服务攻击,随后设计bid支付函数用于用户间竞价,最后设计withdraw函数用于执行用户的退款;
设置支付金额为vether(v<100)用于建议退款,点击bid按钮后,该笔交易成功执行,生成对应的合约地址及交易地址,花费一定的燃料费gas,然后点击withdraw按钮合约执行退款功能,vether被退回,该笔交易成功,仅花费很少的燃料费gas。
3.根据权利要求1所述的一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法,其特征在于,步骤2具体为:
步骤2.1:首先将solidity代码翻译成等效Promela代码,将一部分solidity代码去除,其他部分直接或间接换成Promela代码语句;建模时对合约控制语句进行抽象,对合约控制语句进行形式化定义如下所示:
(B,σBM)→True:
(if(B){O},σBM)→(O,σBM) (1)
(B,σBM)→False:
(if(B){O},σBM)→(//,σBM) (2)
式1和式2为if语句,其中,B表示判断条件,σBM分别表示存储在智能合约上的全局变量和局部变量,判断条件分为True(真)和False(假),若判断条件为真时,执行操作O,∥表示若判断条件为假,不执行任何操作;
(B,σBM)→True:
(while(B){O},σBM)→(O,while(B){O},σBM) (3)
(B,σBM)→False:
(while(B){O},σBM)→(//,σBM) (4)
式3和式4为while语句,其中,B表示判断条件,σBM分别表示存储在智能合约上的全局变量和局部变量,判断条件分为True真和False假,若判断条件为真时,执行操作O再进行判断,∥表示若判断条件为假,不执行任何操作;
步骤2.2:在使用promela建模时,需要将solidity中的控制语句转换为promela语句;定义转化规则如下:
需要转化的只有上述if语句和while语句两个部分,promela中if语句的关键词需要以fi来结尾,如果达到条件,就执行相应语句,否则跳出循环;while需要转化成do关键字,同时以od来结尾,如果满足循环条件则一直循环,否则跳出循环向下执行;
步骤2.3:基于上述步骤对入攻击智能合约进行建模;
首先定义msg_sender,msg_value类型以及初始值、定义整型数组refunds用于存放退款、定义出价最高者currentFrontrunner以及出具金额currentBid;定义付款函数sendCoin,用于货币传输;定义amount和receiver,amount参数用于存储账户金额,receiver参数用于存储收款人即参与竞价的地址;定义交易函数bid:包含通道变量currentstate,用于存储当前参与竞价地址以及竞价金额;定义退款函数withdraw,用于进行地址的退款,同时避免重入攻击;
将上述提及所有函数使用关键字run来激活进程;最终得到重入攻击智能合约模型。
4.根据权利要求1所述的一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法,其特征在于,步骤3进行形式化验证具体为:
利用Remix在线编辑器编写智能合约并编译运行,采用形式化验证工具SPIN进行形式化验证,包含语法校验和冗余校验,得出校验结果及运行日志;
将编写完成的“reentrancySecure.pml”文件导入到SPIN;对reentrancySecure.pml进行语法校验和冗余校验:使用“syntax check”进行语法校验,得出“无语法错误”的提示,使用“Redundancy check”进行冗余校验,得出“无冗余”的提示;使用“Verification”检验验证优化后的重入智能合约的安全性及效率,生成存储空间使用情况及运行时间。
CN202211163193.3A 2022-09-23 2022-09-23 一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法 Pending CN115470498A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211163193.3A CN115470498A (zh) 2022-09-23 2022-09-23 一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211163193.3A CN115470498A (zh) 2022-09-23 2022-09-23 一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法

Publications (1)

Publication Number Publication Date
CN115470498A true CN115470498A (zh) 2022-12-13

Family

ID=84335678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211163193.3A Pending CN115470498A (zh) 2022-09-23 2022-09-23 一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法

Country Status (1)

Country Link
CN (1) CN115470498A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117436091A (zh) * 2023-12-21 2024-01-23 电子科技大学(深圳)高等研究院 基于模型检测的区块链众筹合约形式化验证方法
CN118277284A (zh) * 2024-06-04 2024-07-02 华东交通大学 一种基于形式化验证的智能合约安全审核系统及方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117436091A (zh) * 2023-12-21 2024-01-23 电子科技大学(深圳)高等研究院 基于模型检测的区块链众筹合约形式化验证方法
CN117436091B (zh) * 2023-12-21 2024-04-12 电子科技大学(深圳)高等研究院 基于模型检测的区块链众筹合约形式化验证方法
CN118277284A (zh) * 2024-06-04 2024-07-02 华东交通大学 一种基于形式化验证的智能合约安全审核系统及方法

Similar Documents

Publication Publication Date Title
Zhang et al. {TXSPECTOR}: Uncovering attacks in ethereum from transactions
US10698885B2 (en) Method and device for writing service data in block chain system
US11074350B2 (en) Method and device for controlling data risk
RU2635275C1 (ru) Система и способ выявления подозрительной активности пользователя при взаимодействии пользователя с различными банковскими сервисами
CN115470498A (zh) 一种基于拍卖退款交易智能合约重入攻击漏洞的优化方法
Lu et al. NeuCheck: A more practical Ethereum smart contract security analysis tool
CN111898360A (zh) 基于区块链的文本相似性检测方法及装置、电子设备
David et al. Do you still need a manual smart contract audit?
US20220036350A1 (en) Cross-border resource transfer authenticity verification method, device and electronic equipment
Demir et al. Security smells in smart contracts
Cui et al. VRust: Automated vulnerability detection for solana smart contracts
Qin et al. The blockchain imitation game
Duan et al. Multiple‐Layer Security Threats on the Ethereum Blockchain and Their Countermeasures
Ma et al. Pied-piper: Revealing the backdoor threats in ethereum erc token contracts
US20220036351A1 (en) Method and apparatus for resource exchange
CN115408689A (zh) 一种重入漏洞的检测与修复方法、系统
CN112261020A (zh) 一种分布式远程外包数据审计系统及方法
Leid et al. Testing ethereum smart contracts: A comparison of symbolic analysis and fuzz testing tools
Xu et al. A survey on vulnerability detection tools of smart contract bytecode
Li et al. Protect your smart contract against unfair payment
He et al. TokenCat: detect flaw of authentication on ERC20 tokens
Ibba et al. Analysis Of The Relationship Between Smart Contracts' Categories and Vulnerabilities
CN103034810A (zh) 一种检测方法、装置及电子设备
Fekih et al. Formal modeling and verification of erc smart contracts: Application to nft
Verheijke et al. An exploratory study on solidity guards and ether exchange constructs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination