区块链论文速读A会-ISSTA 2023(2/2)如何检测DeFi协议中的价格操纵漏洞

图片

Conference:ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA)

CCF level:CCF A

Categories:Software Engineering/System Software/Programming Languages

Year:2023

第1~5篇区块链文章 请点击此处查看

6

Title: 

SmartState: Detecting State-Reverting Vulnerabilities in Smart Contracts via Fine-Grained State-Dependency Analysis

SmartState:通过细粒度状态依赖性分析检测智能合约中的状态恢复漏洞

Authors

图片

Key words:

bug finding, smart contract, static analysis, state dependency

bug查找、智能合约、静态分析、状态依赖

Abstract

Smart contracts written in Solidity are widely used in different blockchain platforms such as Ethereum, TRON and BNB Chain. One of the unique designs in Solidity smart contracts is its statereverting mechanism for error handling and access control. Unfortunately, a number of recent security incidents showed that adversaries also utilize this mechanism to manipulate critical states of smart contracts, and hence, bring security consequences such as illegal profit-gain and Deny-of-Service (DoS). In this paper, we call such vulnerabilities as the State-reverting Vulnerability (SRV). Automatically identifying SRVs poses unique challenges, as it requires an in-depth analysis and understanding of the state-dependency relations in smart contracts. This paper presents SmartState, a new framework for detecting state-reverting vulnerability in Solidity smart contracts via finegrained state-dependency analysis. SmartState integrates a set of novel mechanisms to ensure its effectiveness. Particularly, Smart- State extracts state dependencies from both contract bytecode and historical transactions. Both of them are critical for inferring dependencies related to SRVs. Further, SmartState models the generic patterns of SRVs (i.e., profit-gain and DoS) as SRV indicators, and hence effectively identify SRVs based on the constructed statedependency graph. To evaluate SmartState, we manually annotated a ground-truth dataset which contains 91 SRVs in the real world. Evaluation results showed that SmartState achieves a precision of 87.23% and a recall of 89.13%. In addition, SmartState successfully identifies 406 new SRVs from 47,351 real-world smart contracts. 11 of these SRVs are from popular smart contracts with high transaction amounts (i.e., top 2000). In total, our reported SRVs affect a total amount of digital assets worth 428,600 USD.

用 Solidity 编写的智能合约广泛应用于以太坊、波场和 BNB Chain 等不同的区块链平台。Solidity 智能合约的独特设计之一是其用于错误处理和访问控制的状态恢复机制。不幸的是,最近的一些安全事件表明,攻击者还利用这种机制来操纵智能合约的关键状态,从而带来非法获利和拒绝服务 (DoS) 等安全后果。在本文中,我们将此类漏洞称为状态恢复漏洞 (SRV)。自动识别 SRV 带来了独特的挑战,因为它需要深入分析和理解智能合约中的状态依赖关系。本文介绍了 SmartState,这是一种通过细粒度状态依赖分析检测 Solidity 智能合约中状态恢复漏洞的新框架。SmartState 集成了一套新颖的机制来确保其有效性。特别是,Smart-State 从合约字节码和历史交易中提取状态依赖关系。它们两者对于推断与 SRV 相关的依赖关系都至关重要。此外,SmartState 将 SRV 的通用模式(即利润收益和 DoS)建模为 SRV 指标,从而根据构建的状态依赖图有效地识别 SRV。为了评估 SmartState,我们手动标注了一个包含现实世界中 91 个 SRV 的真实数据集。评估结果表明,SmartState 的准确率为 87.23%,召回率为 89.13%。此外,SmartState 还从 47,351 个现实世界智能合约中成功识别出 406 个新的 SRV。其中 11 个 SRV 来自交易金额较高的热门智能合约(即前 2000 个)。总的来说,我们报告的 SRV 影响了总价值 428,600 美元的数字资产。

图片

图片

图片

图片

图片

assertion-related state dependency (ASD)

temporal order state dependency (TSD)

图片

图片

图片

Pdf link:

https://dl.acm.org/doi/10.1145/3597926.3598111

7

Title: 

Toward Automated Detecting Unanticipated Price Feed in Smart Contract

在智能合约中自动检测意外价格馈送

Authors

图片

Key words:

Smart Contract, Formal Verification, Price Oracle, DeFi

