Curve深陷安全事件,OKLink如何破局

出品|欧科云链研究院
作者|Matthew Lee
7月31号,Curve 在平台表示 Vyper 0.2.15 的稳定币池由于编译器的漏洞所以遭到攻击。具体因为重入锁功能的失效,所以黑客可以轻易发动重入攻击,即允许攻击者在单次交易中执行某些功能。而Curve上的部分资金池又使用了旧版本的编译器,给黑客提供了机会。
(重入攻击是一种由于 Vyper 的特性加上智能合约编写不当导致的漏洞,之前已经多次发生,欧科云链的安全团队之前有过对此类案例的详细分析,点击文末左下角“阅读原文”查看,所以本文对攻击细节不再展示)
紧接着其他多个项目都宣布遭受到了攻击,NFT 质押协议 JPEG’d,借贷项目 AlchemixFi 和 DeFi 协议 MetronomeDAO,跨链桥 deBridge、采用 Curve 机制的 DEX Ellipsis等都分别遭受巨额损失。

然而在7月30号,一些项目方已经知道了潜在的攻击威胁。以 Alchemix 为例,在30号就已经开始转出资产,而且已经成功的转出 8000ETH,但是在转移资产的过程中,依然被攻击者盗取在 AMO 合约的剩余 5000ETH。
图片来源:OKLink Explorer
其他项目方也相继采取了一些措施,如 AAVE 禁止 Curve 进行借贷;Alchemix 也从曲线池中移除 AMO 控制的流动性;Metronome 直接暂停主网功能。
如何从攻防两端
防范黑客进攻?
Curve 不是第一次出现被黑客攻击的事件了,作为 Defi 的顶级项目都无法免疫黑客攻击,普通的项目方更应该在黑客攻击端和合约防守端重视起来。
那么针对进攻端,项目方可以做哪些准备呢?
OKLink 团队推荐项目方通过链上标签系统提前辨别有黑历史的钱包,阻止有过异常行为地址的交互。Curve 的其中一个攻击者的地址就有过不良记录曾被 OKLink 记录,如下图所示:
图片来源:OKLink Chaintelligence Pro
其行为模式也一定程度上超出常理,如下图所示,有三日交易笔数过百。
图片来源:OKLink Onchain AML
项目方如何在防守端进行防御呢?
针对上述事件梳理,我们发现项目方在处理此类事件的两点问题,
1. 维护工作不到位。大部分项目非常注重代码的编写和审核,但是维护工作一直没受到重视,Vyper 编译器的这个漏洞是两年前被发现的,但受攻击的池子还是采用的旧版编译器。
2. 代码测试场景过于单一。很多测试代码起不到真正的测试问题的作用,应增加模糊测试等更复杂的测试手段,且应该在黑客攻击途径,攻击复杂度,机密性,完整性等多个维度进行测试的工作。
被盗资金如何追回?
现实中,大部分被盗资金都难以追回。下图是黑客转出资金去向,可以看到被盗 ETH 没有对外转出动作,地址也没有和实体机构相关联。
图片来源:OKLink Chaintelligence Pro
有一部分地址和实体机构有关联的,如地址0xb752DeF3a1fDEd45d6c4b9F4A8F18E645b41b324 (已归还2,879.54 ETH),类似地址有关联实体机构的,我们可以通过报警和实体机构协商的办法追回资金。
图片来源:OKLink Chaintelligence Pro
针对此次事件的正确做法是通过 OKLink 或者其他技术服务商的预警和跟踪功能,等待沉淀地址的后续的资金动向,在进一步实施行动。但是,最好的方法是行业团结一致制定基于安全事件的响应机制,可以对有异常行为进行更好的打击。
给我们的警示
重入攻击此类的安全事件一定还会发生,所以除了上述在攻防两端我们需要付出的努力外,项目方需要做好应急预案,当受到黑客攻击时能最及时的进行反应,减少项目方和用户的损失。Vyper贡献者也建议,对于 Vyper 此类公共产品我们应该加强公众激励,寻找关键漏洞。OKLink呼吁应该尽早建立起一套安全响应标准,让黑/灰地址的资金追踪变得更加容易。
正如 OKLink 产品在此类事件中的攻防两端起到防范黑客和追查资金的作用,项目方在搭建平台的安全模块时应考虑第三方技术服务商可以带来的额外价值,更快更好的筑起项目的安全堡垒。
欧科云链的 Raymond Lei 和 Mengxuan Ren 对此文亦有帮助。
相关文章:
Curve深陷安全事件,OKLink如何破局
出品|欧科云链研究院 作者|Matthew Lee 7月31号,Curve 在平台表示 Vyper 0.2.15 的稳定币池由于编译器的漏洞所以遭到攻击。具体因为重入锁功能的失效,所以黑客可以轻易发动重入攻击,即允许攻击者在单次交易中执行某…...
2023华数杯数学建模思路A题B题C题模型代码分析
目录 一.2023华数杯数学建模最新思路:比赛开始后第一时间更新 更新查看文末名片 二.往年华数杯赛题简介分析: 一.2023华数杯数学建模最新思路:比赛开始后第一时间更新 更新查看文末名片 二.往年华数杯赛题简介分析: 2022华数杯…...
el-table合并单元格
el-tabel数据结构 此处为this.rolePermitItemList 合并后的样式: el-table-column 需要添加property字段,属性值同props,用来判断需要合并的字段 <el-table :data"rolePermitItemList" style"width: calc(100% );margi…...
html5设置不缓存
<meta http-equiv"Cache-Control" content"no-cache, no-store, must-revalidate"> <meta http-equiv"Pragma" content"no-cache"> <meta http-equiv"Expires" content"0"> 使用meta元素的htt…...
kotlin 的函数参数
https://blog.csdn.net/yoonerloop/article/details/123241451 一、无参数的函数参数 1、回调 //定义 interface OnClickListener { fun onClick() } private fun setOnClickListener(listener: OnClickListener) { } //使用 setOnClickListener(object : OnClickLi…...
谈谈 Kafka 的幂等性 Producer
使用消息队列,我们肯定希望不丢消息,也就是消息队列组件,需要保证消息的可靠交付。消息交付的可靠性保障,有以下三种承诺: 最多一次(at most once):消息可能会丢失,但绝…...
Doris(三)-集群部署3个FE+3个BE
前置 1)配置java环境 1st 解压jdk包 unzip jdk1.8.0_171-amd64.zip 2nd 配置环境变量 vim /etc/profile#文末添加JAVA_HOME/data/jdk1.8.0_171-amd64 PATH$JAVA_HOME/bin:$PATHexport PATH JAVA_HOME3rd 启用配置 source /etc/profile 4th 验证 java -versi…...
js沙箱逃逸
目录 一、什么是沙箱(sandbox) 二、沙箱技术的实现 & node.js 2.1简单沙箱程序示例 2.2this.tostring S1: S2: 三、arguments.callee.caller 一、什么是沙箱(sandbox) 在计算机安全性方面,沙箱(沙盒、sanboxÿ…...
振弦传感器信号转换器应用山体滑坡安全监测
振弦传感器信号转换器应用山体滑坡安全监测 随着人类文明的进步,自然灾害对人们的生活和财产安全造成的威胁也越来越大。山体滑坡作为自然灾害中的一种,给人们的生活和财产安全带来了极大的威胁。因此,进行山体滑坡的安全监测显得尤为重要。振…...
Moonbeam新增强大的互操作性功能至波卡生态
波卡上的领先多链开发平台Moonbeam发布适用于平行链间活动的新版本互操作性功能。最新的链更新Runtime 2401,是自Moonbeam上线后的最大更新,其中包括三个针对开发者于链上的里程碑式更新: 用于访问消息传递功能的预编译智能合约从其他波卡平…...
考研408 | 【计算机网络】概述
计算机网络体系结构 计算机网络概述:1.概念,组成,功能,分类2.标准化工作及相关组织3.性能指标体系结构&参考模型:1.分层结构2.协议,接口,服务3.ISO/OSI模型4.TCP/IP模型 目录 计算机网络体…...
一道名题-(csp 儒略日)的心得与技巧
这道题,我做了三年,平均每年做一次,我来讲讲我的心得。 读题 题面很长,细节很多,我们需要耐心细心的读,此时多花一点时间是划得来的。 我们得出大致关系如下 历法公历日常用历儒略历公元前公元后历法公历…...
单元测试之- mock工具mockito
常用的mock工具mockito 在编写单元测试时,需要mock依赖的对象,减少依赖对象对测试的影响,Mocktio是常用的mock工具之一,那么mockito提供了哪些功能呢? Mock对象的创建和配置:Mockito可以通过简单的语法创建…...
03 线程间共享数据
unique_lock 因为unique_lock类也具有成员函数lock,unlock,trylock,它含有一个内部标志,表明关联的互斥是否正在被使用,此标志可以通过调用成员函数owns_lock()查询。 1 在初始化过程中保护共享数据 延迟初始化 ( l…...
题目:2264.找到一个数字的 K 美丽度
题目来源: leetcode题目,网址:2269. 找到一个数字的 K 美丽值 - 力扣(LeetCode) 解题思路: 使用滑动窗口遍历判断,窗口中放置 k 个数字,每次后移一位。 解题代码: c…...
分布式ID性能评测:CosId VS 美团 Leaf
环境 MacBook Pro (M1)JDK 17JMH 1.36运行在本机 Docker 内的 mariadb:10.6.4 运行 CosId SegmentChainId 模式,基准测试代码: Benchmarkpublic long generate() {return segmentChainId.generate();}Leaf 基准测试代码: Benchmarkpublic l…...
MySQL数据库安装(二)
夕阳留恋的不是黄昏,而是朝阳 上一章简单介绍了MySQL数据库概述(一), 如果没有看过, 请观看上一章 一. MySQL 卸载 一.一 停止MySQL服务 在卸载之前,先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键,打开“任务管理器”对话…...
通过MySQL删除Hive元数据信息
之前遇到过一个问题,在进行Hive的元数据采集时,因为Hive表的文件已经被删除了,当时是无法删除表,导致元数据采集也发生了问题,所以希望通过删除Hive表的元数据解决上述问题。 之前安装时,经过特定的配置后…...
在电脑如何翻译文件名称并同时保存原文件名和新文件名称
不知道大家在日常工作中有没有遇见到文件名英语或其他评论文字需要翻译成中文呢,翻译成中文后,需要把原来文件名称一起保存下来,呈现上新文件名上。也是通俗的说法,新文件名称也有原文件名称在呢。这个就有点难度吧。一般我们常见…...
Modbus协议简介与常用测试指令说明
DateAuthorVersionNote2022.07.19Dog TaoV1.01. 完成了文档的撰写。2023.08.04Dog TaoV1.21. 修订文档,增加了Modbus协议简介小节。 本文档提供ModbusPoll调试软件与官方部署文档合辑资源(CSDN平台)。 文章目录 Modbus协议简介发展历史主要技…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
