【漏洞分析】20240507-SATURN:当闪电贷遇上有缺陷的通缩机制

背景信息

2024 年 5 月 6 日,SATURN 代币遭受价格操控攻击,损失 15 BNB。攻击发生的原因是由于 SATURN 代币的代币通缩机制设计不合理,使得攻击者可以通过燃烧池子中的 SATURN 代币来操控价格完成获利。

本次攻击由两笔交易构成

项目分析

SATURN 是一个包含代币发行,收税,锁定和通缩等机制的代币协议。 SATURN 代币的愿景是通过出售时的通缩机制来销毁部分代币,从而维持价格不断上涨。可惜事与愿违,正是这个精心设计的通缩机制导致了攻击的发生。

简单介绍一下这个代币中和本次攻击事件相关的特殊机制:

  1. fee on transfer:如果 from 和 to 都不在 _excludedFees 中,则收取部分 fee。
  2. burn:如果 to 地址为 pair,则触发 burn 机制。

Trace 分析

Trace1

攻击合约用 0.015 BNB 换取 99000 Saturn,重复 10 次。

Trace2

  1. 在 1.1 步骤攻击者通过闪电贷借出 3300 BNB,在 1.2 步骤归还闪电贷。
  2. 攻击者用 3204 BNB 换取 101030461 Saturn,发送到 0xc8ce 地址(owner)。
  3. 攻击者出售 228832 Saturn 换取 3220 BNB,完成获利。

0xc8ce 地址为 Saturn 代币的 owner 地址,并且记录在 _excludedFees 中,所以在本次 swap 操作中没有扣除 fee。

攻击者用 3204 BNB 换取 101030461 Saturn,pair 中剩余 499999 Saturn。

随后攻击者出售 228832 Saturn 换取 3220 BNB,在这一步中触发了收税机制和通缩机制:

  1. transfer 11441 Saturn as fee
  2. burn 499999 Saturn
  3. sync pair Saturn, BNB → 21851e-18, 3220
  4. pair receive 217391 Saturn

transfer 11441 Saturn as fee

burn 499999 Saturn

当攻击者向 pair 出售 Saturn 时,会触发其燃烧机制。

  1. _processBlockOverflow() 函数记录当前 pair 合约的 Saturn 最大持有量 499999
  2. 计算 amountToBurn 的值,(228832 - 11441) * 230 / 100 = 499999
  3. autoLiquidityPairTokens() 函数 burn 499999 Saturn,pair 中剩余 218521e-18 Saturn

在 burn 掉了 pair 中大量的 Saturn 后,攻击者用 217391 Saturn 换出 3220 BNB,完成获利。

最后就是归还 3301 BNB 闪电贷,转移 14 BNB 获利资金

漏洞分析

Saturn 代币的问题出现在通缩机制是设计上。其本意是在用户向 pair 出售 Saturn 时,记录 pair 持有的 Saturn 数量。然后 burn 掉用户出售数量 * 230% 的 Saturn 代币进行通缩,以保持 Saturn 的价格。

攻击者通过闪电贷买入大量的 Saturn 代币(由于是买入操作,此时并不会记录 pair 持有的 Saturn 数量),使得 pair 中的 Saturn 数量较少。再通过出售在准备交易中买入的 Saturn,使其满足出售金额 \* 燃烧系数 = pair 余额,燃烧掉 pair 中大部分的 Saturn。

通缩机制在设计时没有考虑到闪电贷对 pair 余额的影响,以及出售数量与 pair 余额量级接近的情况。

后记

之前已经分析完了,有优先级更高的事情,所以拖到现在才把这篇播客写出来。这种代币的攻击事件相对DeFi来说会较为简单点,后续出于对自己能力的锻炼,可能会更偏重去分析一下DeFi类型的攻击。这可能会是个比较漫长的过程,我需要去了解去学习大量的DeFi协议,融会贯通。但是千里之行总得迈出第一步吧,以后关注的内容可能更多放在自身,不去过计较一些短期的得失,尝试寻找一种内源性的动力。

相关推荐
木西4 天前
AI 驱动的去中心化资产管理:QuantixAI 核心金库与智能风控架构解析
web3·智能合约·solidity
磐链科技8 天前
智能合约系统:去中心化世界的可信执行基础设施
去中心化·区块链·智能合约
漠月瑾-西安11 天前
PHP曝出两个严重RCE漏洞:CVE-2026-109618、CVE-2026-109619技术分析与修复指南
网络安全·php·漏洞分析·漏洞修复·远程代码执行
木西11 天前
dAppOS 意图执行网络核心技术剖析:从智能账户、生息资产金库到 OMS 乐观质押仲裁的 Solidity 0.8.28 实现
web3·智能合约·solidity
木西18 天前
Web3+AI 社交工程解析|MetYa 去中心化身份与 DePIN 算力方案
web3·智能合约·solidity
2601_9619633818 天前
电子合同检索与全文搜索怎么测、怎么选:六个指标 + 五家平台对比 + 八个自测问题
数据库·后端·python·django·智能合约
十二同学啊22 天前
反洗钱体系详解:KYC、风险评级、交易监控与可疑交易报告
web3·区块链·智能合约
合天网安实验室23 天前
CVE-2026-40281漏洞复现记录
漏洞分析·gotenberg·换行符注入·api接口漏洞
deepseek2324 天前
MCP SSRF 连环漏洞拆解:从 Google 到 mcp-server-fetch,Agent 的信任链如何变成攻击链
安全·漏洞分析·ssrf·ai agent·mcp
木西25 天前
Raydium(RAY)原子闭环:资金归集达标,单笔交易自动开池|EIP-1153 合约实战
web3·智能合约·solidity