智能合约、形式化验证、价格预言机、DeFi

Abstract

Decentralized finance (DeFi) based on smart contracts has reached a total value locked (TVL) of over USD 200 billion in 2022. In DeFi ecosystems, price oracles play a critical role in providing real-time price feeds for cryptocurrencies to ensure accurate asset pricing in smart contracts. However, the price oracle also faces security issues, including the possibility of unanticipated price feeds, which can lead to imbalances in debt and assets in the DeFi protocol. However, existing solutions cannot effectively combine transactions and code for real-time monitoring of price oracles. To address this limitation, we first categorize price oracles as either DON oracles, DEX oracles, or internal oracles based on trusted parties, and analyze their security risks, data sources, price duration, and query fees. Then, we propose VeriOracle, a formal verification framework for the automated detection of unanticipated price feeds in smart contracts. VeriOracle can deploy a formal semantic model of the price oracle on the blockchain to detect the status of smart contracts and identify unanticipated price feed transactions in real time. We apply VeriOracle to verify over 500,000 transactions of 13 vulnerable DeFi protocols in the real world. The experimental results show that (1) VeriOracle is effective and it can detect unanticipated price feeds before DeFi attacks (33,714 blocks ahead of the attacker in the best case); (2) VeriOracle is efficient in that its verification time (about 4s) is less than the block time of Ethereum (about 14s), which means VeriOracle can detect unsafe transactions in real time; and (3) VeriOracle is extendable for verifying defense strategies. Attacks using unanticipated price feeds can only succeed in particular smart contract states. VeriOracle can verify which smart contract states can defend against attacks.

基于智能合约的去中心化金融 (DeFi) 已在 2022 年达到超过 2000 亿美元的总锁定价值 (TVL)。在 DeFi 生态系统中,价格预言机在为加密货币提供实时价格信息以确保智能合约中资产定价准确方面发挥着关键作用。然而,价格预言机也面临安全问题,包括可能出现意外的价格信息,这可能导致 DeFi 协议中的债务和资产不平衡。然而,现有的解决方案无法有效地结合交易和代码来实时监控价格预言机。为了解决这一限制,我们首先根据可信方将价格预言机分类为 DON 预言机、DEX 预言机或内部预言机,并分析它们的安全风险、数据来源、价格持续时间和查询费用。然后,我们提出了 VeriOracle,这是一个用于自动检测智能合约中意外价格信息的形式化验证框架。VeriOracle 可以在区块链上部署价格预言机的形式化语义模型,以检测智能合约的状态并实时识别意外的价格馈送交易。我们应用 VeriOracle 验证了现实世界中 13 个易受攻击的 DeFi 协议的 500,000 多笔交易。实验结果表明:(1)VeriOracle 是有效的,它可以在 DeFi 攻击之前检测到意外的价格馈送(最好情况下比攻击者提前 33,714 个区块);(2)VeriOracle 的验证时间(约 4 秒)小于以太坊的出块时间(约 14 秒),这意味着 VeriOracle 可以实时检测不安全的交易;(3)VeriOracle 可扩展以验证防御策略。使用意外价格馈送的攻击只能在特定的智能合约状态下成功。VeriOracle 可以验证哪些智能合约状态可以抵御攻击。

图片

 decentralized exchanges (DEX)

Decentralized Oracle Networks (DONs)

图片

图片

图片

图片

图片

图片

图片

Pdf link:

https://dl.acm.org/doi/10.1145/3597926.3598133

8

Title: 

Detecting State Inconsistency Bugs in DApps via On-Chain Transaction Replay and Fuzzing

通过链上交易重放和模糊测试检测 DApp 中的状态不一致错误

Authors

Mingxi Ye,Sun Yat-sen University,China

Yuhong Nan,Sun Yat-sen University

Zibin Zheng,Sun Yat-sen University

Dongpeng Wu, Sun Yat-sen University

Huizhong Li, WeBank,China

Abstract

