智能合约漏洞案例,Palmswap 90 万美元漏洞分析

news2024/11/20 20:44:11

智能合约漏洞案例,Palmswap 90 万美元漏洞分析

据Safful安全团队情报,2023 年 7 月 25 日,BSC 链上的 Palmswap 项目遭到攻击,攻击者获利超 90 万美元。Safful安全团队介入分析后将结果分享如下:

相关信息

Palmswap v2 提供了一个高流动性、功能强大且用户友好的去中心化杠杆交易平台。其中 PLP 是 Palmswap 交易平台的流动性提供者代币,它由用于杠杆交易的 USDT 资产指数组成。PLP 可以用 USDT 铸造,然后用 USDT 烧回去。铸造和重新燃烧的价格是用指数中资产的总价值(包括未平仓头寸的损益)除以 PLP 供应量得到。

以下是本次攻击涉及的相关地址:

攻击者 EOA 地址:
0xf84efa8a9f7e68855cf17eaac9c2f97a9d131366

攻击合约地址:
0x55252a6d50bfad0e5f1009541284c783686f7f25

攻击交易:
https://bscscan.com/tx/0x62dba55054fa628845fecded658ff5b1ec1c5823f1a5e0118601aa455a30eac9

被攻击的合约地址:
0xd990094a611c3de34664dd3664ebf979a1230fc1
0xa68f4b2c69c7f991c3237ba9b678d75368ccff8f
0x806f709558cdbba39699fbf323c8fda4e364ac7a

攻击核心点

在 Palmswap 交易平台中,PLP 代币的价格基于金库中的 USDT 数量和 PLP 代币总供应量。

而如果金库合约没有开启管理员模式的话,任何用户都可以通过直接用 USDT 购买 USDP 代币的方式来提高金库中的 USDT 数量,且不改变 PLP 代币的总供应量,这将导致攻击者可以利用闪电贷恶意操控 PLP 代币的价格获利。

具体细节分析

  1. 攻击者首先通过闪电贷借出 3,000,000 枚 USDT,并用其中 1,000,000 枚 USDT 去添加流动性,铸造 PLP 代币。

  1. 在添加流动性的函数中,攻击者先转入 USDT,并调用金库合约的 buyUSDP 函数购买 USDP 代币,之后用通过购买的 USDP 代币数量计算所需铸造的 PLP 代币数量。

此处攻击者用 1,000,000 枚 USDT 购买了 996,769 枚 USDP,并铸造出了约 996,324 枚 PLP 代币。

  1. 接着攻击者调用金库合约中的 buyUSDP 函数,该函数在通过管理员验证后可以直接用 USDT 购买 USDP 代币,同时会增加金库合约中的 USDT 代币储备。

但是由于金库合约并没有开启管理员模式,导致任何用户都可以直接调用金库合约的 buyUSDP 函数来购买 USDP 代币,所以攻击者直接将闪电贷剩余的 2,000,000 枚 USDT 转入金库合约并购买 USDP 代币。

  1. 紧跟着,攻击者立马移除流动性,此时会燃烧掉所有的 PLP 代币并卖出 USDP 代币。但是可以发现,攻击者燃烧掉 996,311 枚 PLP 代币却获取了 1,962,472 枚 USDP 代币。

这是由于在上一步购买 USDP 后,金库中的 USDT 代币数量突然暴增,而 PLP 代币的价格基于金库中 USDT 的余额进行计算的,因此 PLP 代币的价格也被拉高,使得攻击者获取了超出预期的 USDP 代币。

  1. 最后,攻击者调用金库合约的 sellUSDP 函数,卖出第三步中获取的剩余 USDP 代币,换成 USDT 后归还闪电贷,获利离场。

总结

本次攻击事件是由于核心函数的权限管控功能未开启,并且流动性代币的价格计算模型设计得过于简单,仅取决于金库中的 USDT 代币数量和总供应量,导致攻击者可以利用闪电贷来恶意操控价格以获取非预期的利润。Safful安全团队建议项目方设计流动性代币的价格模型时,加入多方面因素进行限制,例如添加流动性的时间因子等,并且严格限制核心函数的权限。

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

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

相关文章

基于 CPU 在docker 中部署PaddleOCR

1. 拉取镜像 docker pull registry.baidubce.com/paddlepaddle/paddle:2.4.0注:写该文章时,Paddle 最新版本为2.5.1,但是在实际安装中会出现与 PaddleHub 2.3.1版本的冲突,故采用2.4.0版本 2. 构建并进入容器 docker run --name…

conan入门(二十八):解决conan 1.60.0下 arch64-linux-gnu交叉编译openssl/3.1.2报错问题

上一篇博客《conan入门(二十七):因profile [env]字段废弃导致的boost/1.81.0 在aarch64-linux-gnu下交叉编译失败》解决了conan 1.60.0交叉编译boost/1.80.1的问题后,我继续交叉编译openssl/3.1.2时又报错了 conan install openssl/3.1.2 -pr:h aarch64-linux-gnu.…

【运维】docker如何删除所有容器

要删除所有已停止的容器,你可以使用以下命令: docker container prune这个命令将会删除所有已停止的容器,以释放磁盘空间和清理Docker环境。删除前请确保你不需要这些已停止的容器,因为一旦删除,容器数据将不可恢复。…

