【论文阅读】关于智能合约的漏洞检测

两篇论文,都是关于智能合约漏洞检测的综述文章
[1]崔展齐,杨慧文,陈翔等.智能合约安全漏洞检测研究进展[J/OL].软件学报:1-33[2024-03-05].https://doi.org/10.13328/j.cnki.jos.007046.
[2]王丹,黄松,王兴亚.以太坊智能合约测试研究综述[J].信息技术与信息化,2023(10):52-58.
两篇文章中主要内容都是总结了13种常见的漏洞类型并进行简单介绍、几类测试方法以及未来的工作和展望。在第一篇论文中还介绍了当前的基于机器学习的测试方法的公开数据集。

1 漏洞类型

不单单是这两篇论文,在其他的智能合约漏洞检测论文中,都是从高级语言层、EVM层和区块链层三层来进行大分类的。由于目前常见的合约语言都是solidity语言,所以大部分的高级语言层也可以说是针对solidity语言来编写代码的漏洞。
下图是[1]文献中的漏洞分类表:
分类1
分类2
其中,重点了解了重入漏洞。

1.1 重入漏洞

在了解重入漏洞之前,需要先了解一下转账函数和回调函数:
转账函数主要有三种:transfer()、send()和call()函数,三者的区别在于遇到异常的时候是否会抛出异常以及后续的代码是否还会继续执行;
回调函数是指fallback()函数,该函数在向合约转账的时候会自动调用。
所以在重入攻击事件中,账户A在向攻击合约转账之后,会自动调用fallback函数,如果攻击函数在fallback函数中添加了withdraw函数,该函数就会继续完成账户A向合约转账的行为,就会一直循环下去,因为call函数是没有上限的,所以会一直转账直到A中没有余额。
重入攻击
所以想避免这样的情况发生,就需要:
1)避免使用到call函数
2)在转账之前要先修改状态,这样下一次就算自动调用转账,也会因为状态不满足而无法执行
3)引入互斥锁,锁定合约状态

2 漏洞检测方法

在两篇论文中,主要提到的测试方法有:

  1. 符号执行:模拟程序的所有可能执行路径来检查代码中潜在错误
  2. 模糊测试:通过向程序提供随机生成的、异常的或无效的输入来观察其行为,以发现程序中的错误。
  3. 机器学习:通过将智能合约代码转化为模型能够识别的特征,构建机器学习或深度学习模型学习漏洞模式,然后对未知的智能合约进行安全漏洞检测。
  4. 形式化验证:利用数学方法证明程序的安全性。通过对问题建立数学模型,利用数学语言描述整个系统的全部状态,从而验证程序在各个状态下是否保持安全性和可靠性。
    下图是在机器学习方面著名的模型:

文献[2]模型1

文献[1]:模型2
其中图表征、序列表征和文本表征是指对代码进行怎么样的处理:

  1. 图表征:将源代码或字节码转换为控制流图、数据流图等表示形式,有效地抽象出智能合约代码的控制流逻辑、数据依赖关系等信息。反映代码中的语法和语义特征:GCN
  2. 序列表征:对源代码或字节码进行词法分析,提取变量访问、函数调用序列或语句调用序列等特征信息,并利用记忆力机制等方法学习提取出的序列信息:LSTM
  3. 文本表征:利用自然语言处理中的词嵌入算法,将智能合约转换为词向量。此方法直接把代码文本作为输入:Eth2Vec

3 展望

1、增加对其他平台或其他语言编写智能合约的检测工作,如Go、Java或Python智能合约。
2、在符号执行中采用静态和动态结合的方式,以缓解路径爆炸问题。
3、建立更精准的模糊测试模型,或构建验证器确认触发漏洞的测试用例。
4、构建可解释性更强的机器学习模型,或利用解释分析方法分析检测结果。
5、将动态检测方法作为静态分析的补充,对静态分析结果进行动态确认。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法设计与分析(超详解!) 第一节 算法概述