Decentralized applications (DApps) consist of multiple smart contracts running on Blockchain. With the increasing popularity of the DApp ecosystem, vulnerabilities in DApps could bring significant impacts such as financial losses. Identifying vulnerabilities in DApps is by no means trivial, as modern DApps consist of complex interactions across multiple contracts. Previous research suffers from either high false positives or false negatives, due to the lack of precise contextual information which is mandatory for confirming smart contract vulnerabilities when analyzing smart contracts. In this paper, we present IcyChecker, a new fuzzing-based framework to effectively identify State inconsistency (SI) Bugs – a specific type of bugs that can cause vulnerabilities such as re-entrancy, front-running with complex patterns. Different from prior works, IcyChecker utilizes a set of accurate contextual information for contract fuzzing by replaying the on-chain historical transactions. Besides, instead of designing specific testing oracles which are required by other fuzzing approaches, IcyChecker implements novel mechanisms to mutate a set of fuzzing transaction sequences, and further identify SI bugs by observing their state differences. Evaluation of IcyChecker over the top 100 popular DApps showed it effectively identifies a total number of 277 SI bugs, with a precision of 87%. By comparing IcyChecker with other state-of-the-art tools (i.e., Smartian, Confuzzius, and Sailfish), we show IcyChecker not only identifies more SI bugs but also with much lower false positives, thanks to its integration of accurate on-chain data and unique fuzzing strategies. Our research sheds light on new ways of detecting smart contract vulnerabilities in DApps.


 

去中心化应用程序(DApps)由在区块链上运行的多个智能合约组成。随着 DApp 生态系统的日益普及,DApp 中的漏洞可能会带来重大影响,例如财务损失。识别 DApp 中的漏洞绝非易事,因为现代 DApp 包含跨多个合约的复杂交互。先前的研究存在高误报率或漏报率,这是因为缺乏精确的上下文信息,而这些信息在分析智能合约时对于确认智能合约漏洞是必不可少的。在本文中,我们提出了 IcyChecker,这是一个基于模糊测试的新框架,可有效识别状态不一致(SI)错误 - 这是一种特定类型的错误,可能导致诸如重入、具有复杂模式的抢先交易等漏洞。与之前的研究不同,IcyChecker 通过重放链上历史交易,利用一组准确的上下文信息进行合约模糊测试。此外,IcyChecker 无需设计其他模糊测试方法所需的特定测试预言机,而是实现了新颖的机制来改变一组模糊测试交易序列,并通过观察它们的状态差异进一步识别 SI 错误。对前 100 个流行 DApp 的 IcyChecker 评估表明,它有效识别了总共 277 个 SI 错误,准确率为 87%。通过将 IcyChecker 与其他最先进的工具(即 Smartian、Confuzzius 和 Sailfish)进行比较,我们发现 IcyChecker 不仅可以识别出更多的 SI 错误,而且由于其集成了准确的链上数据和独特的模糊测试策略,误报率也低得多。我们的研究为检测 DApp 中的智能合约漏洞的新方法提供了启示。

图片

Pdf link:

https://dl.acm.org/doi/10.1145/3597926.3598057

9

Title: 

DeFiTainter: Detecting Price Manipulation Vulnerabilities in DeFi Protocols

DeFiTainter:检测 DeFi 协议中的价格操纵漏洞

Authors

图片

Key words:

vulnerability detection, smart contract, taint analysis

漏洞检测、智能合约、污点分析

Abstract

DeFi protocols are programs that manage high-value digital assets on blockchain. The price manipulation vulnerability is one of the common vulnerabilities in DeFi protocols, which allows attackers to gain excessive profits by manipulating token prices. In this paper, we propose DeFiTainter, an inter-contract taint analysis framework for detecting price manipulation vulnerabilities. DeFiTainter features two innovative mechanisms to ensure its effectiveness. The first mechanism is to construct a call graph for inter-contract taint analysis by restoring call information, not only from code constants but also from contract storage and function parameters. The second mechanism is a high-level semantic induction tailored for detecting price manipulation vulnerabilities, which accurately identifies taint sources and sinks and tracks taint data across contracts. Extensive evaluation of real-world incidents and high-value DeFi protocols shows that DeFiTainter outperforms existing approaches and achieves state-of-the-art performance with a precision of 96% and a recall of 91.3% in detecting price manipulation vulnerabilities. Furthermore, DeFiTainter uncovers three previously undisclosed price manipulation vulnerabilities.

