NanoJS10/Defi-tuna-exploit-

GitHub: NanoJS10/Defi-tuna-exploit-

一份关于 DeFiTuna Solana 借贷池漏洞攻击的开源链上调查报告,完整重建了从根因分析到 Solana→Ethereum 跨链资金归集的取证过程。

Stars: 0 | Forks: 0

# DeFiTuna 漏洞利用调查 **案件编号: DTuna-06-NANOJS10 **链:** Solana → Ethereum(通过 Mayan Finance / Circle CCTP) **损失:** ~570,000 USDC **日期:** 2026年7月16日, 05:48:12 UTC **作者:** Nanojs10 **状态:** 独立的开源追踪。调查结果完全取自公开的区块浏览器和公开 API。 ## 1. 摘要 2026年7月16日,攻击者在单笔交易中从 DeFiTuna 在 Solana 上的 USDC 借贷金库中抽走了 570,000 USDC。指令 `Open_and_increase_tuna_spot_position_jupiter` 通过 Jupiter 将 569,601 USDC 路由至由攻击者控制的 FusionAMM TUNA/USDC 池中,并收到 **0.000494 TUNA (~$0.06)** 作为回报。 该兑换不是一笔常规交易。它是存入攻击者构建的池子,执行该操作的指令被程序视为一个合法的杠杆头寸。收益被平均分配到两个攻击者钱包中,通过 Mayan Finance 跨链桥接至 Ethereum 上的 ETH、USDC 和 DAI,并最终归集到一个通过 RAILGUN 隐私协议注资的单一钱包中。 Solana 上的源头、机制、两个攻击者钱包以及 Ethereum 上的归集钱包都是可以直接验证的。此外还出现了两条进一步的线索:一笔已确认的向该操作者集群的 Backpack Exchange 提现,以及表明该归集钱包汇集了超出本次单一事件收益的证据。 *(下文的根因机制与 CertiK 于2026年7月16日发布的独立事件分析相一致。本追踪印证了该分析,并扩展了资金流向和归属调查工作。)* ## 2. 本次调查的补充内容 除独立确认机制和攻击者地址外: - **交易所 KYC 归属锚点:** 一笔已确认的(2026年2月4日)向操作者地址集群提现的 Backpack Exchange 记录,这是本案中唯一的现实世界身份线索 - **记录在案的 Mayan solver 误导性线索:** 三个在追踪期间看似攻击者端点的基础设施地址,已被排除并记录在案,以防被错误归因 - **完整的跨链重建:** 两条独立的 Mayan `destAddress` 记录证明两个攻击者钱包都指向同一个归集钱包,加上 RAILGUN 的注资和 CoW Protocol 分发 - **多重受害者信号:** 归集钱包的流出量超过了 DeFiTuna 的损失,且 RAILGUN 的流入量与任何 DeFiTuna 的资金分支都不匹配 ## 3. 漏洞利用交易 | 字段 | 值 | |---|---| | 签名 | `124ibr7NU7AtJdeZ1WJjJy5YathNiBtCnV554uwJtkc7qEXeF64dmCziv4QoiEEMRG6EmCRx8ec2LkARpWH3kvEG` | | 区块 | 433214256 | | 时间戳 | 2026-07-16 05:48:12 UTC | | 签名者 (攻击者) | `7hiHL8AgDuLNVDQLfN3GHdLAEeCN1F7uz6nSANRvFJst` | | 指令 | `Open_and_increase_tuna_spot_position_jupiter` | | 程序 | `tuna4uSQZncNeeiAMKbstuxA9CUkHH6HmC64wgmnogD` | ### 余额变化 | 账户 | 所有者 | 变化 | |---|---|---| | `4iTbtBmr4fXpkUD4kTW9pujvXbCT3AkWya6h3dbNP7a6` | `D76dDcSU5HnAGqVEZCDLyGgLpTp4xZuqeZyVDtUdDv55` (USDC 金库) | **−570,000 USDC** (574,665.897079 → 4,665.897079) | | `5YQS7eNFe8foSinWKUkUz9zCyxur1SNXghfPefTBsKWA` | DefiTuna: 金库 | +399 USDC (手续费) | | FusionAMM (TUNA-USDC) 池 2 | FusionAMM 市场 | +569,601 USDC | | FusionAMM (TUNA-USDC) 池 1 | FusionAMM 市场 | −0.000494 TUNA | | `BphcgCcg3H9QBik8dkSpvvx886paqbtBVJLBvTH2PcvM` | `9ytGWP8tCRF1keREJ5VHqBpSuM9MZYwm3oFQQa1SvESb` (头寸) | +0.000494 TUNA | ## 4. 根因:偿付能力检查中的向下取整为零 该缺陷存在于 DeFiTuna 的 `TunaPosition.is_healthy()` 偿付能力检查中,具体位于 `compute_total_and_debt()` (tuna_position.rs)。 1. 攻击者创建了一个几乎为空的 TUNA/USDC Fusion 池,并将其初始价格设定为接近真实的 oracle 价格,从而通过了 DeFiTuna 的兑换前价格偏差检查。 2. 他们在异常高的 tick (208,640) 处放置了两个攻击者所有的限价单头寸,增加了 0.000526 + 0.000526 = 0.001052 TUNA。这些头寸由 `7hiHL8AgDuLNVDQLfN3GHdLAEeCN1F7uz6nSANRvFJst` 和 `BK9aTnKfPNnnj45Me5ACrky2vexzUrZHRzr4BjmQpH3c` 所有,并被定位用于接收即将到来的 USDC。 3. 攻击者以零抵押品开立了 DeFiTuna 现货头寸,并将借来的 569,601 USDC(所有借入的 USDC 减去手续费)通过内嵌的 Jupiter 路由器路由到这个流动性极薄的池子中。在 tick 为 208,640、0.1% 手续费的情况下,输出为 `569601 / (1.0001)^208640 × (1 − 0.001) = 0.000494845`,向下取整后为 0.000494 TUNA。 4. 随后 DeFiTuna 以兑换前/oracle 的价格 0.0018375338 对该头寸进行估值。`494 × 0.0018375338 = 0.9077417`,这是一个小于 1 的正值。`to_num()` 通过 **舍弃小数部分,将其向下取整为零**,从而将其转换为整数。 5. 由于总资产被评估为零,该头寸被视作空仓,被赋予了默认的 1.0x 杠杆,并判定为健康状态。偿付能力检查由此被绕过。 6. 此时,从经济角度来看,USDC 已属于两个攻击者的限价单头寸。每个攻击者都调用了 `DecreaseLimitOrder`,各自提取了 **284,280.483231 USDC**。 该漏洞在于将小于 1 的头寸价值向下舍入为零,健康检查将其误读为一个空(即安全)头寸。这不是兑换漏洞或 oracle 漏洞。 ## 5. Solana 上的 50/50 分配 FusionAMM 池 (`917DKTphW3rhBG5gsJpwKsNGisNV2dx74uUFd8HBEjtg`) 的转账记录(共五次转账)核实了全部金额: | 方向 | 交易对手 | 金额 (USDC) | |---|---|---| | 流入 | `9ytGWP8tCRF1keREJ5VHqBpSuM9MZYwm3oFQQa1SvESb` | +569,601 | | 流出 | `7hiHL8AgDuLNVDQLfN3GHdLAEeCN1F7uz6nSANRvFJst` (钱包 1) | −284,280.483231 | | 流出 | `BK9aTnKfPNnnj45Me5ACrky2vexzUrZHRzr4BjmQpH3c` (钱包 2) | −284,280.483231 | | 流出 | DefiTuna 金库 | −68.35212 (手续费) | **这两个钱包属于同一操作者:** - 钱包 2 在漏洞利用发生前五分钟向钱包 1 转入了 1 SOL 作为资金 - 钱包 2 支付了用于创建此次攻击中使用的 FusionAMM 池的租金 - 两者收到了相同的金额 - 两者都通过 Mayan 路由到了同一个 Ethereum 归集钱包 ![FusionAMM 池 50/50 分配](https://raw.githubusercontent.com/NanoJS10/Defi-tuna-exploit-/main/evidence/01-fusionamm-pool-5050-split.jpg) ## 6. 通过 Mayan Finance 进行跨链转移 每一批资金都是由两个攻击者钱包之一签署的 Mayan 兑换订单。从 Mayan Explorer API 获取到了两个订单;**两者都指向了同一个 Ethereum 目的地**。 **订单 A** (钱包 1): 100,079.92 USDC → 51.928452 ETH → `0xb2cd3e99e45f8ab15fee77a014a3d82f9fe05f3e` **订单 B** (钱包 2): 141,855.96 USDC → 141,701.17 DAI → `0xb2cd3e99e45f8ab15fee77a014a3d82f9fe05f3e` 两个独立的订单,两个不同的攻击者钱包,同一个目的地。这是直接证据而非推断,证明该归集钱包由攻击者控制,且两个 Solana 钱包属于同一操作者。 ![归集钱包跨链流入](https://raw.githubusercontent.com/NanoJS10/Defi-tuna-exploit-/main/evidence/02-consolidation-wallet-crosschain-inflows.jpg) ### Mayan solver 地址:非攻击者(误导性线索) 这些地址在追踪过程中看似端点,但实际上是 Mayan solver/结算基础设施。顺着 USDC 追踪通常会在这些地址处陷入死胡同。记录在此以免被错误归因。 | 地址 | 链 | 角色 | |---|---|---| | `0x754DcfB2861547015B221e963b4133A71dBdC024` | Monad | Mayan solver | | `3oUEaNt7uL7pjZ6gdiAiEVRp9ZCcGRec7B5aSvXcjbWS` | Solana | Mayan solver | | `0xc1062b7c5dc8e4b1df9f200fe360cdc0ed6e7741` | Monad | Mayan MCTP 结算 | ## 7. 归集钱包 **`0xb2cd3e99e45f8ab15fee77a014a3d82f9fe05f3e`** 为此次操作全新创建,通过 **RAILGUN: Relay Adapt** 注资,接收了来自两个钱包的每一批资金。随后通过 CoW Protocol 进行兑换并分发至下游地址。 ![归集钱包交易](https://raw.githubusercontent.com/NanoJS10/Defi-tuna-exploit-/main/evidence/03-consolidation-wallet-transactions.jpg) ### 后续分发 | 金额 | 目的地 | |---|---| | 140 ETH | `0x6a2e244af2c17CFc64e8ca0EA4335318EdF20B0B` | | 280 ETH | `0x0a2e6ad5808ceeee4f72252068a9df707f660b0b` ⚠️ | | 280 ETH | `0x0a2eb759ae500811e01ad7bb2e30a492cd840b0b` ⚠️ | | 291,696.60 DAI | `0x509b6d094a6c26d716aac131e9adee5b16b80d3e` | | 875,089.79 DAI | `0x509b650e0cc17bbd21553f96faff7003553b0d3e` ⚠️ | ⚠️ = 在 MetaSleuth 中被标记为风险地址。Co Protocol 和 Mayan 转发器节点属于 DEX/桥接基础设施,并非攻击者钱包。 ![MetaSleuth 资金流向图](https://raw.githubusercontent.com/NanoJS10/Defi-tuna-exploit-/main/evidence/04-metasleuth-fund-flow-graph.png) ## 8. 多重受害者信号 来自 DeFiTuna 的全部 570,000 USDC 均已说明去向:在两个攻击者钱包之间按 50/50 比例分配,两者均通过 Mayan 路由至归集钱包。 然而,来自 `0xb2cd3e99e45f8ab15fee77a014a3d82f9fe05f3e` 的流出资金(总计约 $1.5M+ 的 ETH 和 DAI)**大幅超过**了约 $580,000 的 DeFiTuna 损失,并且该钱包收到了与任何 DeFiTuna 资金分支都不匹配的 RAILGUN 流入资金 (183,907 USDC)。这表明该钱包汇集了不止一次事件的收益:这很可能是一个连环作案者,并且可能存在其他受害者。要将具体哪些下游资金隔离出来认定为属于 DeFiTuna,需要使用超出人工区块浏览器工作范畴的污点分析工具。 ## 9. 归属锚点:Backpack Exchange (KYC) 2026年2月4日,一个 Backpack Exchange 地址(`43DbAvKxhXh1oSxkJSqGosNw3HpBnmsWiak6tB5wpecN`,Solscan 标记)向 `D8cJRpXaCWVK8c3doDq7Ymoz2XE4WyhFhbgNytWwqptA` 发送了 1.08191 SOL,该地址在此操作的整个 Mayan 活动中反复出现。 交易:`3zDmkcrkK3nFuj128T8dQp6boCwYPFMZd1E2LNgMeYyJY1CCtumD61J1hHs9ChmejE5DSJ6Yx3JKFqU38rzQ8zAJ` Backpack 持有该次提现背后的 KYC 身份信息。这是整个追踪过程中唯一能引出现实世界身份的节点,但这需要仅对 Backpack 或执法部门开放的交易所记录才能进一步调查。 ## 10. 资金流向 ``` EXPLOIT (Solana) tx 124ibr7NU7AtJdeZ1WJjJy5YathNiBtCnV554uwJtkc7qEXeF64dmCziv4QoiEEMRG6EmCRx8ec2LkARpWH3kvEG | 570,000 USDC out of DeFiTuna vault, into FusionAMM pool v FusionAMM pool 917DKTphW3rhBG5gsJpwKsNGisNV2dx74uUFd8HBEjtg | split 50/50 | +-- 7hiHL8AgDuLNVDQLfN3GHdLAEeCN1F7uz6nSANRvFJst (wallet 1) 284,280.48 USDC | | Mayan, into ETH / USDC | v +-- BK9aTnKfPNnnj45Me5ACrky2vexzUrZHRzr4BjmQpH3c (wallet 2) 284,280.48 USDC | Mayan, into DAI v both destAddress = 0xb2cd3e99e45f8ab15fee77a014a3d82f9fe05f3e (consolidation wallet) | RAILGUN funded; swaps via CoW Protocol v downstream: 0x6a2e244af2c17CFc64e8ca0EA4335318EdF20B0B 140 ETH 0x0a2e6ad5808ceeee4f72252068a9df707f660b0b 280 ETH (risk-flagged) 0x0a2eb759ae500811e01ad7bb2e30a492cd840b0b 280 ETH (risk-flagged) 0x509b6d094a6c26d716aac131e9adee5b16b80d3e 291,696 DAI 0x509b650e0cc17bbd21553f96faff7003553b0d3e 875,089 DAI (risk-flagged) | v [further tracing requires taint analysis; RAILGUN privacy layer present] ``` ## 11. 攻陷指标 (IoC) ### 攻击者 | 角色 | 地址 | 链 | |---|---|---| | 攻击者钱包 1 (签名者) | `7hiHL8AgDuLNVDQLfN3GHdLAEeCN1F7uz6nSANRvFJst` | Solana | | 攻击者钱包 2 (共同操作者) | `BK9aTnKfPNnnj45Me5ACrky2vexzUrZHRzr4BjmQpH3c` | Solana | | 头寸账户 | `9ytGWP8tCRF1keREJ5VHqBpSuM9MZYwm3oFQQa1SvESb` | Solana | | 中间拆分者 | `8P3H7Hy98LWhw5QhuXdoigVdAzPCYRTYjdtQQKhGwvqD` | Solana | | 中间拆分者 | `GrXBhM6Ty6YxubFp8zubtJF12WXmKj1dhMyakRPeaDpo` | Solana | | 资金分支账户 | `4ZKkGZuoXqgSHbmsJXUib3dgn5WNhzbPEXrxuMYJ5oQ3` | Solana | | 资金分支账户 | `F4xUroPaHro4gb2JAqa3e93E7DdZytRQJ4L2cHT5E53p` | Solana | | 资金分支账户 | `ETGhosPrFApbiiKXDpxrhBz7J2MdTA3dxnL2Nkio9vEX` | Solana | | 归集钱包 | `0xb2cd3e99e45f8ab15fee77a014a3d82f9fe05f3e` | Ethereum | ### 归属 | 项目 | 地址 | 链 | |---|---|---| | Backpack Exchange (注资者) | `43DbAvKxhXh1oSxkJSqGosNw3HpBnmsWiak6tB5wpecN` | Solana | | 操作者集群 (接收者) | `D8cJRpXaCWVK8c3doDq7Ymoz2XE4WyhFhbgNytWwqptA` | Solana | ### 受害者 / 基础设施 | 项目 | 地址 | 链 | |---|---|---| | DefiTuna 程序 | `tuna4uSQZncNeeiAMKbstuxA9CUkHH6HmC64wgmnogD` | Solana | | 受损的 USDC 金库 | `D76dDcSU5HnAGqVEZCDLyGgLpTp4xZuqeZyVDtUdDv55` | Solana | | FusionAMM 池 | `917DKTphW3rhBG5gsJpwKsNGisNV2dx74uUFd8HBEjtg` | Solana | ### 下游 | 金额 | 地址 | 状态 | |---|---|---| | 140 ETH | `0x6a2e244af2c17CFc64e8ca0EA4335318EdF20B0B` | 未分类 | | 280 ETH | `0x0a2e6ad5808ceeee4f72252068a9df707f660b0b` | 风险标记 | | 280 ETH | `0x0a2eb759ae500811e01ad7bb2e30a492cd840b0b` | 风险标记 | | 291,696 DAI | `0x509b6d094a6c26d716aac131e9adee5b16b80d3e` | 未分类 | | 875,089 DAI | `0x509b650e0cc17bbd21553f96faff7003553b0d3e` | 风险标记 | ### 非攻击者:Mayan 基础设施 | 地址 | 链 | 角色 | |---|---|---| | `0x754DcfB2861547015B221e963b4133A71dBdC024` | Monad | Mayan solver | | `3oUEaNt7uL7pjZ6gdiAiEVRp9ZCcGRec7B5aSvXcjbWS` | Solana | Mayan solver | | `0xc1062b7c5dc8e4b1df9f200fe360cdc0ed6e7741` | Monad | Mayan MCTP 结算 | ## 12. 方法 所有调查结果均来自公开来源。不涉及任何隐私数据,未获取系统访问权限,未与任何描述的地址发生交互。 | 来源 | 用途 | |---|---| | Solscan | Solana 交易、余额变化、账户历史 | | Etherscan | Ethereum 归集钱包和下游追踪 | | MonadScan | Monad 端 CCTP 结算 | | Circle Iris API | CCTP 销毁证明和消息解码 | | Mayan Explorer API | 跨链订单记录 (`destAddress`, `toToken`, `trader`) | | MetaSleuth | 资金流向可视化和风险标记 | ## 13. 归属说明 **已证实:** 漏洞利用交易和机制、两个攻击者钱包及其关联、570,000 USDC 的完整核对,以及归集钱包(由两条独立的 Mayan 订单记录确认)。 **经评估认为:** 归集钱包汇集了多次事件的收益,此判断基于流出量超过 DeFiTuna 的损失以及无法解释的 RAILGUN 流入。 **尚未确立:** 任何现实世界的身份。Backpack 的提现是一个归属锚点,并非身份确认。 根因机制与 CertiK 的独立事件分析(2026年7月16日)相一致;本追踪是独立进行的并印证了该分析,同时补充了上述的资金流向、归属和误导性线索的调查工作。 ## 作者 **Soji Waliu (NanoJS)**,独立区块链取证研究员 - GitHub: [github.com/NanoJS10](https://github.com/NanoJS10) - Email: NanoJS@proton.me - X: [@Nanojs10](https://x.com/Nanojs10) ### 相关调查 | 案件 | 协议 | 链 | 损失 | |---|---|---|---| | [NanoJS01](https://github.com/NanoJS10/merlin-dex-forensic-investigation) | MerlinDEX | zkSync Era | $1.82M | | [NanoJS02](https://github.com/NanoJS10/Zunami-protocol-Investigation) | Zunami Protocol | Ethereum | $2.1M | | [NanoJS03](https://github.com/NanoJS10/Unizen-Protocol-Exploit) | Unizen Protocol | Ethereum | $2.1M | | [NanoJS-FixerSell01](https://github.com/NanoJS10/NanoJS-FixerSell01) | FIXER COIN | Ethereum | 已阻止 | | NanoJS04 | DeFiTuna | Solana | $570K | *发布仅用于研究和防御目的。列出的地址均为链上标识符,并非针对任何所指名个人的指控。*
标签:DeFi, 区块链安全, 威胁情报, 子域名变形, 开发者工具, 漏洞分析, 资金流向分析, 路径探测, 链上追踪