智能合约漏洞,价值 5200 万美元的 Vyper 漏洞攻击原理分析

智能合约漏洞,价值 5200 万美元的 Vyper 漏洞攻击原理分析

7 月 30 日,因为 Vyper 部分版本中的漏洞,导致 Curve、JPEG’d 等项目陆续受到攻击,损失总计超过 5200 万美元。

Safful 对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。

一、 事件分析

以 JPEG’d 被攻击为例:
攻击者地址:0x6ec21d1868743a44318c3c259a6d4953f9978538
攻击者合约:0x9420F8821aB4609Ad9FA514f8D2F5344C3c0A6Ab
攻击交易:0xa84aa065ce61dbb1eb50ab6ae67fc31a9da50dd2c74eefd561661bfce2f1620c
(1)攻击者(0x6ec21d18)创建 0x466B85B4 的合约,通过闪电贷向 [Balancer: Vault]借了 80,000 枚 WETH。
image.png
(2)攻击者(0x6ec21d18)向 pETH-ETH-f(0x9848482d)流动性池中添加了 40,000 枚 WETH,获得 32,431 枚 pETH。
image.png
(3)随后攻击者(0x6ec21d18)从 pETH-ETH-f(0x9848482d)流动性池中重复地移除流动性。
image.png
(4)最终,攻击者(0x6ec21d18)获得 86,106 枚 WETH,归还闪电贷后,获利 6,106 枚 WETH 离场。

二、漏洞分析

(1)该攻击是典型的重入攻击。对遭受攻击的项目合约进行字节码反编译,我们从下图可以发现:add_liquidity 和 remove_liquidity 两个函数在进行校验存储槽值时,所要验证的存储槽是不一样的。使用不同的存储槽,重入锁可能会失效。此时,怀疑是 Vyper 底层设计漏洞。
image.png
(2)结合 Curve 官方的推文所说。最终,定位是 Vyper 版本漏洞。该漏洞存在于 0.2.15、0.2.16、0.3.0 版本中,在重入锁设计方面存在缺陷。我们对比 0.2.15 之前的 0.2.14 以及 0.3.0 之后的 0.3.1 版本,发现这部分代码在不断更新中,老的 0.2.14 和交心的 0.3.1 版本没有这个问题。
image.png
image.png
(3)在 Vyper 对应的重入锁相关设置文件 data_positions.py 中,storage_slot 的值会被覆盖。在 ret 中,第一次获取锁的 slot 为 0,然后再次调用函数时会将锁的 slot 加 1,此时的重入锁会失效。
image.png
漏洞总结:本次攻击事件根本原因是 Vyper 的 0.2.15、0.2.16、0.3.0 版本的重入锁相关设计不合理,并且没有进行足够全面的功能测试。导致后期使用这些版本的项目中重入锁失效,最终遭受了黑客攻击。

三、安全建议

对于本次攻击事件,开发人员在日常开发中应当采取有以下的安全措施:
(1) 项目方需保障功能设计合理并对代码进行全面测试,防止遗漏某些功能的测试。
(2) 项目发版前,需要向第三方专业的审计团队寻求技术帮助。

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

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

相关文章

2023 IDC中国数字金融论坛丨中电金信向行业分享“源启+应用重构”新范式

9月8日,IDC主办的“2023 IDC中国数字金融论坛”在北京召开。中电金信受邀参会,并带来了深度数字化转型趋势之下关于应用重构的分享与洞见。 论坛重点关注金融科技创新发展趋势与数字化转型之路,中电金信副总经理、研究院院长况文川带来了“创…

nSoftware IPWorks IoT 2022 Java 22.0.8 Crack

物联网库,使用这个轻量级组件库,可以在任何平台上的应用程序中轻松实现物联网 (IoT) 通信协议。 nSoftware IPWorks IoT 最新的 IPWorks IoT 现已推出!最新版本的 IPWorks IoT 具有现代化和简化的体验,包括 .NET 中的异步和跨平台…

[开源]MIT协议,开源论坛程序,拥有友好的用户界面和操作体验

一、开源项目简介 尤得一物是一个开源论坛程序,提供丰富的功能,可以作为管理或分享文章的论坛博客,也可以在此基础上进行自定义开发。 二、开源协议 使用MIT开源协议 三、界面展示 四、功能概述 尤得一物是一个开源论坛程序,…

vue-7-vuex

一、Vuex 概述 目标:明确Vuex是什么,应用场景以及优势 1.是什么 Vuex 是一个 Vue 的 状态管理工具,状态就是数据。 大白话:Vuex 是一个插件,可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。例如:购…

arcgis地形分析全流程