DeFi 协议是管理区块链上高价值数字资产的程序。价格操纵漏洞是 DeFi 协议中常见的漏洞之一,攻击者可以通过操纵代币价格获取超额利润。本文提出了 DeFiTainter,一个用于检测价格操纵漏洞的合约间污点分析框架。DeFiTainter 具有两种创新机制来确保其有效性。第一种机制是通过恢复调用信息来构建合约间污点分析的调用图,不仅从代码常量,而且从合约存储和函数参数中恢复调用信息。第二种机制是专门为检测价格操纵漏洞而定制的高级语义归纳,它可以准确识别污点源和污点接收器并跟踪跨合约的污点数据。对现实世界事件和高价值 DeFi 协议的广泛评估表明,DeFiTainter 优于现有方法,在检测价格操纵漏洞方面以 96% 的准确率和 91.3% 的召回率实现了最先进的性能。此外,DeFiTainter 还发现了三个以前未披露的价格操纵漏洞。

图片

图片

图片

图片

图片

图片

Pdf link:

https://dl.acm.org/doi/10.1145/3597926.3598124

图片

关注我们,持续接收区块链最新论文

洞察区块链技术发展趋势

Follow us to keep receiving the latest blockchain papers

Insight into Blockchain Technology Trends

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2-5 softmax 回归的简洁实现

我们发现通过深度学习框架的高级API能够使实现线性回归变得更加容易。 同样,通过深度学习框架的高级API也能更方便地实现softmax回归模型。 本节如在上节中一样, 继续使用Fashion-MNIST数据集,并保持批量大小为256。 import torch from torc…

论文复现-基于决策树算法构建银行贷款审批预测模型(金融风控场景)

作者Toby,来源公众号:Python风控模型,基于决策树算法构建银行贷款审批预测模型 目录 1.金融风控论文复现 2.项目背景介绍 3.决策树介绍 4.数据集介绍 5.合规风险提醒 6.技术工具 7.实验过程 7.1导入数据 7.2数据预处理 7.3数据可…

隔离级别-隔离级别中的锁协议、隔离级别类型、隔离级别的设置、隔离级别应用

一、引言 1、DBMS除了采用严格的两阶段封锁协议来保证并发事务的可串行化,实现事务的隔离性,也可允许用户选择一个可以保证应用程序正确执行并且能够使并发度最大的隔离性等级 2、通常用隔离级别来描述隔离性等级,以下将主要介绍ANSI 92标准…

LaTeX教程(014)-LaTeX文档结构(14)

LaTeX教程(014)- LaTeX \LaTeX LATE​X文档结构(14) 2.3.3 multitoc - 将目录设置为多栏 multitoc包的使用方法相当简单,只需要调用这个包,并将要设置为多栏(默认是双栏)的目录指定到包选项中即可。如\usepackage[toc]{multitoc},设置的就是…

GIT 使用相关技巧记录

目录 1、commit 用户信息变更 全局用户信息(没有特殊配置的情况下默认直接用全局信息) 特定仓库用户信息(只针对于当前项目) 方法一:修改config文件 方法二:命令方式 2、idea同一代码推向多个远端仓库…

如何在应用运行时定期监控内存使用情况

如何在应用运行时定期监控内存使用情况 在 iOS 应用开发中,实时监控内存使用情况对于优化性能和排查内存泄漏等问题非常重要。本文将介绍如何在应用运行时定期监控内存使用情况,使用 Swift 编写代码并结合必要的工具和库。 1. 创建桥接头文件 首先&…

k8s 部署 springboot 项目内存持续增长问题分析解决

写在前面 工作中遇到,请教公司前辈解决,简单整理记忆博文内容涉及一次 GC 问题的分析以及解决理解不足小伙伴帮忙指正 😃,生活加油 99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完…

STM32-USART

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. 串口通信协议1.1 通信接口1.2 串口通信1.3 硬件电路1.4 电平标准1.5 串口参数及时序1.6 串口时序 2. USART串口通信2.1 USART简介2.2 USART框图2.3 USART基本结构2.4 数据帧2.5 数据帧-配置停止位2.6 起始位侦测2.…

大连外贸建站公司wordpress主题模板