1.算法的定义 算法的非形式化定义:算法是规则的有限集合,是为解决特定问题而规定的一系列操作。 可以理解为:算法(algorithm)是指在解决问题时,按照某种机械的步骤一定可以得到问题的结果(有的…

【黑马程序员】STL实战--演讲比赛管理系统

文章目录 演讲比赛管理系统需求说明比赛规则程序功能 创建管理类功能描述创建演讲比赛管理类 菜单功能添加菜单成员函数声明菜单成员函数实现菜单功能测试 退出功能添加退出功能声明退出成员函数实现退出功能测试 演讲比赛功能功能分析创建选手类比赛成员属性添加初始化属性创建…

数据分析-Pandas最简单的方法画矩阵散点图

数据分析-Pandas直接画矩阵散点图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&…

有点炫酷有点diao的免费wordpress模板主题

这是一款经典的免费wordpress主题,被广泛应用于多个行业的网站。 https://www.wpniu.com/themes/189.html

vulhub中Weblogic < 10.3.6 ‘wls-wsat‘ XMLDecoder 反序列化漏洞(CVE-2017-10271)复现

Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。 访问http://your-ip:7001/即可看到一个404页面,说明weblogic已成功启动 …

Kubernetes 安全秘籍:5 个你必须知道的知识点

Kubernetes 安全和身份验证是确保集群和应用安全的关键。今天将深入探讨 Service Account、身份验证和RBAC的关键概念和实践,帮助您构建安全可靠的应用。今天本文将着重于安全相关的内容,并提供更详细的示例和配置说明,帮助兄弟们更深入地理解…

机器人期刊:Science Robotics and IEEE Transactions

文章目录 1. Science Robotics (出版商 AAAS)2. IEEE Transactions on RoboticsReference1. Science Robotics (出版商 AAAS) https://www.science.org/journal/scirobotics 2. IEEE Transactions on Robotics

10kV/35kV并网分布式光伏系统-实现错峰有序用电

根据国家电网 Q/GDW1480-2015 《分布式电源接入电网技术规定》:分布式电源并网电压等级可根据各 并网点装机容量进行初步选择,推荐如下: • 8kW 及以下可接入 220V ; • 8kW~400kW 可接入 380V ; • 400kW~60…

【Appium问题】每次启动appium都会安装一次uiautomator

问题 每次启动appium,都需要安装一次uiautomator2比较麻烦 解决 在配置文件capabilities 中增加参数skipServerInstallationTrue

【C++专栏】C++入门 | 函数重载、引用、内联函数

博客主页:Duck Bro 博客主页系列专栏:C专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ C入门 | 函数重载、引用、内联函数 文章编号:C入门 / 02 文…

ORACLE RAC反应卡顿时enq: SV - contention和latch: row cache objects的分析

某客户数据库系统使用ORACLE RAC 11G版本,两个节点。在上午8点钟之后,业务开始大量进行时,出现严重的卡顿问题;在工程师分析后,发现当时出现了很多异常等待数据,如典型的enq: SV - contention 、enq: TX - …

基于单片机的老人防丢系统设计

目 录 摘 要 I Abstract II 引 言 3 1 系统总体架构 6 1.1方案设计与选择 6 1.2 系统架构设计 6 1.3 系统器件选择 7 2 系统硬件设计 9 2.1 单片机外围电路设计 9 2.2 LCD1602液晶显示电路设计 12 2.3 短信模块电路设计 14 2.4 GPS模块电路设计 14 2.5 电源与按键控制电路设计…

Mybaties-Plus saveBatch()、自定义批量插入、多线程批量插入性能测试和对比

一.背景 最近在做一个项目的时候,由于涉及到需要将一个系统的基础数据全量同步到另外一个系统中去,结果一看,基础数据有十几万条,作为小白的我,使用单元测试,写了一段代码,直接采用了MP(Mybati…

element---tree树形结构(返回的数据与官方的不一样)

项目中要用到属性结构数据&#xff0c;后端返回的数据不是官方默认的数据结构&#xff1a; <el-tree:data"treeData":filter-node-method"filterNode":props"defaultProps"node-click"handleNodeClick"></el-tree>这是文档…

SpringCloudGateway全局过滤器

文章目录 全局过滤器的作用自定义全局过滤器过滤器执行的顺序 上一篇 Gateway理论与实践 介绍的过滤器&#xff0c;网关提供了31种&#xff0c;但每一种过滤器的作用都是固定的。如果我们希望拦截请求&#xff0c;做自己的业务逻辑则没办法实现。 全局过滤器的作用 全局过滤器的…

高级语言讲义2010计专(仅高级语言部分)

1.编写一程序&#xff0c;对输入的正整数&#xff0c;求他的约数和。 如&#xff1a;18的约数和为1236939 #include <stdio.h>int getsum(int n){int i,sum0;for(i1;i<n;i)if(n%i0)sumi;return sum; } int main(){int sum getsum(18);printf("%d",sum); …

JS直接量及其相关对象

什么是直接量 直接量是指不需要创建对象就可以直接使用的变量。ES中的直接量主要有三种类型&#xff1a;表示字符串的string类型、表示数字的number类型和表示true/false的boolean类型。当我们直接将值赋给变量后&#xff0c;ES就会自动判断其类型&#xff0c;而且当参数发生变…

Android14之编译输出system/product/vendor/odm分区(一百九十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

深度学习相关概念及术语总结

目录 1.CNN2.RNN3.LSTM4.NLP5.CV6.正向传播7.反向传播8.sigmoid 函数9.ReLU函数10.假设函数11.损失函数12.代价函数 1.CNN CNN 是卷积神经网络&#xff08;Convolutional Neural Network&#xff09;的缩写。卷积神经网络是一种深度学习模型&#xff0c;专门用于处理具有网格状…

2024年3月ZZUACM 招新赛题解

2024年3月ZZUACM 招新赛 题号题目A区间次大值B上课签到C魔法森林&#xff08;一&#xff09;D魔法森林&#xff08;二&#xff09;ELOPF跳格子G猜数字H抽卡记录I安达的二维矩阵J安达的数字手术K跳楼梯L前缀和 A 区间次大值—循环/签到题 题目描述 给定一个 n n n的全排列 a i…