主要内容:DEM的获取与处理、高程分析、坡度分析、坡向分析、地形起伏度分析、地表粗糙度分析、地表曲率分析; 主要工具:镶嵌至新栅格、按掩膜提取、投影栅格、坡度、坡向、焦点统计 一 DEM的获取与处理 1.1 DEM是什么? DEM(D…

安全与隐私:直播购物App开发中的重要考虑因素

随着直播购物App的崭露头角,开发者需要特别关注安全性和隐私问题。本文将介绍在直播购物App开发中的一些重要安全和隐私考虑因素,并提供相关的代码示例。 1. 数据加密 在直播购物App中,用户的个人信息和支付信息是极为敏感的数据。为了保护…

Linux文件与目录的增删改查

一、增 1、mkdir命令 作用: 创建一个新目录。格式: mkdir [选项] 要创建的目录 常用参数: -p:创建目录结构中指定的每一个目录,如果目录不存在则创建,如果目录已存在也不会被覆盖。用法示例: 1、mkdir directory:创建单个目录 这个命令会在当前目录下创建一个名为…

简单好用的CHM文件阅读器 CHM Viewer Star最新 for mac

CHM Viewer Star 是一款适用于 Mac 平台的 CHM 文件阅读器软件,支持本地和远程 CHM 文件的打开和查看。它提供了直观易用的界面设计,支持多种浏览模式,如书籍模式、缩略图模式和文本模式等,并提供了丰富的功能和工具,如…

亚马逊流量攻略:如何将流量转化为销售,测评实现销售飙升!

在电商领域,流量获取一直是一个核心议题。对于任何希望增加订单量的商家而言,将流量引导至自身店铺并成功转化为销售至关重要。对于初入电商领域或规模较小的卖家来说,亚马逊内部的流量获取通常可带来显著的销售业绩。那么,如何利…

python—如何提取word中指定内容

假设有一个Word,该Word中存在 “联系人” 关键字,如何将该Word中的联系人所对应的内容提取出来呢? 该Word内容如下所示: 要在给定的Word文档中提取出与"联系人"关键字对应的内容,可以使用Python的py…

【抓包https请求网络异常/无数据怎么破】

当你测试App的时候,想要通过Fiddler/Charles等工具抓包看下https请求的数据情况,发现大部分的App都提示网络异常/无数据等等信息。 当你测试App的时候,想要通过Fiddler/Charles等工具抓包看下https请求的数据情况,发现大部分的Ap…

见微知著:从企业售后技术支持看云计算发展

作者:余凯 售后业务中的细微变化 作为阿里云企业容器技术支持的一员,每天会面对全球各地企业级客户提出的关于容器的各种问题,通过这几年的技术支持的经历,逐步发现容器问题客户的一些惯性,哪些是重度用户&#xff0…

Java使用模板导出word、pdf

使用deepoove根据模板导出word文档&#xff0c;包括文本、表格、图表、图片&#xff0c;使用WordConvertPdf可将word文档转换为pdf导出 模板样例&#xff1a; 导出结果&#xff1a; 一、引入相关依赖 <!-- 工具类--><dependency><groupId>cn.hutool&…

基于YOLOv5、YOLOv8的火灾检测(超实用毕业设计项目)

yolo系列文章目录 摘要&#xff1a;基于YOLOV5模型的火灾检测系统用于日常生活中检测与定位火灾目标&#xff0c;包括建筑火灾、森林火灾等。利用深度学习算法可实现图片、视频、摄像头等方式的火灾目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导…

基于数学模型水动力模拟、水质建模、复杂河网构建技术在环境影响评价、排污口论证及防洪评价中的实践技术应用

目录 专题一 一维水动力模型在河流水动力模拟中的应用 专题二 一维复杂河网模型构建及建筑物设置 专题三 一维水质模型在入河排污口和环境影响评价中的应用 专题四 平面二维水动力模型的构建和验证 专题五 平面二维水动力模型在防洪影响评价中的应用 专题六 平面二维水动…

RedissonClient中Stream流的简单使用

1、pub端 //获取一个流 RStream rStream redissonClient.getStream("testStream"); //创建一个map&#xff0c;添加数据 Map<String, Object> rr new HashMap<>(); rr.put("xx", RandomUtil.randomString(5)); //添加到流 rStream.addAll(r…

API攻防-接口安全SOAPOpenAPIRESTful分类特征导入项目联动检测

文章目录 概述什么是接口&#xff1f; 1、API分类特征SOAP - WSDLWeb services 三种基本元素&#xff1a; OpenApi - Swagger UISpringboot Actuator 2、API检测流程Method&#xff1a;请求方法URL&#xff1a;唯一资源定位符Params&#xff1a;请求参数Authorization&#xff…

日常学习记录随笔-大数据之日志(hadoop)收集实战

数据收集(nginx)--->数据分析---> 数据清洗--->数据聚合计算---数据展示 可能涉及到zabix 做任务调度我们的项目 电商日志分析 比如说我们现在有一个系统,我们的数仓建立也要有一个主题 我这个项目是什么我要干什么定义方向 对用户进行分析,用户信息 要懂整个数据的流…

三十、【进阶】B树的演变过程

1、索引结构 &#xff08;1&#xff09;二叉树 &#xff08;2&#xff09;B-Tree树 B-Tree树最大度数为5&#xff0c;代表每一个节点最多存储4个key(每个节点最多存储4个数据)&#xff0c;5个指针(可以指向5个子节点)。 2、演变过程&#xff08;最大度数为5&#xff09; &…

基于Spring Boot的网上租贸系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技…