Robonaut萝卜纳特WP外贸站模板 适合用于工业机器人公司出口做外贸搭建公司官方网站使用的WordPress模板。 https://www.jianzhanpress.com/?p7091 优衣裳WordPress外贸建站模板 简洁的wordpress外贸独立站模板,适合服装、衣服、制衣外贸公司搭建公司官方网站使用…

ByteTrack论文阅读笔记

目录 ByteTrack: Multi-Object Tracking by Associating Every Detection Box摘要INTRODUCTION — 简介BYTE算法BYTE算法用Python代码实现实验评测指标轻量模型的跟踪性能 总结SORT算法简介ByteTrack算法和SORT算法的区别 ByteTrack: Multi-Object Tracking by Associating Eve…

location匹配和rewrite重定向

目录 location 匹配 location匹配的分类和优先级 优先级细分 实际网站中的使用规则 1.用精确匹配来实现网站的首页 访问网站的首页 ( /) 2.用正则匹配来实现静态请求的页面和图片 匹配静态页面 访问图片或者指定的后缀名 3.用一般匹配转发.php…

【qt】TCP的监听 (设置服务器IP地址和端口号)

TCP监听是在自己的IP地址上进行的。 当一个TCP服务器程序启动时,它会绑定到一个特定的IP地址和一个端口号上,以便可以接收来自该IP地址和端口号的传入连接请求. 所以我们要先来获取主机的IP地址和设置端口号. 注意: 服务器程序无法任意设置IP地址&…

数据结构学生信息顺序表

主程序 #include "fun.h" int main(int argc, const char *argv[]) { seq_p Screate_seq(); stu data; printf("请问要输入几个学生的数据:"); int n; scanf("%d",&n); while(n--) { prin…

cloudflare tunnels tcp

这里是官网的说明Cloudflare Tunnel Cloudflare Zero Trust docs 根据实际情况安装环境 tunnels除了http,https协议是直接暴露公网,tcp是类似ssh端口转发。 在需要内网穿透的局域网找一条机子部署代理 我这边是window cloudflared tunnel login #生成一个身份校…

防火墙概述

1、防火墙 防火墙顾名思义就是防止火灾发生时,火势烧到其它区域,使用由防火材料砌的墙。在网络安全中,防火墙的作用就是保护本地网络不受到外部网络或恶意程序的伤害。 防火墙的核心任务是控制和防护,即通过安全策略识别流量并做…

【周末闲谈】AI“抢饭碗”?绝对不是危言耸听

AI是在帮助开发者还是取代他们? 在软件开发领域,生成式人工智能(AIGC)正在改变开发者的工作方式。无论是代码生成、错误检测还是自动化测试,AI工具正在成为开发者的得力助手。然而,这也引发了对开发者职业前景和技能需求变化的讨论。AI究竟是在帮助开发者还是取代他们?…

【论文阅读】-- Visual Analytics for Model Selection in Time Series Analysis

时间序列分析中模型选择的可视化分析 摘要1 引言2 相关工作3 问题表征3.1 Box-Jenkins 方法论3.2 ARIMA 和季节性 ARIMA 模型3.3 模型规范3.4 模型拟合3.5 模型诊断 4 需求分析5 VA 用于时间序列分析中的模型选择5.1 VA选型流程说明5.2 TiMoVA 原型5.2.1 实施选择5.2.2 图形用户…

【JavaSE复习】数据结构、集合

JavaSE 复习 1.数据结构1.1 查找1.1.1 基本查找1.1.2 二分查找1.1.3 插值查找1.1.4 斐波那契查找1.1.5 分块查找1.1.6 分块查找的扩展(无规律数据) 1.2 排序1.2.1 冒泡排序1.2.2 选择排序1.2.3 插入排序1.2.4 快速排序 2. 集合2.1 基础集合2.1.1 集合和数…

MyBatis中二级缓存的配置与实现原理

大家好,我是王有志,一个分享硬核 Java 技术的金融摸鱼侠,欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 上一篇文章《MyBatis中一级缓存的配置与实现原理》中,我们已经掌握了 MyBatis 一级缓存的配置(虽然…

使用AOP思想实现开闭原则下的流水日志输出

主要实现思想: 通过实现Convert接口来抽取公共组件,获取想要的标准模型。 现在有两个订单场景,一个保存订单,一个为更新订单。构造如下的服务类: import org.springframework.stereotype.Service;Service public clas…