uniapp:如何修改路由加载条的样式

路由加载条默认是绿色,通过元素选择工具我们可以知道元素的类名是#router-loadding .loadding,具体设置在h5-dom.js文件里。 我们直接在App.vue里对加载样式进行修改即可,如下图: !important一定记得要加,否则不生效&…

BCC源码内容概览(5)

接前一篇文章:BCC源码内容概览(4) 本文参考官网中的Contents部分的介绍。 BCC源码根目录的文件,其中一些是同时包含C和Python的单个文件,另一些是.c和.py的成对文件,还有一些是目录。 工具(To…

从0到1搞定前端性能测试(非常详细)

提到性能测试大家往往会想到多用户使用系统时对服务器后端的性能测试,前端页面的性能往往容易被忽视,但是如果存在性能问题,就算后端服务器性能再好,用户的体验也是极差的。并且随着现在富前端和大前端的流行,前端系统…

基于SpringBoot的在线商城系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 商品分类管理 商品信息管理 轮播图管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储&#xff…

数据增强代码实践,补一点多进程,多线程的知识点

目前最先进的神经网络模型,其本质上也是在利用一系列线性和非线性的函数去拟合目标输出。既然是拟合,当然越多的样本就能获得越准确的结果,这也是为什么现在训练神经网络所使用的数据规模越来越大。 在实际使用中,我们往往可能只…

苹果销量倍增,但iPhone15销量或大跌,中国用户不接受咖喱味

由于印度制造的iPhone15出现质量问题,导致欧洲消费者不接受,由此传出消息指苹果将印度制造的iPhone15完全供应印度市场和中国市场,这已导致中国消费者对它的抗拒,不过这似乎并未影响iPhone15的整体销量。 日前两大电商平台公布的数…

一百八十七、大数据离线数仓完整流程——步骤六、在ClickHouse的ADS层建表并用Kettle同步Hive中DWS层的结果数据

一、目的 经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。 二、数仓实施步骤 (六)步骤六、在Click…

前端关于对象中套用对象传参的小问题

在js的对象是引用类型的,他如果里面还套用对象的话那么通过axios传参给后端就会出现一个问题,就是【object,object】这种包装形式 那么如何来解决这个问题呢? 其实这就是要对数据传输中json格式要有一定的了解才可以解决这个问题…

windows 安装 MySQL 绿色版

windows 安装 MySQL 绿色版 下载 官网: MySQL下载页面: MySQL直接下载链接:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.34-winx64.zip 安装 将下载的mysql.zip文件解压缩到指定目录 搜索 cmd 并以管理员身份运行 切换到…

详解MySQL索引+面试题

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、索引概述…

iMovie for Mac v10.3.9(视频剪辑)

iMovie是一款视频剪辑软件,广泛应用于Mac和iOS设备。以下是关于iMovie软件的一些推荐信息: 简单易用。iMovie的设计简洁,操作简单,即使是没有剪辑经验的新手也可以轻松上手。软件内置了丰富的视觉效果、滤镜、绿幕抠图、分屏和画…

算法基础之差分和前缀和

差分 差分介绍 结论:差分是前缀和的逆运算 举例 一维差分 //一维前缀和 a[i]部分就是一维差分数组 s[i] s[i-1]a[i]; //一维差分 a[i] s[i]-s[i-1];二维差分 //二维前缀和 a[i][j]部分就是一维差分数组 s[i][j] s[i-1][j]s[i][j-1]-s[i-1][j-1]a[i][j]; //二…

优思学院|如何解读Minitab中测量系统分析(MSA GRR)的结果?

在现代制造和质量控制过程中,精确的测量是至关重要的。为了确保我们的测量工具可靠,我们需要评估其重复性与再现性。这就是测量系统分析(Measurement System Analysis,简称MSA)的关键目标之一。以下将介绍如何使用Mini…

SPEOS—光学产品设计及仿真工具

SPEOS是ANSYS公司功能强大的光学仿真软件,用于光学设计、环境与视觉模拟、成像仿真等,强大的解决方案提供了可视化光学系统和直观的人机交互平台,其仿真技术已广泛用于汽车、电子电器、精密仪器、照明设备等领域。SPEOS软件内嵌ISO和CIE国际标…

漏洞挖掘篇(基础)

文章目录 方法概述 漏洞挖掘方法分类 静态分析技术动态分析技术 符号执行 符号执行的基本原理符号执行的应用漏洞挖掘-检测是否数组越界 污点分析 基本思想污点分析核心要素优缺点 词法分析 基本概念漏洞挖掘实战 实践一:基于词法分析和逆向分析的可执行代码静态检…

有关MySQL性能的分析,你知道哪些?

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、SQL性能…

PyTorch深度学习实战——交通标志识别

PyTorch深度学习实战——交通标记识别 0. 前言1. 交通标志识别1.1 数据集介绍1.2 数据增强和批归一化 3. 交通标志检测相关链接 0. 前言 在道路交通场景中,交通标志识别作为驾驶辅助系统与无人驾驶车辆中不可缺少的技术,为车辆行驶中提供了安全保障。在…