Nemo合约安全漏洞致259万美元被盗,Sui链上资产安全再敲警钟
事件概述:
北京时间 2025 年 9 月 7 日,Sui 链上的 Nemo 被攻击,黑客通过操作 py_index 以窃取约 259 万美元。


Attacker Address:
0x01229b3cc8469779d42d59cfc18141e4b13566b581787bf16eb5d61058c1c724
Attack Transaction:
https://suivision.xyz/txblock/HMMicxQWn 43 rnNswi 4 gNHanUaeiWW 5 ijqM 5 bHLca 67 D 9?tab=Overview
Nemo Package:
0x0f286ad004ea93ea6ad3a953b5d4f3c7306378b0dcc354c3f4ebb1d506d3b47f
根本原因:
此次 Nemo 被盗 根本原因 是 PyState 错误地设置为可变引用,导致攻击者可以恶意修改 py_index,在调用 mint_py 函数时通过 py_index 与分离出 SY 参数相乘得到大量的 PT 和 YT。
经过深入分析发现,在 py.get_sy_amount_in_for_exact_py_out 函数调用 py.current_py_index 时允许传入一个毫无约束的数用于修改 pyState 的 py_index 字段。
·py.get_sy_amount_in_for_exact_py_out 计算出 PY 输出所需要的 SY 的输入量,然而这里 index 没有任何限制

·py.current_py_index 将传入的 py_index 和存储的 index 比较,返回最大的作为 py_state.py_index_stored 的最新值

攻击过程分析:
1. 攻击者调用 init_py_position 函数初始化一个 py_position(初始化用户的仓位记录,与本次攻击无关)。

2. 接着利用闪电贷 py.borrow_pt_amount 借出大量 PT 代币(后续通过 swap 换取 SY 余额)。

3. 调用 100 次 market.swap_exact_pt_for_sy 将 PT 兑换成 SY 代币。

4. 通过 py.get_sy_amount_in_for_exact_py_out 计算出 PY 输出所需要的 SY 的输入量,这里攻击者将 py_index 传入一个构造的极大的数 553402322211286548480000,破坏了原本的结构。

5. 接着攻击者利用被异常放大的指数,在调用 yield_factory.mint_py 时,以畸高的折扣利率铸造 PT 与 YT,从而套取大量 PT。

MintEvent 如下:

6. 最后攻击者使用铸造的 PT 通过 py.repay_pt_amount 偿还债务,然后通过 redeem 赎回收益型资产,并在 Scallop 中提取代币。
至此攻击者通过操作 py_index 已盗取大约 259 万美元,之后将资产转换为 USDC 并通过 Bridge 进行跨链转移,最终转换为 ETH 和 DAI 存储在 0x41b1906c4BCded607c6b02861cE15C2E49FF7576。
在攻击发生后 Nemo 团队紧急暂停了智能合约功能,并开始调查攻击事件。调查结果表明 259 万美元资产损失攻击源于在未充分审计的情况下上线新功能。
事件总结:
此次攻击的核心在于将敏感数据错误地设置为可写状态导致攻击者可以自由传入参数并进行修改,对于敏感数据的状态应做好严格限制和检查。
2025年数字资产财库公司 (DATCo) 报告
原文作者:CoinGecko原文编译:AididiaoJP,Foresight News自 2020 年以来,数字资产财库公司的崛起已成为加密货币领域最具标志性的发展之一。尽管媒体焦点大多集中在 ET...
预测市场2.0前瞻:“纯赌”外的5种新产品形态
原文来自neel daftary编译|Odaily 星球日报 Golem(@web 3_golem)预测市场未来也许是 Polymarket/Kalshi 独占鳌头,占据所有关注和市场份额。但即便如此...
Web3新手系列:想靠运气发财?聊聊区块链"撞库"这件事
假设现在有个大哥钱包里有 100 个比特币(大概价值一千万美元),但他把私钥丢了。理论上说,这些比特币还在链上,只要有人"碰巧"生成了同样的私钥或地址,就能把钱拿走。那么问题来了:我能不能写个程序,疯...
