Binance Square

慢雾 SlowMist

image
Preverjeni ustvarjalec
​慢雾(SlowMist) 是一家行业领先的区块链安全公司,主要通过安全审计及反洗钱追踪溯源等服务广大客户,已有商业客户上千家,客户分布在十几个主要国家与地区。
0 Sledite
32.7K+ Sledilci
867 Všečkano
145 Deljeno
Vsebina
--
2644 万美元被盗背后:Truebit Protocol 合约漏洞分析作者:enze & Lisa 编辑:77 背景 2026 年 1 月 8 日,去中心化离线计算协议 Truebit Protocol 遭受攻击,攻击者利用合约漏洞获利约 8,535 ETH(约合 2,644 万美元)。以下为慢雾安全团队对本次攻击事件的详细分析。 根本原因 Truebit Protocol 的 Purchase 合约在计算铸造 TRU 代币所需 ETH 数量时,由于整数加法运算缺乏溢出保护,导致价格计算结果异常归零,攻击者得以近乎零成本铸造大量代币并套取合约储备金。 前置知识 Truebit Protocol 是一个去中心化的链下计算市场,旨在将复杂计算任务从区块链主网转移至链下执行,同时通过经济激励机制保障计算结果的正确性。协议引入了原生代币 TRU,TRU 代币采用算法化的弹性供应机制,TRU 的实时价格由合约内 ETH 储备量与 TRU 流通供应量的比率函数动态决定,其铸造与销毁完全由链上智能合约自动管理: 铸造:用户向 Purchase 合约存入 ETH,按算法价格铸造 TRU销毁:用户销毁持有的 TRU,按算法价格从合约提取 ETH 攻击分析 攻击者地址:0x6C8EC8f14bE7C01672d31CFa5f2CEfeAB2562b50 攻击合约:0x764C64b2A09b09Acb100B80d8c505Aa6a0302EF2 相关攻击交易:0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014 1. 攻击者调用 Purchase 合约的 getPurchasePrice 函数,查询铸造 240,442,509,453,545,333,947,284,131 枚 TRU 代币所需的 ETH 数量。由于该数值经过精心构造,导致价格计算过程中发生整数溢出,函数返回值为 0。 2. 攻击者调用 Purchase 合约的 0xa0296215 函数(铸造函数),传入上述代币数量。由于所需 ETH 价格被计算为 0,攻击者无需支付任何 ETH,成功铸造了 240,442,509,453,545,333,947,284,131 枚 TRU 代币。 3. 攻击者立即调用 Purchase 合约的 0xc471b10b 函数(销毁函数),将刚铸造的全部 TRU 代币销毁,从合约储备中兑换出 5,105.069 ETH。 4. 攻击者重复执行上述「铸造 → 销毁」流程。随着 TRU 代币供应量 (S) 增大,后续铸造需支付少量 ETH,但铸造所得代币的价值仍远超支付成本,套利空间依然可观。攻击者持续操作直至耗尽合约的 ETH 储备。 攻击原理剖析 1. 价格计算公式 通过对 Purchase 合约进行反编译分析,我们定位到核心的价格计算函数: 该函数用于计算铸造指定数量代币所需支付的 ETH 数量,其计算公式如下: Price = (100 A² R + 200 A R S) / ((100 - T) S²) 其中: A (AmountIn):用户请求铸造的代币数量R (Reserve):合约当前的 ETH 储备量S (Supply):代币当前的总供应量T (THETA):合约参数,固定值为 75 2.漏洞原因 该合约采用 Solidity ^0.6.10 版本编译。在 Solidity 0.8.0 之前的版本中,算术运算符(+、-、*)不包含内置的溢出检查。当运算结果超过 uint256 的最大值(2²⁵⁶ - 1)时,会发生静默溢出(Silent Overflow),结果将回绕至 0 附近的小数值。 在价格计算的关键代码中: 然而乘法运算使用了 SafeMath 库进行溢出检查,但分子的加法运算 v12 + v9 直接使用了原生 + 运算符,未进行溢出保护。这构成了本次攻击的核心漏洞点。 3. 攻击数值分析 以攻击者首次铸造交易为例: 计算过程: 溢出判定: 由于 v12 + v9 的结果超过了 uint256 的最大值,发生溢出回绕。溢出后的分子值变为一个极小的数,经过整数除法后,最终计算出的 Price = 0。 4. 攻击影响 攻击者通过精心构造 AmountIn 参数,使得: 1.乘法运算均通过 SafeMath 检查(不触发 revert) 2.加法运算发生溢出,分子回绕为极小值 3.整数除法结果为 0 最终,攻击者无需支付任何 ETH,即可铸造大量代币。 MistTrack 分析 据链上追踪 & 反洗钱工具 MistTrack 分析,攻击者在本次事件中获利约 8,535 ETH(约合 2,644 万美元)。 被盗的 8,535 ETH 首先转移到三个新地址,最终均转入 Tornado Cash。 从链上看,攻击者地址曾分别在 2025/11/20、2025/12/06、2025/12/27 有过交易记录,主要行为如下: 2025/11/20:在 Avalanche 上通过 Drain 获得资金,并通过 Rhino.fi 跨链到 BNB Chain 2025/12/06:在 BNB Chain 上将收到的资金通过 Rhino.fi 跨链到 Ethereum 2025/12/27:在 Ethereum 上通过 RUN 获得 4.98 ETH,疑似为攻击者之前发起的另一个攻击,共 5 ETH 转入 Tornado Cash 目前 MistTrack 已对相关地址进行标记。 结论 本次攻击的根本原因是 Purchase 合约在计算铸造价格时,分子项的加法运算未使用 SafeMath 库进行溢出保护。由于合约采用 Solidity 0.6.10 版本编译,原生 + 运算符不具备溢出检查。攻击者通过构造特定的铸造数量,使得加法运算结果超过 uint256 最大值并发生溢出回绕,导致价格计算结果为 0,从而实现近乎零成本的代币铸造和套利。 慢雾安全团队建议对于使用 Solidity 0.8.0 以下版本的合约,开发者应确保所有算术运算均使用 SafeMath 库进行保护,避免因整数溢出导致的逻辑漏洞。

2644 万美元被盗背后:Truebit Protocol 合约漏洞分析

作者:enze & Lisa
编辑:77
背景
2026 年 1 月 8 日,去中心化离线计算协议 Truebit Protocol 遭受攻击,攻击者利用合约漏洞获利约 8,535 ETH(约合 2,644 万美元)。以下为慢雾安全团队对本次攻击事件的详细分析。

根本原因
Truebit Protocol 的 Purchase 合约在计算铸造 TRU 代币所需 ETH 数量时,由于整数加法运算缺乏溢出保护,导致价格计算结果异常归零,攻击者得以近乎零成本铸造大量代币并套取合约储备金。
前置知识
Truebit Protocol 是一个去中心化的链下计算市场,旨在将复杂计算任务从区块链主网转移至链下执行,同时通过经济激励机制保障计算结果的正确性。协议引入了原生代币 TRU,TRU 代币采用算法化的弹性供应机制,TRU 的实时价格由合约内 ETH 储备量与 TRU 流通供应量的比率函数动态决定,其铸造与销毁完全由链上智能合约自动管理:
铸造:用户向 Purchase 合约存入 ETH,按算法价格铸造 TRU销毁:用户销毁持有的 TRU,按算法价格从合约提取 ETH
攻击分析
攻击者地址:0x6C8EC8f14bE7C01672d31CFa5f2CEfeAB2562b50
攻击合约:0x764C64b2A09b09Acb100B80d8c505Aa6a0302EF2
相关攻击交易:0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
1. 攻击者调用 Purchase 合约的 getPurchasePrice 函数,查询铸造 240,442,509,453,545,333,947,284,131 枚 TRU 代币所需的 ETH 数量。由于该数值经过精心构造,导致价格计算过程中发生整数溢出,函数返回值为 0。
2. 攻击者调用 Purchase 合约的 0xa0296215 函数(铸造函数),传入上述代币数量。由于所需 ETH 价格被计算为 0,攻击者无需支付任何 ETH,成功铸造了 240,442,509,453,545,333,947,284,131 枚 TRU 代币。
3. 攻击者立即调用 Purchase 合约的 0xc471b10b 函数(销毁函数),将刚铸造的全部 TRU 代币销毁,从合约储备中兑换出 5,105.069 ETH。
4. 攻击者重复执行上述「铸造 → 销毁」流程。随着 TRU 代币供应量 (S) 增大,后续铸造需支付少量 ETH,但铸造所得代币的价值仍远超支付成本,套利空间依然可观。攻击者持续操作直至耗尽合约的 ETH 储备。
攻击原理剖析
1. 价格计算公式
通过对 Purchase 合约进行反编译分析,我们定位到核心的价格计算函数:
该函数用于计算铸造指定数量代币所需支付的 ETH 数量,其计算公式如下:
Price = (100 A² R + 200 A R S) / ((100 - T) S²)
其中:
A (AmountIn):用户请求铸造的代币数量R (Reserve):合约当前的 ETH 储备量S (Supply):代币当前的总供应量T (THETA):合约参数,固定值为 75
2.漏洞原因
该合约采用 Solidity ^0.6.10 版本编译。在 Solidity 0.8.0 之前的版本中,算术运算符(+、-、*)不包含内置的溢出检查。当运算结果超过 uint256 的最大值(2²⁵⁶ - 1)时,会发生静默溢出(Silent Overflow),结果将回绕至 0 附近的小数值。
在价格计算的关键代码中:

然而乘法运算使用了 SafeMath 库进行溢出检查,但分子的加法运算 v12 + v9 直接使用了原生 + 运算符,未进行溢出保护。这构成了本次攻击的核心漏洞点。
3. 攻击数值分析
以攻击者首次铸造交易为例:

计算过程:

溢出判定:

由于 v12 + v9 的结果超过了 uint256 的最大值,发生溢出回绕。溢出后的分子值变为一个极小的数,经过整数除法后,最终计算出的 Price = 0。
4. 攻击影响
攻击者通过精心构造 AmountIn 参数,使得:
1.乘法运算均通过 SafeMath 检查(不触发 revert)
2.加法运算发生溢出,分子回绕为极小值
3.整数除法结果为 0
最终,攻击者无需支付任何 ETH,即可铸造大量代币。
MistTrack 分析
据链上追踪 & 反洗钱工具 MistTrack 分析,攻击者在本次事件中获利约 8,535 ETH(约合 2,644 万美元)。

被盗的 8,535 ETH 首先转移到三个新地址,最终均转入 Tornado Cash。

从链上看,攻击者地址曾分别在 2025/11/20、2025/12/06、2025/12/27 有过交易记录,主要行为如下:
2025/11/20:在 Avalanche 上通过 Drain 获得资金,并通过 Rhino.fi 跨链到 BNB Chain

2025/12/06:在 BNB Chain 上将收到的资金通过 Rhino.fi 跨链到 Ethereum

2025/12/27:在 Ethereum 上通过 RUN 获得 4.98 ETH,疑似为攻击者之前发起的另一个攻击,共 5 ETH 转入 Tornado Cash

目前 MistTrack 已对相关地址进行标记。
结论
本次攻击的根本原因是 Purchase 合约在计算铸造价格时,分子项的加法运算未使用 SafeMath 库进行溢出保护。由于合约采用 Solidity 0.6.10 版本编译,原生 + 运算符不具备溢出检查。攻击者通过构造特定的铸造数量,使得加法运算结果超过 uint256 最大值并发生溢出回绕,导致价格计算结果为 0,从而实现近乎零成本的代币铸造和套利。
慢雾安全团队建议对于使用 Solidity 0.8.0 以下版本的合约,开发者应确保所有算术运算均使用 SafeMath 库进行保护,避免因整数溢出导致的逻辑漏洞。
慢雾 CISO 23pds 受邀参与 Web3 领袖项目公开课分享1 月 2 日至 1 月 4 日,由全球金融科技学院(GFI) 联合 HashKey Group 、前沿科技研究院(FTI) 推出的 Web3 领袖项目(二期班) 在香港顺利举行。1 月 3 日,慢雾(SlowMist) CISO 23pds 受邀参与公开课分享,与来自传统金融、区块链及前沿科技领域的多位嘉宾和学员,围绕 Web3 发展过程中的安全挑战与风险治理问题展开深入交流。 在本次公开课上,23pds 以《信任的代价:加密货币安全的前世与今生》为主题,结合多年区块链安全研究和真实案件处置经验,系统梳理了 Web3 安全问题的演变过程,并从攻击者与用户两个视角分析了信任为何在加密世界中频繁被滥用,以及行业参与者应该如何建立长期、可持续的安全意识。 Web3 为何成为“黑暗森林”? 分享开篇,23pds 从加密货币的发展历程切入,通过早期“1 万枚 BTC 换披萨”等标志性事件,回顾了加密资产从小众技术实验逐渐演变为高价值金融资产的过程。他指出,随着价格与市场规模的持续放大,加密资产逐渐成为攻击者高度关注的目标。根据慢雾(SlowMist) 区块链被黑事件档案库(https://hacked.slowmist.io/) 的数据显示,截至 2025 年 12 月 30 日,全球累计发生 1990 起区块链黑客攻击事件,造成约 369.27 亿美元的损失。其中,ETH 生态、BSC 生态成为被攻击的重灾区;合约漏洞造成的攻击事件最多,达 339 起,钓鱼攻击虽位列第九,但危害同样显著。这些数据直观地展现了加密资产所面临的巨大安全挑战。 以 Mt.Gox(门头沟)事件为例,23pds 提醒道:“当信任被技术系统承载、却缺乏成熟的安全治理机制时,一次失误往往会引发持续多年的连锁反应。” 在他看来,Web3 的风险并非源于某一次偶发事故,而是由高价值、高流动性、去中心化以及交易不可逆等特性共同造成的结果。在一个身份难以验证、规则极易被伪装的环境中,任何一次判断失误,都可能被迅速捕捉并放大,这正是 Web3 被称为“黑暗森林”的根本原因。 拆解钓鱼攻击链条 围绕 Web3 生态中最为高发的钓鱼攻击,23pds 在分享中对其完整链条进行了系统拆解。他指出,一次成熟的钓鱼攻击,往往并非单点行为,而是一套高度模块化、可复用的“工业流程”,通常包括: 热点项目筛选与长期跟踪身份、渠道与基础设施的高度仿真具备“高收益想象空间”的诱饵设计通过社交媒体、搜索引擎、私信等方式精准投放在授权、签名或安装程序等关键节点完成攻击事后清除痕迹并混淆资金流向 23pds 特别列举了几种经典钓鱼手法: 仿冒官方身份的域名与社交账号钓鱼:攻击者通过注册高度相似的域名、复制官网页面结构,或伪装成项目方官方 X、Telegram、Discord 账号,制造“看起来一模一样”的官方环境。在用户缺乏二次验证的情况下,极易在空投领取、钱包连接或签名操作中误入钓鱼页面。私信钓鱼与“官方联系”话术:攻击者往往以“官方管理员”“项目支持人员”“社区负责人”等身份,通过私信主动联系用户,借助“账户异常”“资格确认”“内测邀请”等理由,引导用户点击链接或进行授权操作。这类攻击充分利用了用户对权威身份的信任,以及对“错过机会”的心理焦虑。假空投、假白名单与高收益诱饵钓鱼:攻击者会围绕市场热点项目,设计看似合理的空投活动或白名单任务,要求用户完成一系列“正常操作”,例如连接钱包、签名验证、授权合约等。整个过程往往不涉及明显异常,但最终却在授权阶段埋下资产被转移的风险。首尾地址相似钓鱼:攻击者通过生成与目标地址首尾字符高度相似的钱包地址,在用户进行转账操作时制造视觉混淆,诱导用户将资产误转至攻击者地址。这类攻击往往不依赖任何技术漏洞,而完全建立在用户对细节疏忽的基础之上。 23pds 强调,这些手法的本质都是“心理战”——攻击者利用用户对收益的渴望与对风险的低估,而非依赖高深技术漏洞。防御的核心,不仅是技术手段,更在于提升认知、养成自我验证的习惯。 Web3 安全防御原则 结合慢雾多年积累的研究与实战经验,23pds 指出,完善的技术工具体系是 Web3 安全的重要基础。在实际工作中,慢雾通过覆盖资金追踪、威胁监测与事件响应的安全能力体系,协助还原攻击路径、识别高风险行为,并在安全事件发生前后提供预警与支持,尽可能降低风险扩散带来的影响。但他同时强调,仅依赖工具并不足以构成真正稳固的安全防线。大量安全事件表明,问题往往并非出在“没有工具”,而是在关键决策时对风险的低估与对信任的默认。 基于此,他讲到了两项相互支撑的基本原则:零信任与持续验证。零信任并非否定一切,而是在未经验证前不轻易建立信任;持续验证则是一种长期习惯——在每一次授权、签名或安装程序前,主动追问“我为什么相信这件事”。在他看来,真正危险的并不是“不懂安全”,而是在面对看似合理的机会时,默认自己“这一次应该没问题”。安全防御的目标并非追求绝对安全,而是持续降低在关键操作中做出错误判断的概率。此外,他建议 Web3 从业者和用户可以熟读《区块链黑暗森林自救手册》,通过系统学习典型攻击案例、认知陷阱与防御策略,进一步强化风险意识和应对能力。 总结 在分享的最后,23pds 总结道:“Web3 的自由、高效与去中心化,必然伴随着更高的个人责任。在一个交易不可逆、责任高度个人化的系统中,信任一旦给错,代价往往需要个人承担。”他指出,Web3 安全不是一次性的知识积累,而是一场长期认知训练。看住自己的判断边界,克制对“好机会”的冲动,才是真正穿行这片“黑暗森林”的能力。 此次分享不仅帮助「Web3 领袖项目(二期班)」学员全面理解了区块链安全的攻防格局,也展现了慢雾(SlowMist) 在区块链安全领域积累的丰富经验与深刻洞察,学员们普遍反馈收获颇丰,对 Web3 安全的风险演进、攻击手法及防御策略有了更清晰和全面的认知。

慢雾 CISO 23pds 受邀参与 Web3 领袖项目公开课分享

1 月 2 日至 1 月 4 日,由全球金融科技学院(GFI) 联合 HashKey Group 、前沿科技研究院(FTI) 推出的 Web3 领袖项目(二期班) 在香港顺利举行。1 月 3 日,慢雾(SlowMist) CISO 23pds 受邀参与公开课分享,与来自传统金融、区块链及前沿科技领域的多位嘉宾和学员,围绕 Web3 发展过程中的安全挑战与风险治理问题展开深入交流。

在本次公开课上,23pds 以《信任的代价:加密货币安全的前世与今生》为主题,结合多年区块链安全研究和真实案件处置经验,系统梳理了 Web3 安全问题的演变过程,并从攻击者与用户两个视角分析了信任为何在加密世界中频繁被滥用,以及行业参与者应该如何建立长期、可持续的安全意识。
Web3 为何成为“黑暗森林”?
分享开篇,23pds 从加密货币的发展历程切入,通过早期“1 万枚 BTC 换披萨”等标志性事件,回顾了加密资产从小众技术实验逐渐演变为高价值金融资产的过程。他指出,随着价格与市场规模的持续放大,加密资产逐渐成为攻击者高度关注的目标。根据慢雾(SlowMist) 区块链被黑事件档案库(https://hacked.slowmist.io/) 的数据显示,截至 2025 年 12 月 30 日,全球累计发生 1990 起区块链黑客攻击事件,造成约 369.27 亿美元的损失。其中,ETH 生态、BSC 生态成为被攻击的重灾区;合约漏洞造成的攻击事件最多,达 339 起,钓鱼攻击虽位列第九,但危害同样显著。这些数据直观地展现了加密资产所面临的巨大安全挑战。

以 Mt.Gox(门头沟)事件为例,23pds 提醒道:“当信任被技术系统承载、却缺乏成熟的安全治理机制时,一次失误往往会引发持续多年的连锁反应。”

在他看来,Web3 的风险并非源于某一次偶发事故,而是由高价值、高流动性、去中心化以及交易不可逆等特性共同造成的结果。在一个身份难以验证、规则极易被伪装的环境中,任何一次判断失误,都可能被迅速捕捉并放大,这正是 Web3 被称为“黑暗森林”的根本原因。
拆解钓鱼攻击链条
围绕 Web3 生态中最为高发的钓鱼攻击,23pds 在分享中对其完整链条进行了系统拆解。他指出,一次成熟的钓鱼攻击,往往并非单点行为,而是一套高度模块化、可复用的“工业流程”,通常包括:
热点项目筛选与长期跟踪身份、渠道与基础设施的高度仿真具备“高收益想象空间”的诱饵设计通过社交媒体、搜索引擎、私信等方式精准投放在授权、签名或安装程序等关键节点完成攻击事后清除痕迹并混淆资金流向

23pds 特别列举了几种经典钓鱼手法:
仿冒官方身份的域名与社交账号钓鱼:攻击者通过注册高度相似的域名、复制官网页面结构,或伪装成项目方官方 X、Telegram、Discord 账号,制造“看起来一模一样”的官方环境。在用户缺乏二次验证的情况下,极易在空投领取、钱包连接或签名操作中误入钓鱼页面。私信钓鱼与“官方联系”话术:攻击者往往以“官方管理员”“项目支持人员”“社区负责人”等身份,通过私信主动联系用户,借助“账户异常”“资格确认”“内测邀请”等理由,引导用户点击链接或进行授权操作。这类攻击充分利用了用户对权威身份的信任,以及对“错过机会”的心理焦虑。假空投、假白名单与高收益诱饵钓鱼:攻击者会围绕市场热点项目,设计看似合理的空投活动或白名单任务,要求用户完成一系列“正常操作”,例如连接钱包、签名验证、授权合约等。整个过程往往不涉及明显异常,但最终却在授权阶段埋下资产被转移的风险。首尾地址相似钓鱼:攻击者通过生成与目标地址首尾字符高度相似的钱包地址,在用户进行转账操作时制造视觉混淆,诱导用户将资产误转至攻击者地址。这类攻击往往不依赖任何技术漏洞,而完全建立在用户对细节疏忽的基础之上。
23pds 强调,这些手法的本质都是“心理战”——攻击者利用用户对收益的渴望与对风险的低估,而非依赖高深技术漏洞。防御的核心,不仅是技术手段,更在于提升认知、养成自我验证的习惯。
Web3 安全防御原则
结合慢雾多年积累的研究与实战经验,23pds 指出,完善的技术工具体系是 Web3 安全的重要基础。在实际工作中,慢雾通过覆盖资金追踪、威胁监测与事件响应的安全能力体系,协助还原攻击路径、识别高风险行为,并在安全事件发生前后提供预警与支持,尽可能降低风险扩散带来的影响。但他同时强调,仅依赖工具并不足以构成真正稳固的安全防线。大量安全事件表明,问题往往并非出在“没有工具”,而是在关键决策时对风险的低估与对信任的默认。
基于此,他讲到了两项相互支撑的基本原则:零信任与持续验证。零信任并非否定一切,而是在未经验证前不轻易建立信任;持续验证则是一种长期习惯——在每一次授权、签名或安装程序前,主动追问“我为什么相信这件事”。在他看来,真正危险的并不是“不懂安全”,而是在面对看似合理的机会时,默认自己“这一次应该没问题”。安全防御的目标并非追求绝对安全,而是持续降低在关键操作中做出错误判断的概率。此外,他建议 Web3 从业者和用户可以熟读《区块链黑暗森林自救手册》,通过系统学习典型攻击案例、认知陷阱与防御策略,进一步强化风险意识和应对能力。
总结
在分享的最后,23pds 总结道:“Web3 的自由、高效与去中心化,必然伴随着更高的个人责任。在一个交易不可逆、责任高度个人化的系统中,信任一旦给错,代价往往需要个人承担。”他指出,Web3 安全不是一次性的知识积累,而是一场长期认知训练。看住自己的判断边界,克制对“好机会”的冲动,才是真正穿行这片“黑暗森林”的能力。
此次分享不仅帮助「Web3 领袖项目(二期班)」学员全面理解了区块链安全的攻防格局,也展现了慢雾(SlowMist) 在区块链安全领域积累的丰富经验与深刻洞察,学员们普遍反馈收获颇丰,对 Web3 安全的风险演进、攻击手法及防御策略有了更清晰和全面的认知。
慢雾出品 | 2025 区块链安全与反洗钱年度报告由于篇幅限制,本文仅罗列分析报告中的关键内容,完整内容可通过文末 PDF 下载。 一、概述 2025 年,区块链行业持续高速演化,宏观金融环境、监管不确定性与攻击强度叠加,使全年安全态势显著复杂。具体来看,黑客组织和地下犯罪高度专业化,朝鲜相关黑客频繁活跃,信息窃取木马、私钥劫持与社工钓鱼成为主要攻击手段;此外,DeFi 权限管理与 Meme 发行等多次引发大额损失,RaaS/MaaS 服务化降低了犯罪门槛,使无技术背景攻击者也能快速实施攻击。与此同时,地下洗钱体系不断成熟,东南亚诈骗集群、隐私工具与混币设施构成多层级资金通道。在监管方面,各国加速推进 AML/CFT 框架落地,多起跨境执法行动提升了链上追踪与资产冻结效率,监管逐步由单点打击转向系统化围堵,隐私协议法律边界也在重新定义,更加区分技术属性与犯罪用途。 在此背景下,本报告围绕 2025 年典型区块链安全事件与攻击手法、APT 组织活动趋势、资金洗钱模型演变以及全球监管执法进展进行了深入解析。我们希望本报告能够为行业从业者、安全研究人员、风控与合规负责人提供及时、结构化、具有洞察力的安全合规参考,提升对风险的识别、响应与预判能力。 二、区块链安全态势 根据慢雾区块链被黑事件档案库(SlowMist Hacked) 不完全统计,全年共发生安全事件 200 起,造成损失约 29.35 亿美元。相比 2024 年(410 起,损失约 20.13 亿美元),尽管事件数量明显下降,但损失金额却同比上升约 46%。 (注:本报告数据基于事件发生时的代币价格,由于币价波动、部分未公开事件以及普通用户的损失未纳入统计等因素,实际损失应高于统计结果。) 安全事件概览 从生态分布来看,Ethereum 仍然是受攻击最为频繁、损失最为严重的生态,全年损失约 2.54 亿美元,占比显著领先;BSC 紧随其后,相关损失约为 2193 万美元;Solana 则位列第三,全年损失约 1745 万美元。 按项目赛道划分,DeFi 项目是最常遭攻击的领域:2025 年共发生 126 起安全事件,占全年总数约 63%,造成损失约 6.49 亿美元,相较 2024 年(339 起,损失 10.29 亿美元)下降约 37%。交易平台事件仅 12 起,却造成高达 18.09 亿美元损失,其中 Bybit 单次即损失约 14.6 亿美元,是全年最严重事件。 从事件的攻击原因来看,合约漏洞是主要诱因,共 61 起;X 账号被黑紧随其后,共 48 起。 典型攻击事件 此节选取了 2025 年损失 Top10 的安全攻击事件。详情见文末的 PDF 文件内容。 欺诈手法 以下是 2025 年值得重点关注的几种典型或新型的欺诈手法。 1. 钓鱼攻击 2025 年,钓鱼仍是最活跃的风险点之一,其攻击方式已从传统的仿站与假授权页面,演化为结合系统命令、钱包权限、协议特性甚至设备控制的复合手法。与以往直接索要助记词不同,如今的攻击更倾向通过“引导式操作”诱导用户在不知情的情况下亲自完成资产转移,手法更隐蔽、欺骗性更强,也显著扩大了受害范围。本小节重点介绍了四类典型的钓鱼模式,包括 ClickFix 钓鱼攻击、Solana 钱包 Owner 权限篡改、EIP‑7702 授权滥用,以及 Telegram“假 Safeguard”骗局。 2. 社会工程攻击 2025 年,社会工程攻击在区块链安全事件中呈现出明显的上升趋势,逐渐成为连接钓鱼、恶意软件和资产盗取的关键入口。此类攻击以“操纵信任”为核心,通过身份伪装、情绪施压和信息不对称,引导受害者主动配合完成高风险操作。攻击者往往并不急于直接盗取资产,而是通过多轮互动逐步建立可信形象,最终诱导受害者下载恶意程序、泄露私钥或将资产转移至攻击者控制的地址。本小节选取了三类典型社会工程攻击手法进行分析,包括招聘面试诈骗、假冒“安全专家”指导,以及伪造硬件钱包等。 3. 供应链与开源生态投毒 2025 年软件供应链攻击在区块链安全领域中持续活跃,攻击者不再局限于直接入侵知名库或核心基础设施,而是转向开源项目、开发者工具与依赖分发链条,通过投毒代码的方式,实现对大量下游用户的间接攻击。这类攻击往往并不针对单一受害者,而是通过“被信任的软件组件”进行扩散,一旦触发,影响范围广、溯源困难,且极易与社会工程手段形成叠加。本小节针对 2025 年频发的几类投毒事件进行详细分析。 4. 恶意浏览器扩展与扩展生态风险 浏览器扩展在 Web3 使用场景中几乎无处不在。无论是钱包插件、代理工具、安全辅助扩展,还是开发者日常使用的效率工具,它们普遍具备高权限、后台运行、自动更新等特性。一旦被篡改或恶意利用,往往能在用户毫不知情的情况下窃取数据,甚至直接造成资产损失。本小节总结了浏览器扩展在 Web3 场景中的安全风险,并结合典型案例进行了分析。 5. 利用 AI 技术的攻击 随着生成式 AI 在过去两年加速普及,攻击者也开始将其纳入诈骗与攻击链条。与传统工具相比,AI 在文本、语音合成、图像与视频生成上的能力显著降低了诈骗成本,攻击不再依赖粗糙的话术或明显异常的行为,而是通过高度拟真的内容、连贯的交互和精确的对象选择,使受害者在心理层面更难察觉风险。本小节总结了生成式 AI 在加密资产及企业安全场景中被滥用的风险。 6. 资金盘诈骗 2025 年,资金盘依旧是数字资产诈骗中最具扩散性的模式之一,与传统庞氏不同,新一代项目更倾向于披上“区块链金融”“大数据技术”“国际交易平台”的外衣,以层级返佣的方式快速扩张。本小节总结了 2025 年典型数字资产资金盘案例——鑫慷嘉 DGCX 的运作模式与风险特征。 三、反洗钱态势 本节主要涉及反洗钱及监管动态、资金冻结 / 归还数据、网络犯罪组织与地下网络生态三部分内容。 反洗钱及监管动态 1. 执法与制裁行动 2025 年,全球加密资产领域的执法与制裁行动显著升级。各国监管与执法机构不再仅限于发布政策或合规指引,而是通过冻结资产、制裁实体、刑事起诉以及跨国联合行动,直接干预加密洗钱、诈骗、制裁规避及非法融资等关键环节。从交易所到基础设施服务商乃至个人链上地址,执法覆盖范围不断下沉并持续扩大。本小节重点从四个方面展示 2025 年的执法动态:打击恶意软件、暗网与网络犯罪基础设施;加密交易所 Garantex 的重点监管与刑事追责;针对诈骗、庞氏与“杀猪盘”犯罪网络的联合行动;以及加密服务合规失范与非法经营的处罚案例。 2. 监管政策 2025 年,全球加密资产监管进入结构化与体系化推进阶段。各国政策逐步从过去的“试探式监管”过渡到“明确规则落地与统一框架建设”。合规被普遍视为加密市场发展的前提,税务透明、AML/KYC、托管安全、信息披露成为政策高频关注点。本小节整理了2025 年各国监管政策动态,具体条目可详见文末附录 PDF。 资金冻结 / 归还数据 在慢雾 InMist Lab 威胁情报合作网络的大力支持下,2025 年慢雾(SlowMist) 协助客户、合作伙伴及公开被黑事件冻结/追回资金约 1,929 万美元。2025 年,Tether 共冻结 576 个 ETH 地址上的 USDT-ERC20 资产,Circle 共冻结 214 个 ETH 地址上的 USDC-ERC20 资产。2025 年遭受攻击后仍能收回或冻结损失资金的事件共有 18 起。在这 18 起事件中,被盗资金总计约 19.57 亿美元,其中将近 3.87 亿美元被返还/冻结,占 2025 年总损失的 13.2 %。 网络犯罪组织与地下网络生态 1. 朝鲜黑客 根据 MSMT 于 2025 年发布的研究报告,自 2024 年 1 月至 2025 年 9 月期间,朝鲜相关黑客组织通过攻击全球范围内的加密货币交易所、钱包服务商、多签基础设施及 Web3 生态相关企业,累计窃取至少 28.37 亿美元的加密资产。其中,仅 2025 年前九个月的盗取金额即达到约 16.45 亿美元,刷新历史纪录。 本小节总结了朝鲜黑客在 2025 年的活动特征、主要组织结构与角色分工、核心攻击手法与重点目标,以及资金洗钱与链上流转的“工业化流程”,并进一步揭示其借助 IT 外包与“合法就业洗钱”形成的隐蔽资金输入模式。 2. 钓鱼 Drainer 本小节由我们的合作伙伴 —— Web3 反诈平台 Scam Sniffer 撰写,在此表示感谢。本小节仅分析 EVM 生态中 Wallet Drainer 钓鱼攻击的最新趋势,帮助从业者和用户更好地保护资产。 总损失:$8385 万,受害者 106,106 人—— 较 2024 年分别下降 83% 和 68%。 最大单笔被盗:$650 万,通过 Permit 签名(9 月)。主要签名类型:Permit 仍是主导;EIP-7702 恶意签名在 Pectra 升级后出现,8 月有 2 起大额案例。 3. Huione Group 随着东南亚地区的网络诈骗与跨境洗钱活动持续扩大,以 Huione Group 及旗下 HuionePay、Huione Guarantee 为代表的平台被多家情报机构已成为全球监管和执法机构重点关注对象。本小节概述了 Huione 生态的服务扩张路径、链上资金的活动现状,并展示其面临的跨国联合执法与监管压力。 4. 勒索 / 恶意软件 勒索软件与信息窃取类恶意软件在 2025 年仍是加密资产被盗及黑灰产获利的重要技术手段,其中 MaaS / RaaS(Malware/Ransomware-as-a-Service) 商业化模式进一步降低攻击门槛,许多非技术背景的犯罪者也能依赖成套服务实施攻击,形成持续扩张的网络犯罪供应链。过去一年,多国执法部门已针对相关核心团伙开展多起关键打击行动,本小节以 LockBit 和 LummaC2 两个代表性案例展开具体分析。 5. 隐私 / 混币工具 在加密资产洗钱生态中,隐私协议与混币工具长期扮演关键角色,既服务于注重隐私保护的合法用户,也被黑客组织、勒索软件团伙及地下洗钱网络视为绕过监管的重要通道。本小节基于对 2025 年典型监管与执法案例的分析,发现隐私技术与违法滥用之间的边界正被重新划定,监管思路也正从“一刀切式全面打击”逐步转向“按用途与责任分层治理”。 四、总结 回顾 2025 年,区块链安全与反洗钱生态呈现三大特征:攻击手法更专业、犯罪链路更隐蔽、监管执行更强势。安全事件数量趋稳但结构性变化明显,权限管理、社工攻击与私钥泄露风险持续抬头;黑产工具“服务化”使即插即用式攻击成为现实,风险从技术侧外溢至用户与供应链。洗钱网络围绕东南亚诈骗、朝鲜攻击资金和隐私混币工具持续运转,而监管进入跨国联动压制阶段,多国同步推动 AML/FATF 落地,通过查封地址、冻结资产与追责混币运营方收紧空间。安全与合规已从“附加能力”转变为“商业生存门槛”,行业竞争焦点不再是技术叙事,而是谁能构建持续运转的安全内控与合规体系。 在这一趋势下,慢雾(SlowMist) 正持续推进 AI 驱动的安全与合规能力升级。我们始终认为安全绝不能只理解为一次性的“项目审计”或“紧急追踪”,而应是覆盖事前、事中、事后的威胁发现到威胁防御一体化闭环体系:事前包括安全审计、安全培训等;事中包括链上监控、黑客行为实时发现等;事后包括追踪溯源、应急响应等。在实践中,慢雾将这一闭环能力通过产品和服务具体化,包括:MistEye(基于威胁情报模型的 Web3 威胁预警与动态监控系统)、[MistTrack](https://www.binance.com/zh-CN/square/post/32683189193273)(链上分析&反洗钱追踪平台,包含 AML/KYT 合规风控能力)、InMist Lab(全球威胁情报合作网络)及攻防、审计服务体系。这些能力在 AI 驱动下,实现威胁识别、追踪溯源及合规支持的自动化、智能化和实时响应,为行业提供具备长期生命力的安全底层能力。 五、免责声明 本报告内容基于我们对区块链行业的理解、慢雾区块链被黑档案库 SlowMist Hacked 以及反洗钱追踪系统 MistTrack 的数据支持。但由于区块链的“匿名”特性,我们在此并不能保证所有数据的绝对准确性,也不能对其中的错误、疏漏或使用本报告引起的损失承担责任。同时,本报告不构成任何投资建议或其他分析的根据。本报告中若有疏漏和不足之处,欢迎大家批评指正。 中文:https://www.slowmist.com/report/2025-Blockchain-Security-and-AML-Annual-Report(CN).pdf 英文:https://www.slowmist.com/report/2025-Blockchain-Security-and-AML-Annual-Report(EN).pdf

慢雾出品 | 2025 区块链安全与反洗钱年度报告

由于篇幅限制,本文仅罗列分析报告中的关键内容,完整内容可通过文末 PDF 下载。

一、概述
2025 年,区块链行业持续高速演化,宏观金融环境、监管不确定性与攻击强度叠加,使全年安全态势显著复杂。具体来看,黑客组织和地下犯罪高度专业化,朝鲜相关黑客频繁活跃,信息窃取木马、私钥劫持与社工钓鱼成为主要攻击手段;此外,DeFi 权限管理与 Meme 发行等多次引发大额损失,RaaS/MaaS 服务化降低了犯罪门槛,使无技术背景攻击者也能快速实施攻击。与此同时,地下洗钱体系不断成熟,东南亚诈骗集群、隐私工具与混币设施构成多层级资金通道。在监管方面,各国加速推进 AML/CFT 框架落地,多起跨境执法行动提升了链上追踪与资产冻结效率,监管逐步由单点打击转向系统化围堵,隐私协议法律边界也在重新定义,更加区分技术属性与犯罪用途。
在此背景下,本报告围绕 2025 年典型区块链安全事件与攻击手法、APT 组织活动趋势、资金洗钱模型演变以及全球监管执法进展进行了深入解析。我们希望本报告能够为行业从业者、安全研究人员、风控与合规负责人提供及时、结构化、具有洞察力的安全合规参考,提升对风险的识别、响应与预判能力。
二、区块链安全态势
根据慢雾区块链被黑事件档案库(SlowMist Hacked) 不完全统计,全年共发生安全事件 200 起,造成损失约 29.35 亿美元。相比 2024 年(410 起,损失约 20.13 亿美元),尽管事件数量明显下降,但损失金额却同比上升约 46%。
(注:本报告数据基于事件发生时的代币价格,由于币价波动、部分未公开事件以及普通用户的损失未纳入统计等因素,实际损失应高于统计结果。)

安全事件概览
从生态分布来看,Ethereum 仍然是受攻击最为频繁、损失最为严重的生态,全年损失约 2.54 亿美元,占比显著领先;BSC 紧随其后,相关损失约为 2193 万美元;Solana 则位列第三,全年损失约 1745 万美元。

按项目赛道划分,DeFi 项目是最常遭攻击的领域:2025 年共发生 126 起安全事件,占全年总数约 63%,造成损失约 6.49 亿美元,相较 2024 年(339 起,损失 10.29 亿美元)下降约 37%。交易平台事件仅 12 起,却造成高达 18.09 亿美元损失,其中 Bybit 单次即损失约 14.6 亿美元,是全年最严重事件。

从事件的攻击原因来看,合约漏洞是主要诱因,共 61 起;X 账号被黑紧随其后,共 48 起。

典型攻击事件
此节选取了 2025 年损失 Top10 的安全攻击事件。详情见文末的 PDF 文件内容。

欺诈手法
以下是 2025 年值得重点关注的几种典型或新型的欺诈手法。
1. 钓鱼攻击
2025 年,钓鱼仍是最活跃的风险点之一,其攻击方式已从传统的仿站与假授权页面,演化为结合系统命令、钱包权限、协议特性甚至设备控制的复合手法。与以往直接索要助记词不同,如今的攻击更倾向通过“引导式操作”诱导用户在不知情的情况下亲自完成资产转移,手法更隐蔽、欺骗性更强,也显著扩大了受害范围。本小节重点介绍了四类典型的钓鱼模式,包括 ClickFix 钓鱼攻击、Solana 钱包 Owner 权限篡改、EIP‑7702 授权滥用,以及 Telegram“假 Safeguard”骗局。
2. 社会工程攻击
2025 年,社会工程攻击在区块链安全事件中呈现出明显的上升趋势,逐渐成为连接钓鱼、恶意软件和资产盗取的关键入口。此类攻击以“操纵信任”为核心,通过身份伪装、情绪施压和信息不对称,引导受害者主动配合完成高风险操作。攻击者往往并不急于直接盗取资产,而是通过多轮互动逐步建立可信形象,最终诱导受害者下载恶意程序、泄露私钥或将资产转移至攻击者控制的地址。本小节选取了三类典型社会工程攻击手法进行分析,包括招聘面试诈骗、假冒“安全专家”指导,以及伪造硬件钱包等。
3. 供应链与开源生态投毒
2025 年软件供应链攻击在区块链安全领域中持续活跃,攻击者不再局限于直接入侵知名库或核心基础设施,而是转向开源项目、开发者工具与依赖分发链条,通过投毒代码的方式,实现对大量下游用户的间接攻击。这类攻击往往并不针对单一受害者,而是通过“被信任的软件组件”进行扩散,一旦触发,影响范围广、溯源困难,且极易与社会工程手段形成叠加。本小节针对 2025 年频发的几类投毒事件进行详细分析。
4. 恶意浏览器扩展与扩展生态风险
浏览器扩展在 Web3 使用场景中几乎无处不在。无论是钱包插件、代理工具、安全辅助扩展,还是开发者日常使用的效率工具,它们普遍具备高权限、后台运行、自动更新等特性。一旦被篡改或恶意利用,往往能在用户毫不知情的情况下窃取数据,甚至直接造成资产损失。本小节总结了浏览器扩展在 Web3 场景中的安全风险,并结合典型案例进行了分析。
5. 利用 AI 技术的攻击
随着生成式 AI 在过去两年加速普及,攻击者也开始将其纳入诈骗与攻击链条。与传统工具相比,AI 在文本、语音合成、图像与视频生成上的能力显著降低了诈骗成本,攻击不再依赖粗糙的话术或明显异常的行为,而是通过高度拟真的内容、连贯的交互和精确的对象选择,使受害者在心理层面更难察觉风险。本小节总结了生成式 AI 在加密资产及企业安全场景中被滥用的风险。
6. 资金盘诈骗
2025 年,资金盘依旧是数字资产诈骗中最具扩散性的模式之一,与传统庞氏不同,新一代项目更倾向于披上“区块链金融”“大数据技术”“国际交易平台”的外衣,以层级返佣的方式快速扩张。本小节总结了 2025 年典型数字资产资金盘案例——鑫慷嘉 DGCX 的运作模式与风险特征。
三、反洗钱态势
本节主要涉及反洗钱及监管动态、资金冻结 / 归还数据、网络犯罪组织与地下网络生态三部分内容。
反洗钱及监管动态
1. 执法与制裁行动
2025 年,全球加密资产领域的执法与制裁行动显著升级。各国监管与执法机构不再仅限于发布政策或合规指引,而是通过冻结资产、制裁实体、刑事起诉以及跨国联合行动,直接干预加密洗钱、诈骗、制裁规避及非法融资等关键环节。从交易所到基础设施服务商乃至个人链上地址,执法覆盖范围不断下沉并持续扩大。本小节重点从四个方面展示 2025 年的执法动态:打击恶意软件、暗网与网络犯罪基础设施;加密交易所 Garantex 的重点监管与刑事追责;针对诈骗、庞氏与“杀猪盘”犯罪网络的联合行动;以及加密服务合规失范与非法经营的处罚案例。
2. 监管政策
2025 年,全球加密资产监管进入结构化与体系化推进阶段。各国政策逐步从过去的“试探式监管”过渡到“明确规则落地与统一框架建设”。合规被普遍视为加密市场发展的前提,税务透明、AML/KYC、托管安全、信息披露成为政策高频关注点。本小节整理了2025 年各国监管政策动态,具体条目可详见文末附录 PDF。
资金冻结 / 归还数据
在慢雾 InMist Lab 威胁情报合作网络的大力支持下,2025 年慢雾(SlowMist) 协助客户、合作伙伴及公开被黑事件冻结/追回资金约 1,929 万美元。2025 年,Tether 共冻结 576 个 ETH 地址上的 USDT-ERC20 资产,Circle 共冻结 214 个 ETH 地址上的 USDC-ERC20 资产。2025 年遭受攻击后仍能收回或冻结损失资金的事件共有 18 起。在这 18 起事件中,被盗资金总计约 19.57 亿美元,其中将近 3.87 亿美元被返还/冻结,占 2025 年总损失的 13.2 %。
网络犯罪组织与地下网络生态
1. 朝鲜黑客
根据 MSMT 于 2025 年发布的研究报告,自 2024 年 1 月至 2025 年 9 月期间,朝鲜相关黑客组织通过攻击全球范围内的加密货币交易所、钱包服务商、多签基础设施及 Web3 生态相关企业,累计窃取至少 28.37 亿美元的加密资产。其中,仅 2025 年前九个月的盗取金额即达到约 16.45 亿美元,刷新历史纪录。

本小节总结了朝鲜黑客在 2025 年的活动特征、主要组织结构与角色分工、核心攻击手法与重点目标,以及资金洗钱与链上流转的“工业化流程”,并进一步揭示其借助 IT 外包与“合法就业洗钱”形成的隐蔽资金输入模式。
2. 钓鱼 Drainer
本小节由我们的合作伙伴 —— Web3 反诈平台 Scam Sniffer 撰写,在此表示感谢。本小节仅分析 EVM 生态中 Wallet Drainer 钓鱼攻击的最新趋势,帮助从业者和用户更好地保护资产。

总损失:$8385 万,受害者 106,106 人—— 较 2024 年分别下降 83% 和 68%。
最大单笔被盗:$650 万,通过 Permit 签名(9 月)。主要签名类型:Permit 仍是主导;EIP-7702 恶意签名在 Pectra 升级后出现,8 月有 2 起大额案例。
3. Huione Group
随着东南亚地区的网络诈骗与跨境洗钱活动持续扩大,以 Huione Group 及旗下 HuionePay、Huione Guarantee 为代表的平台被多家情报机构已成为全球监管和执法机构重点关注对象。本小节概述了 Huione 生态的服务扩张路径、链上资金的活动现状,并展示其面临的跨国联合执法与监管压力。

4. 勒索 / 恶意软件
勒索软件与信息窃取类恶意软件在 2025 年仍是加密资产被盗及黑灰产获利的重要技术手段,其中 MaaS / RaaS(Malware/Ransomware-as-a-Service) 商业化模式进一步降低攻击门槛,许多非技术背景的犯罪者也能依赖成套服务实施攻击,形成持续扩张的网络犯罪供应链。过去一年,多国执法部门已针对相关核心团伙开展多起关键打击行动,本小节以 LockBit 和 LummaC2 两个代表性案例展开具体分析。

5. 隐私 / 混币工具
在加密资产洗钱生态中,隐私协议与混币工具长期扮演关键角色,既服务于注重隐私保护的合法用户,也被黑客组织、勒索软件团伙及地下洗钱网络视为绕过监管的重要通道。本小节基于对 2025 年典型监管与执法案例的分析,发现隐私技术与违法滥用之间的边界正被重新划定,监管思路也正从“一刀切式全面打击”逐步转向“按用途与责任分层治理”。

四、总结
回顾 2025 年,区块链安全与反洗钱生态呈现三大特征:攻击手法更专业、犯罪链路更隐蔽、监管执行更强势。安全事件数量趋稳但结构性变化明显,权限管理、社工攻击与私钥泄露风险持续抬头;黑产工具“服务化”使即插即用式攻击成为现实,风险从技术侧外溢至用户与供应链。洗钱网络围绕东南亚诈骗、朝鲜攻击资金和隐私混币工具持续运转,而监管进入跨国联动压制阶段,多国同步推动 AML/FATF 落地,通过查封地址、冻结资产与追责混币运营方收紧空间。安全与合规已从“附加能力”转变为“商业生存门槛”,行业竞争焦点不再是技术叙事,而是谁能构建持续运转的安全内控与合规体系。
在这一趋势下,慢雾(SlowMist) 正持续推进 AI 驱动的安全与合规能力升级。我们始终认为安全绝不能只理解为一次性的“项目审计”或“紧急追踪”,而应是覆盖事前、事中、事后的威胁发现到威胁防御一体化闭环体系:事前包括安全审计、安全培训等;事中包括链上监控、黑客行为实时发现等;事后包括追踪溯源、应急响应等。在实践中,慢雾将这一闭环能力通过产品和服务具体化,包括:MistEye(基于威胁情报模型的 Web3 威胁预警与动态监控系统)、MistTrack(链上分析&反洗钱追踪平台,包含 AML/KYT 合规风控能力)、InMist Lab(全球威胁情报合作网络)及攻防、审计服务体系。这些能力在 AI 驱动下,实现威胁识别、追踪溯源及合规支持的自动化、智能化和实时响应,为行业提供具备长期生命力的安全底层能力。
五、免责声明
本报告内容基于我们对区块链行业的理解、慢雾区块链被黑档案库 SlowMist Hacked 以及反洗钱追踪系统 MistTrack 的数据支持。但由于区块链的“匿名”特性,我们在此并不能保证所有数据的绝对准确性,也不能对其中的错误、疏漏或使用本报告引起的损失承担责任。同时,本报告不构成任何投资建议或其他分析的根据。本报告中若有疏漏和不足之处,欢迎大家批评指正。

中文:https://www.slowmist.com/report/2025-Blockchain-Security-and-AML-Annual-Report(CN).pdf
英文:https://www.slowmist.com/report/2025-Blockchain-Security-and-AML-Annual-Report(EN).pdf
慢雾 Q4 追踪实录:协助被盗客户冻结/追回百万美元资金自慢雾(SlowMist) 上线 MistTrack 被盗表单提交功能以来,我们每天都会收到大量受害者的求助信息,希望我们提供资金追踪和挽救的帮助,其中不乏丢失上千万美金的大额受害者。基于此,本系列通过对每个季度收到的被盗求助进行统计和分析,旨在以脱敏后的真实案例剖析常见或罕见的作恶手法,帮助行业参与者更好地理解和防范安全风险,保护自己的资产。 据统计,MistTrack Team 于 2025 年 Q4 季度共收到 300 份被盗表单,包括 210 份国内表单和 90 份海外表单,我们为这些表单做了免费的评估社区服务。(Ps. 此数据仅针对来自表单提交的 Case,不包括通过邮箱或其他渠道联系的 Case) MistTrack Team 在 Q4 季度协助 9 个被盗客户成功冻结/追回约 100 万美元的资金。 被盗原因 2025 年 Q4 的作恶手法中,钓鱼攻击成为被盗原因 Top1。接下来我们就挑出几类典型案例,带大家更好地避坑、防盗、保住资产。 1、钓鱼攻击 在 Q4,钓鱼攻击依旧频发,且相较于其他季度呈现出明显分化:一方面,传统的“迷惑性域名”仍在持续;另一方面,出现了更隐蔽、能够改写用户浏览路径的新型欺骗方式,使攻击整体呈现更强的伪装性与流程欺骗性。 造成损失最多的仍是“相似字符投毒地址”——简单但致命。例如,某用户就是因为被首尾字符几乎一致的地址迷惑,损失近 5000 万 USDT。链上可以看到,他先给正确地址发了一笔小额测试,然后在几分钟后,将 5000 万美元直接转进了一个看起来“差不多”的恶意地址(首 3 字符尾 4 字符一样): 用户地址:0xcB80784ef74C98A89b6Ab8D96ebE890859600819 投毒地址:0xBaFF2F13638C04B10F8119760B2D2aE86b08f8b5 用户预期的目标地址:0xbaf4b1aF7E3B560d937DA0458514552B6495F8b5 尽管慢雾早在 2022 年就披露过这种钓鱼方式,但依然不断有人中招,其流程通常是这样展开的: 碰撞出钓鱼地址 黑客会提前批量生成大量钓鱼地址,分布式部署批量程序后,根据链上用户动态,向目标转账地址发起相同首尾号地址钓鱼攻击。在本次事件中,黑客使用了去除 0x 后的首 3 位及尾 4 位和受害者目标转账地址一致的地址。 尾随交易混淆视线 用户在 15:06:47 发起转账后,黑客迅速使用碰撞出来的钓鱼地址尾随交易(分别是 15:12:35 和 15:20:35 两笔交易,一笔是假 Token,一笔是真 Token 0.005 USDT),让钓鱼地址出现在用户历史记录中。 复制粘贴 → 愿者上钩 由于用户习惯从钱包历史记录里复制最近转账信息,看到了尾随的钓鱼交易后没有仔细检查自己复制的地址是否正确,结果将 5000 万 USDT 误转给了钓鱼地址。 历史上类似案例也不少,比如曾经有受害者误转 1155 枚 WBTC,所幸最终全额退款,但并非每次都如此幸运。针对此类骗局,防范办法其实很简单:常用地址请存入地址簿、开启小额过滤、转账前至少核对首 6 + 尾 8 位,最稳妥的办法仍是逐位确认。 更经典的钓鱼方式是伪造域名 —— 老梗常新,只要传播够快,永远有人会点。例如今年 BNB Chain 的英文官推曾被短暂攻破,攻击者借官方身份发布钓鱼链接,只将 binance 中的字母 i 偷换成视觉极为接近的 l,变成 bnbchalns[.]com。一旦用户在社交媒体的信息流中快速浏览、视觉疲劳一下,很容易进入一个外观与官方网站几乎一致的伪造页面。 近期出现的钓鱼方式则更为隐蔽:即便用户手动输入了正确的官网域名,也可能被导向钓鱼网站。部分受害者反映,他们明明输入的是正确地址,但浏览器却自动补全为攻击者构造的同形字符域名,例如 plasma.to 被补全为 plasmą.to,balancer.fi 被替换为 bǎlancer.fi。这种攻击之所以能成功,并非用户操作失误,而是攻击者提前通过广告投放、社交平台引导、假冒公告等方式污染了浏览器历史记录。一旦钓鱼域名被写入自动补全逻辑,下次用户输入时,浏览器便会自动跳转到伪造网站,其界面几乎与官网无差异,用户难以察觉。换句话说,用户以为自己主动访问了官网,实际上已经落入了攻击者精心设置的陷阱。 当然,无论是传统钓鱼还是自动补全劫持,其最终目标都一致:诱导用户在毫无防备的情况下签名授权。为此,他们通常会将链接包装成空投、奖励、任务、测试资格,或伪装成项目官方公告,让用户误以为只是执行普通交互,然而签名背后可能藏着高危操作,比如 Owner 改写。我们近期接到的一起求助案例便是典型代表:受害者钱包 Owner 权限被悄悄转移至攻击者地址(GKJBELft…JwbzQ),300 万美元被盗,另有 200 万美元差点无法救回。事后分析发现,他曾访问过伪装工具站点,并完成了一次看似正常、没有资产变动的交易签名。由于不了解 Solana 可修改账户所有权的机制,也没有安全工具预警,于是核心授权悄悄完成,风险直到资金不可操作时才暴露。 总之,面对不断演进的钓鱼手法,“仔细看链接”“谨慎点击”已不再足够。用户需要培养良好的安全习惯,例如:尽量通过书签访问高频使用的网站,减少依赖浏览器自动补全;在执行任何交易签名前,查看是否涉及权限变更,并优先使用具有风险提示能力的钱包或安全工具;对社交平台上的“官方公告”“任务空投”保持警惕,避免在陌生环境中直接连接钱包。 2、社会工程学攻击 Q4 期间,社会工程攻击依然常见,攻击者通常借助信任关系、时间压力或熟人身份入手,引导受害者在不经意间做出危险操作。 有些骗局从一条看似普通的验证码请求开始。一位用户分享了自己的被盗经历:原以为钱包被盗是助记词泄露所致,复盘后才意识到自己落入了精心设计的社会工程攻击。一切从一个月前就埋下伏笔:攻击者悄悄在受害者家人的 Google 账号中加入自己的 Passkey,然后潜伏等待。某天,家人的电脑不断跳出 Gmail 验证提示,受害者随即收到多封验证码,为了“帮家人处理问题”,他没有多想就直接把验证码转发过去。验证码就此落入攻击者手中,使其顺利接管受害者的 Google 帐号。由于受害者曾将部分私钥备份存放在云端,攻击者便能够在取得片段后暴力破解剩余部分,最终拼出完整私钥并盗走资产。 此外,我们注意到攻击者越来越频繁地假冒安全团队或知名第三方服务人员,主动联系用户并以处理安全风险或资产问题为名,诱导其进行高风险操作。在一起案例中,攻击者通过私信与用户建立联系,谎称其钱包存在授权风险,并在沟通过程中持续施压,以“协助排查和修复问题”为由,诱导用户导出私钥。所幸该用户保持警觉并及时向我们求证,最终避免了进一步损失。 进一步查看这些假冒安全人员的主页,会发现他们的粉丝数量往往不少,看上去“可信度”很高;而一旦被真正的安全团队揭发,他们会迅速更换头像、昵称或账号,以逃避追查,继续行骗。 此类骗局的流程大致是:攻击者先伪装成安全团队或官方支持人员,通过权威身份迅速获取用户信任;随后以“钱包存在风险”“授权异常”“资产可能被冻结”等紧迫性话术制造压力,让用户在慌乱中降低警惕;在信任与恐慌的双重作用下,受害者被进一步引导去执行所谓的“修复步骤”,包括输入私钥、下载检查工具、导入钱包或签署看似正常的操作;当用户完成关键动作,攻击者立刻接管资产并快速转移。这种攻击技术含量不算高,但胜在利用人性弱点。只要信任建立、压力足够,多数人难以做到“冷静三秒再思考”。 简单总结,用户安全意识不足,是这类攻击的核心突破口,我们建议: 永远不要向任何人提供私钥、助记词或完整 Key 信息。真正的安全团队不会、也不可能要求这些内容。不要通过陌生人提供的链接、工具或文件解决安全问题。如需排查风险,可前往官方渠道或可信的钱包工具自行检查。对任何“主动联系你”的安全提醒保持高度怀疑。无论对方声称来自哪家机构,都应通过官网公布的渠道自行验证。建立固定的安全习惯。如使用硬件钱包、启用双重验证、经常检查授权、学习基础安全知识。 3、面试骗局 Q4 出现多起与求职或面试相关的加密资产盗窃案例,攻击者将社会工程学与技术手段结合,通过招聘、面试场景获取受害者信任,再植入恶意软件窃取资产。 一个案例是攻击者冒充某 Web3 项目的官方人员,以招聘和技术面试为由与受害者建立联系,并在沟通中营造出专业、可信的形象。随后,对方以“代码审查”或“技术评估”为面试环节的一部分,向受害者提供了一个托管在 Bitbucket 上的代码仓库,要求受害者 Clone 并运行,声称这是面试中的“代码审查测试”。由于该操作与正常的 Web3 技术面试流程高度一致,受害者未能及时察觉风险。在代码被执行后,隐藏在项目中的恶意逻辑开始运行,从远程服务器下载并执行恶意程序,对受害者本机环境进行扫描,并重点窃取了.env 文件中的私钥等敏感信息。最终,受害者的加密资产面临被盗风险,受害者设备长期暴露于风险中。 另一起案例中,受害者在招聘平台上创建了 Web3 相关的求职资料后,很快收到了自称来自某知名机构的招聘人员私信。对方在前期沟通中多次围绕技术背景和过往经验展开交流,使整个过程看起来与正常招聘流程并无明显差异。随后,双方安排了一次面试,并通过视频会议进行了简短沟通。会议过程中,对方始终未开启摄像头,并在数分钟后以“需要更换会议方式”为由,向受害者发送了一个新的会议链接。由于该链接无法正常访问,对方进一步引导受害者下载并安装相关应用,以继续面试流程。尽管受害者当时已察觉到异常,但未能及时中断操作,随后其钱包资产出现异常变动。 事后复盘发现,受害者可能在访问异常页面或安装应用的过程中,钱包权限已被获取,或设备被植入恶意程序。攻击者随后利用相关权限,转移了受害者钱包中的多种加密资产。经核实,对方所声称的项目或机构身份均为冒用。 从这些案例可以看到,面试骗局已经不再是简单的“发个钓鱼链接”,而是完整地复刻了一套看起来非常正常的招聘流程。从投递简历、技术交流,到面试安排、测试环节,几乎每一步都符合 Web3 从业者的日常认知,也正是这一点让人更容易放松警惕。等到对方提出“跑一下代码”“换个会议方式”或“安装工具继续面试”时,很多人已经在不知不觉中走到了风险边缘。 因此,在参与 Web3 招聘和面试时,一定要对任何涉及本地环境、外部代码执行或额外软件安装的要求多留一个心眼。正常的面试很少会要求候选人在主力设备上直接运行来源不明的程序,也不会在关键环节反复更换沟通方式。一旦发现流程开始变得奇怪、急促,或让你产生“哪里不太对”的直觉,及时停下来往往比配合完成更重要。多做背景核实、使用隔离环境,往往就能在关键时刻帮你避开这类风险。 4、电脑投毒 在 Q4,电脑投毒类攻击再次出现。攻击者往往借助钓鱼链接、社交工具私聊或所谓的“资料下载”,将恶意程序悄悄植入用户本地环境,一旦设备被感染,钱包相关数据便会暴露在风险之中。 一个典型案例来自用户 Babur。起初,他遇到了一名试图敲诈他的人。Babur 对敲诈本身并不担心,但他对对方在交流中所展示的 OSINT 能力产生了兴趣。结合自己过去账户曾被入侵的经历,Babur 选择继续沟通,并付费请对方协助进行所谓的“尽职调查”。随后,攻击者多次向他发送“调查结果”。第一次提供链接时,Babur 保持警惕,并未点击,而是要求以纯文本形式查看内容。但当对方再次发送一个看起来更贴合需求、也更“合理”的链接后,他放松了警惕并进行了访问。 事后来看,这个链接并不是普通的钓鱼页面,而是一个外观伪装成 Etherscan 的恶意投递入口。页面中包含用于投递恶意程序的执行逻辑,一旦被访问,就可能在本地触发恶意代码运行。由于整个过程并不依赖 Telegram 的文件下载机制,即便开启了“禁止自动下载”,也无法有效阻断这次感染。问题进一步恶化的关键在于,Babur 是在一台承担多签钱包第二签名职责的设备上访问了该链接。设备被植入恶意程序后,攻击者得以获取与签名操作相关的关键信息,从而绕过原有的权限限制,直接介入多签流程。同时,攻击者还通过相同的感染路径获取了受害者 Telegram 的部分元数据。最终,由于签名端设备已经完全失守,攻击者顺利完成了后续授权操作,造成了严重的资产损失。 事实上,真实的电脑投毒攻击并不复杂,也谈不上高深技巧。攻击者只是利用了一套“看起来很合理”的流程,诱导用户在关键设备上完成了一次错误操作。一旦承担签名或私钥管理职责的本地环境被攻破,即便使用多签或更复杂的安全方案,其防护效果也会被大幅削弱。因此,承担签名或私钥管理职责的设备,应尽量保持隔离,避免浏览链接、下载文件或执行任何非必要操作。对 Web3 用户来说,安全的关键不只是选择什么工具,而是要清楚——哪些设备是“不能出错的”。 5、社交媒体骗局 Q4 期间,我们也观察到一种在社交媒体上反复出现的行骗方式:攻击者先盗取或控制具有一定影响力的账号,再借助共同关注、熟人关系私信接触目标,逐步引导其进入钓鱼页面或执行恶意操作。 一位用户主动向我们反馈了自己的经历,并表示希望通过“以身试局”的方式,让更多人意识到这类骗局的真实存在。在这起案例中,攻击者首先盗取了某位 KOL 的 Twitter 或 Telegram 账号。由于账号本身具备一定影响力,且与受害者存在多位共同关注对象,私信出现时并不会引起明显警惕。 沟通开始后,对方先是以“基金推广合作”为切入点,表示愿意支付约 1–1.5 万美元,希望用户协助宣传相关项目。在取得初步信任后,对方将沟通引导至 Telegram,并以“推进合作流程”为由展开进一步操作。 其间,对方以用户“尚未完成账号注册和合作配置”为理由,表示暂时无法付款,并将问题归因于用户尚未在指定网站完成相关步骤。随后,对方发送了一个看似正规的项目网站,并要求受害者在 Mac 设备上打开终端,复制并执行一条指定的命令行指令,用以完成账号创建。为进一步降低警惕,对方还发送了网站页面截图,反复强调这是“正常流程”,并不断催促用户尽快完成操作,以便继续后续合作。 实际上,这些页面或指令均指向钓鱼站点或恶意程序,一旦执行,设备环境或钱包权限便可能被进一步获取。值得一提的是,受害者在交流过程中曾尝试要求对方先支付部分费用以验证诚意,但对方始终以各种理由推脱,迟迟不肯转账。 从结果来看,如果对链上安全骗局较为熟悉,这类社交媒体行骗并不算高明,但它恰恰利用了“熟人背书”“共同关注”“看似合理的合作报价”等心理盲区,让人更容易在第一时间放松警惕。对经常活跃在 Crypto 社交圈的用户而言,越是“看起来不像骗局”的私信,越值得多停下来核实一步。 写在最后 从 Q4 收到的这些真实求助案例可以看到,许多安全事件的发生,并非源于复杂漏洞或高深攻击。更多时候,攻击者只是顺着用户的行为习惯、信任路径和使用场景,一步步把风险“嵌进”看似正常的流程里。无论是钓鱼页面、社会工程、面试骗局,还是电脑投毒,它们真正利用的,始终是信息不对称与安全意识的空档。 对用户而言,安全并不是记住几条“不要点链接”的规则,而是清楚哪些操作是高风险的、哪些设备是不能出错的、哪些场景必须保持警惕;对项目方和生态参与者来说,安全也不只是事后追踪和补救,更需要在设计和沟通层面尽量减少误导、降低用户误操作的可能性。 MistTrack 被盗表单持续接收并分析这些真实被盗案例,并不只是为了复盘损失本身,而是希望从一次次具体事件中提炼可被复用的风险信号,帮助更多用户在事前识别问题,避免走到求助这一步。攻击方式在不断变化,但信任被滥用、流程被伪装的本质并未改变,真正困难的并不是识别某一次具体的骗局,而是建立一套长期有效、可迁移的风险判断方式。因此,我们建议大家反复阅读《区块链黑暗森林自救手册》,理解“黑暗森林”环境下的基础安全认知,并结合 Web3 钓鱼演练平台 Unphishable(https://unphishable.io/) 进行实操练习,在真实场景中持续强化“所见即所签”的判断能力。 如果您的加密货币不幸被盗,我们将免费提供案件评估的社区协助服务,仅需要您按照分类指引(资金被盗/遭遇诈骗/遭遇勒索)提交表单即可。同时,您提交的黑客地址也将同步至慢雾 InMist Lab 威胁情报合作网络进行风控。(注:中文表单提交至 https://aml.slowmist.com/cn/recovery-funds.html,英文表单提交至 https://aml.slowmist.com/recovery-funds.html) 慢雾(SlowMist) 在加密货币反洗钱领域深耕多年,形成了一套完整且高效的解决方案,涵盖了合规、调查与审计三个方面,积极助力构建加密货币健康生态环境,也为 Web3 行业、金融机构、监管单位以及合规部门提供专业服务。其中,MistTrack 是一个提供钱包地址分析、资金监控、追踪溯源的合规调查平台,目前已积累四亿多个地址标签,一千多个地址实体,50 万 + 威胁情报数据,9000 万 + 风险地址,这些都为确保数字资产的安全性、打击洗钱犯罪提供有力的保护。合规调查平台,目前已积累四亿多个地址标签,一千多个地址实体,50 万 + 威胁情报数据,9000 万 + 风险地址,这些都为确保数字资产的安全性、打击洗钱犯罪提供有力的保护。

慢雾 Q4 追踪实录:协助被盗客户冻结/追回百万美元资金

自慢雾(SlowMist) 上线 MistTrack 被盗表单提交功能以来,我们每天都会收到大量受害者的求助信息,希望我们提供资金追踪和挽救的帮助,其中不乏丢失上千万美金的大额受害者。基于此,本系列通过对每个季度收到的被盗求助进行统计和分析,旨在以脱敏后的真实案例剖析常见或罕见的作恶手法,帮助行业参与者更好地理解和防范安全风险,保护自己的资产。
据统计,MistTrack Team 于 2025 年 Q4 季度共收到 300 份被盗表单,包括 210 份国内表单和 90 份海外表单,我们为这些表单做了免费的评估社区服务。(Ps. 此数据仅针对来自表单提交的 Case,不包括通过邮箱或其他渠道联系的 Case)
MistTrack Team 在 Q4 季度协助 9 个被盗客户成功冻结/追回约 100 万美元的资金。
被盗原因

2025 年 Q4 的作恶手法中,钓鱼攻击成为被盗原因 Top1。接下来我们就挑出几类典型案例,带大家更好地避坑、防盗、保住资产。
1、钓鱼攻击
在 Q4,钓鱼攻击依旧频发,且相较于其他季度呈现出明显分化:一方面,传统的“迷惑性域名”仍在持续;另一方面,出现了更隐蔽、能够改写用户浏览路径的新型欺骗方式,使攻击整体呈现更强的伪装性与流程欺骗性。
造成损失最多的仍是“相似字符投毒地址”——简单但致命。例如,某用户就是因为被首尾字符几乎一致的地址迷惑,损失近 5000 万 USDT。链上可以看到,他先给正确地址发了一笔小额测试,然后在几分钟后,将 5000 万美元直接转进了一个看起来“差不多”的恶意地址(首 3 字符尾 4 字符一样):

用户地址:0xcB80784ef74C98A89b6Ab8D96ebE890859600819
投毒地址:0xBaFF2F13638C04B10F8119760B2D2aE86b08f8b5
用户预期的目标地址:0xbaf4b1aF7E3B560d937DA0458514552B6495F8b5

尽管慢雾早在 2022 年就披露过这种钓鱼方式,但依然不断有人中招,其流程通常是这样展开的:
碰撞出钓鱼地址
黑客会提前批量生成大量钓鱼地址,分布式部署批量程序后,根据链上用户动态,向目标转账地址发起相同首尾号地址钓鱼攻击。在本次事件中,黑客使用了去除 0x 后的首 3 位及尾 4 位和受害者目标转账地址一致的地址。
尾随交易混淆视线
用户在 15:06:47 发起转账后,黑客迅速使用碰撞出来的钓鱼地址尾随交易(分别是 15:12:35 和 15:20:35 两笔交易,一笔是假 Token,一笔是真 Token 0.005 USDT),让钓鱼地址出现在用户历史记录中。

复制粘贴 → 愿者上钩
由于用户习惯从钱包历史记录里复制最近转账信息,看到了尾随的钓鱼交易后没有仔细检查自己复制的地址是否正确,结果将 5000 万 USDT 误转给了钓鱼地址。
历史上类似案例也不少,比如曾经有受害者误转 1155 枚 WBTC,所幸最终全额退款,但并非每次都如此幸运。针对此类骗局,防范办法其实很简单:常用地址请存入地址簿、开启小额过滤、转账前至少核对首 6 + 尾 8 位,最稳妥的办法仍是逐位确认。
更经典的钓鱼方式是伪造域名 —— 老梗常新,只要传播够快,永远有人会点。例如今年 BNB Chain 的英文官推曾被短暂攻破,攻击者借官方身份发布钓鱼链接,只将 binance 中的字母 i 偷换成视觉极为接近的 l,变成 bnbchalns[.]com。一旦用户在社交媒体的信息流中快速浏览、视觉疲劳一下,很容易进入一个外观与官方网站几乎一致的伪造页面。

近期出现的钓鱼方式则更为隐蔽:即便用户手动输入了正确的官网域名,也可能被导向钓鱼网站。部分受害者反映,他们明明输入的是正确地址,但浏览器却自动补全为攻击者构造的同形字符域名,例如 plasma.to 被补全为 plasmą.to,balancer.fi 被替换为 bǎlancer.fi。这种攻击之所以能成功,并非用户操作失误,而是攻击者提前通过广告投放、社交平台引导、假冒公告等方式污染了浏览器历史记录。一旦钓鱼域名被写入自动补全逻辑,下次用户输入时,浏览器便会自动跳转到伪造网站,其界面几乎与官网无差异,用户难以察觉。换句话说,用户以为自己主动访问了官网,实际上已经落入了攻击者精心设置的陷阱。

当然,无论是传统钓鱼还是自动补全劫持,其最终目标都一致:诱导用户在毫无防备的情况下签名授权。为此,他们通常会将链接包装成空投、奖励、任务、测试资格,或伪装成项目官方公告,让用户误以为只是执行普通交互,然而签名背后可能藏着高危操作,比如 Owner 改写。我们近期接到的一起求助案例便是典型代表:受害者钱包 Owner 权限被悄悄转移至攻击者地址(GKJBELft…JwbzQ),300 万美元被盗,另有 200 万美元差点无法救回。事后分析发现,他曾访问过伪装工具站点,并完成了一次看似正常、没有资产变动的交易签名。由于不了解 Solana 可修改账户所有权的机制,也没有安全工具预警,于是核心授权悄悄完成,风险直到资金不可操作时才暴露。

总之,面对不断演进的钓鱼手法,“仔细看链接”“谨慎点击”已不再足够。用户需要培养良好的安全习惯,例如:尽量通过书签访问高频使用的网站,减少依赖浏览器自动补全;在执行任何交易签名前,查看是否涉及权限变更,并优先使用具有风险提示能力的钱包或安全工具;对社交平台上的“官方公告”“任务空投”保持警惕,避免在陌生环境中直接连接钱包。
2、社会工程学攻击
Q4 期间,社会工程攻击依然常见,攻击者通常借助信任关系、时间压力或熟人身份入手,引导受害者在不经意间做出危险操作。
有些骗局从一条看似普通的验证码请求开始。一位用户分享了自己的被盗经历:原以为钱包被盗是助记词泄露所致,复盘后才意识到自己落入了精心设计的社会工程攻击。一切从一个月前就埋下伏笔:攻击者悄悄在受害者家人的 Google 账号中加入自己的 Passkey,然后潜伏等待。某天,家人的电脑不断跳出 Gmail 验证提示,受害者随即收到多封验证码,为了“帮家人处理问题”,他没有多想就直接把验证码转发过去。验证码就此落入攻击者手中,使其顺利接管受害者的 Google 帐号。由于受害者曾将部分私钥备份存放在云端,攻击者便能够在取得片段后暴力破解剩余部分,最终拼出完整私钥并盗走资产。

此外,我们注意到攻击者越来越频繁地假冒安全团队或知名第三方服务人员,主动联系用户并以处理安全风险或资产问题为名,诱导其进行高风险操作。在一起案例中,攻击者通过私信与用户建立联系,谎称其钱包存在授权风险,并在沟通过程中持续施压,以“协助排查和修复问题”为由,诱导用户导出私钥。所幸该用户保持警觉并及时向我们求证,最终避免了进一步损失。

进一步查看这些假冒安全人员的主页,会发现他们的粉丝数量往往不少,看上去“可信度”很高;而一旦被真正的安全团队揭发,他们会迅速更换头像、昵称或账号,以逃避追查,继续行骗。

此类骗局的流程大致是:攻击者先伪装成安全团队或官方支持人员,通过权威身份迅速获取用户信任;随后以“钱包存在风险”“授权异常”“资产可能被冻结”等紧迫性话术制造压力,让用户在慌乱中降低警惕;在信任与恐慌的双重作用下,受害者被进一步引导去执行所谓的“修复步骤”,包括输入私钥、下载检查工具、导入钱包或签署看似正常的操作;当用户完成关键动作,攻击者立刻接管资产并快速转移。这种攻击技术含量不算高,但胜在利用人性弱点。只要信任建立、压力足够,多数人难以做到“冷静三秒再思考”。

简单总结,用户安全意识不足,是这类攻击的核心突破口,我们建议:
永远不要向任何人提供私钥、助记词或完整 Key 信息。真正的安全团队不会、也不可能要求这些内容。不要通过陌生人提供的链接、工具或文件解决安全问题。如需排查风险,可前往官方渠道或可信的钱包工具自行检查。对任何“主动联系你”的安全提醒保持高度怀疑。无论对方声称来自哪家机构,都应通过官网公布的渠道自行验证。建立固定的安全习惯。如使用硬件钱包、启用双重验证、经常检查授权、学习基础安全知识。
3、面试骗局
Q4 出现多起与求职或面试相关的加密资产盗窃案例,攻击者将社会工程学与技术手段结合,通过招聘、面试场景获取受害者信任,再植入恶意软件窃取资产。
一个案例是攻击者冒充某 Web3 项目的官方人员,以招聘和技术面试为由与受害者建立联系,并在沟通中营造出专业、可信的形象。随后,对方以“代码审查”或“技术评估”为面试环节的一部分,向受害者提供了一个托管在 Bitbucket 上的代码仓库,要求受害者 Clone 并运行,声称这是面试中的“代码审查测试”。由于该操作与正常的 Web3 技术面试流程高度一致,受害者未能及时察觉风险。在代码被执行后,隐藏在项目中的恶意逻辑开始运行,从远程服务器下载并执行恶意程序,对受害者本机环境进行扫描,并重点窃取了.env 文件中的私钥等敏感信息。最终,受害者的加密资产面临被盗风险,受害者设备长期暴露于风险中。

另一起案例中,受害者在招聘平台上创建了 Web3 相关的求职资料后,很快收到了自称来自某知名机构的招聘人员私信。对方在前期沟通中多次围绕技术背景和过往经验展开交流,使整个过程看起来与正常招聘流程并无明显差异。随后,双方安排了一次面试,并通过视频会议进行了简短沟通。会议过程中,对方始终未开启摄像头,并在数分钟后以“需要更换会议方式”为由,向受害者发送了一个新的会议链接。由于该链接无法正常访问,对方进一步引导受害者下载并安装相关应用,以继续面试流程。尽管受害者当时已察觉到异常,但未能及时中断操作,随后其钱包资产出现异常变动。

事后复盘发现,受害者可能在访问异常页面或安装应用的过程中,钱包权限已被获取,或设备被植入恶意程序。攻击者随后利用相关权限,转移了受害者钱包中的多种加密资产。经核实,对方所声称的项目或机构身份均为冒用。
从这些案例可以看到,面试骗局已经不再是简单的“发个钓鱼链接”,而是完整地复刻了一套看起来非常正常的招聘流程。从投递简历、技术交流,到面试安排、测试环节,几乎每一步都符合 Web3 从业者的日常认知,也正是这一点让人更容易放松警惕。等到对方提出“跑一下代码”“换个会议方式”或“安装工具继续面试”时,很多人已经在不知不觉中走到了风险边缘。
因此,在参与 Web3 招聘和面试时,一定要对任何涉及本地环境、外部代码执行或额外软件安装的要求多留一个心眼。正常的面试很少会要求候选人在主力设备上直接运行来源不明的程序,也不会在关键环节反复更换沟通方式。一旦发现流程开始变得奇怪、急促,或让你产生“哪里不太对”的直觉,及时停下来往往比配合完成更重要。多做背景核实、使用隔离环境,往往就能在关键时刻帮你避开这类风险。
4、电脑投毒
在 Q4,电脑投毒类攻击再次出现。攻击者往往借助钓鱼链接、社交工具私聊或所谓的“资料下载”,将恶意程序悄悄植入用户本地环境,一旦设备被感染,钱包相关数据便会暴露在风险之中。
一个典型案例来自用户 Babur。起初,他遇到了一名试图敲诈他的人。Babur 对敲诈本身并不担心,但他对对方在交流中所展示的 OSINT 能力产生了兴趣。结合自己过去账户曾被入侵的经历,Babur 选择继续沟通,并付费请对方协助进行所谓的“尽职调查”。随后,攻击者多次向他发送“调查结果”。第一次提供链接时,Babur 保持警惕,并未点击,而是要求以纯文本形式查看内容。但当对方再次发送一个看起来更贴合需求、也更“合理”的链接后,他放松了警惕并进行了访问。

事后来看,这个链接并不是普通的钓鱼页面,而是一个外观伪装成 Etherscan 的恶意投递入口。页面中包含用于投递恶意程序的执行逻辑,一旦被访问,就可能在本地触发恶意代码运行。由于整个过程并不依赖 Telegram 的文件下载机制,即便开启了“禁止自动下载”,也无法有效阻断这次感染。问题进一步恶化的关键在于,Babur 是在一台承担多签钱包第二签名职责的设备上访问了该链接。设备被植入恶意程序后,攻击者得以获取与签名操作相关的关键信息,从而绕过原有的权限限制,直接介入多签流程。同时,攻击者还通过相同的感染路径获取了受害者 Telegram 的部分元数据。最终,由于签名端设备已经完全失守,攻击者顺利完成了后续授权操作,造成了严重的资产损失。
事实上,真实的电脑投毒攻击并不复杂,也谈不上高深技巧。攻击者只是利用了一套“看起来很合理”的流程,诱导用户在关键设备上完成了一次错误操作。一旦承担签名或私钥管理职责的本地环境被攻破,即便使用多签或更复杂的安全方案,其防护效果也会被大幅削弱。因此,承担签名或私钥管理职责的设备,应尽量保持隔离,避免浏览链接、下载文件或执行任何非必要操作。对 Web3 用户来说,安全的关键不只是选择什么工具,而是要清楚——哪些设备是“不能出错的”。
5、社交媒体骗局
Q4 期间,我们也观察到一种在社交媒体上反复出现的行骗方式:攻击者先盗取或控制具有一定影响力的账号,再借助共同关注、熟人关系私信接触目标,逐步引导其进入钓鱼页面或执行恶意操作。
一位用户主动向我们反馈了自己的经历,并表示希望通过“以身试局”的方式,让更多人意识到这类骗局的真实存在。在这起案例中,攻击者首先盗取了某位 KOL 的 Twitter 或 Telegram 账号。由于账号本身具备一定影响力,且与受害者存在多位共同关注对象,私信出现时并不会引起明显警惕。

沟通开始后,对方先是以“基金推广合作”为切入点,表示愿意支付约 1–1.5 万美元,希望用户协助宣传相关项目。在取得初步信任后,对方将沟通引导至 Telegram,并以“推进合作流程”为由展开进一步操作。

其间,对方以用户“尚未完成账号注册和合作配置”为理由,表示暂时无法付款,并将问题归因于用户尚未在指定网站完成相关步骤。随后,对方发送了一个看似正规的项目网站,并要求受害者在 Mac 设备上打开终端,复制并执行一条指定的命令行指令,用以完成账号创建。为进一步降低警惕,对方还发送了网站页面截图,反复强调这是“正常流程”,并不断催促用户尽快完成操作,以便继续后续合作。

实际上,这些页面或指令均指向钓鱼站点或恶意程序,一旦执行,设备环境或钱包权限便可能被进一步获取。值得一提的是,受害者在交流过程中曾尝试要求对方先支付部分费用以验证诚意,但对方始终以各种理由推脱,迟迟不肯转账。
从结果来看,如果对链上安全骗局较为熟悉,这类社交媒体行骗并不算高明,但它恰恰利用了“熟人背书”“共同关注”“看似合理的合作报价”等心理盲区,让人更容易在第一时间放松警惕。对经常活跃在 Crypto 社交圈的用户而言,越是“看起来不像骗局”的私信,越值得多停下来核实一步。
写在最后
从 Q4 收到的这些真实求助案例可以看到,许多安全事件的发生,并非源于复杂漏洞或高深攻击。更多时候,攻击者只是顺着用户的行为习惯、信任路径和使用场景,一步步把风险“嵌进”看似正常的流程里。无论是钓鱼页面、社会工程、面试骗局,还是电脑投毒,它们真正利用的,始终是信息不对称与安全意识的空档。
对用户而言,安全并不是记住几条“不要点链接”的规则,而是清楚哪些操作是高风险的、哪些设备是不能出错的、哪些场景必须保持警惕;对项目方和生态参与者来说,安全也不只是事后追踪和补救,更需要在设计和沟通层面尽量减少误导、降低用户误操作的可能性。
MistTrack 被盗表单持续接收并分析这些真实被盗案例,并不只是为了复盘损失本身,而是希望从一次次具体事件中提炼可被复用的风险信号,帮助更多用户在事前识别问题,避免走到求助这一步。攻击方式在不断变化,但信任被滥用、流程被伪装的本质并未改变,真正困难的并不是识别某一次具体的骗局,而是建立一套长期有效、可迁移的风险判断方式。因此,我们建议大家反复阅读《区块链黑暗森林自救手册》,理解“黑暗森林”环境下的基础安全认知,并结合 Web3 钓鱼演练平台 Unphishable(https://unphishable.io/) 进行实操练习,在真实场景中持续强化“所见即所签”的判断能力。
如果您的加密货币不幸被盗,我们将免费提供案件评估的社区协助服务,仅需要您按照分类指引(资金被盗/遭遇诈骗/遭遇勒索)提交表单即可。同时,您提交的黑客地址也将同步至慢雾 InMist Lab 威胁情报合作网络进行风控。(注:中文表单提交至 https://aml.slowmist.com/cn/recovery-funds.html,英文表单提交至 https://aml.slowmist.com/recovery-funds.html)
慢雾(SlowMist) 在加密货币反洗钱领域深耕多年,形成了一套完整且高效的解决方案,涵盖了合规、调查与审计三个方面,积极助力构建加密货币健康生态环境,也为 Web3 行业、金融机构、监管单位以及合规部门提供专业服务。其中,MistTrack 是一个提供钱包地址分析、资金监控、追踪溯源的合规调查平台,目前已积累四亿多个地址标签,一千多个地址实体,50 万 + 威胁情报数据,9000 万 + 风险地址,这些都为确保数字资产的安全性、打击洗钱犯罪提供有力的保护。合规调查平台,目前已积累四亿多个地址标签,一千多个地址实体,50 万 + 威胁情报数据,9000 万 + 风险地址,这些都为确保数字资产的安全性、打击洗钱犯罪提供有力的保护。
圣诞劫 | Trust Wallet 扩展钱包被黑分析背景 北京时间今天凌晨 @zachxbt 在频道发布消息称 “一些 Trust Wallet 用户报告,在过去几个小时内,他们的钱包地址中的资金被盗走” 。随后 Trust Wallet 官方 X 也发布官方消息,确认了 Trust Wallet 浏览器扩展程序 2.68 版本存在安全风险,提醒所有在使用 2.68 版本的用户应立即禁用该版本并升级至 2.69 版本。 技战法 慢雾安全团队收到情报后,第一时间对相关样本展开分析。我们先看一下之前发布的 2.67 与 2.68 两个版本的核心代码对比: 通过将两个版本的代码进行 diff 发现黑客添加的恶意代码如下: 恶意代码会遍历插件中所有的钱包,并对用户的每个钱包发起一次 “获取助记词” 的请求获取到用户加密后的助记词,最后使用用户在解锁钱包时输入的 password 或 passkeyPassword 进行解密。如果解密成功将会把用户的助记词发送到攻击者的域名 `api.metrics-trustwallet[.]com`上。 我们顺便对攻击者的域名信息进行分析,攻击者使用域名:metrics-trustwallet.com。 经过查询,该恶意域名注册时间为 2025-12-08 02:28:18,域名服务商:NICENIC INTERNATIONA。 在 2025-12-21 开始有首次针对 api.metrics-trustwallet[.]com 的请求记录: 这个时间点和代码 12.22 植入后门的时间基本吻合。  我们继续通过代码跟踪分析复现整个攻击过程: 通过动态分析可以看到在解锁钱包后,可以在 R1 中看到攻击者将助记词信息填充到 error 里面。 而这个 Error 数据的来源是通过 GET_SEED_PHRASE 这个函数调用获得的,目前 Trust Wallet 支持 password 和 passkeyPassword 两种方式进行解锁,攻击者在解锁的时候拿到了 password 或 passkeyPassword,然后调用 GET_SEED_PHRASE 获取了钱包的助记词(私钥也是类似),然后将助记词放到了“errorMessage” 中。 如下是使用 emit 调用 GetSeedPhrase 获取助记词数据并填充到 error 的代码。  通过 BurpSuite 进行的流量分析显示,在获取到助记词后,将其封装在请求体的 errorMessage 字段中,并发送到恶意服务器(https[://]api[.]metrics-trustwallet[.]com),这与前面的分析是一致的。 经过以上流程,完成盗取助记词/私钥攻击。另外攻击者应该也熟悉扩展源码,其利用开源的全链路产品分析平台 PostHog JS 采集用户钱包信息。 被盗资产分析 根据 ZachXBT 披露的黑客地址,我们统计发现,截至发文时,Bitcoin 链上被盗资产总数约 33 BTC(价值约 300万 USD),Solana 链上被盗资产价值约 431 USD,Ethereum 主网及 Layer 2 等各条链被盗资产价值约 300万 USD。黑客在盗币后把部分资产利用各种中心化交易所和跨链桥进行资产转移和兑换。 总结 此次后门事件源于对 Trust Wallet 扩展内部代码库(分析服务逻辑)的恶意源代码修改,而非引入已被篡改的通用第三方包(如恶意 npm 包)。攻击者直接篡改了应用程序自身的代码,利用合法的 PostHog 库将分析数据导向恶意服务器。所以我们有理由相信这是一起专业的 APT 攻击, 攻击者可能在 12 月 8 日之前已经控制 Trust Wallet  相关开发人员的设备权限或发布部署权限。 建议: 1. 如果您安装过 Trust Wallet 扩展钱包,应该在第一时间断网作为排查和操作前提。 2. 立即导出私钥/助记词并卸载 Trust Wallet 扩展钱包。 3. 在备份好私钥/助记词后,尽快在其他钱包上做好资金的转移。

圣诞劫 | Trust Wallet 扩展钱包被黑分析

背景
北京时间今天凌晨 @zachxbt 在频道发布消息称 “一些 Trust Wallet 用户报告,在过去几个小时内,他们的钱包地址中的资金被盗走” 。随后 Trust Wallet 官方 X 也发布官方消息,确认了 Trust Wallet 浏览器扩展程序 2.68 版本存在安全风险,提醒所有在使用 2.68 版本的用户应立即禁用该版本并升级至 2.69 版本。

技战法
慢雾安全团队收到情报后,第一时间对相关样本展开分析。我们先看一下之前发布的 2.67 与 2.68 两个版本的核心代码对比:

通过将两个版本的代码进行 diff 发现黑客添加的恶意代码如下:

恶意代码会遍历插件中所有的钱包,并对用户的每个钱包发起一次 “获取助记词” 的请求获取到用户加密后的助记词,最后使用用户在解锁钱包时输入的 password 或 passkeyPassword 进行解密。如果解密成功将会把用户的助记词发送到攻击者的域名 `api.metrics-trustwallet[.]com`上。

我们顺便对攻击者的域名信息进行分析,攻击者使用域名:metrics-trustwallet.com。

经过查询,该恶意域名注册时间为 2025-12-08 02:28:18,域名服务商:NICENIC INTERNATIONA。
在 2025-12-21 开始有首次针对 api.metrics-trustwallet[.]com 的请求记录:

这个时间点和代码 12.22 植入后门的时间基本吻合。 
我们继续通过代码跟踪分析复现整个攻击过程:
通过动态分析可以看到在解锁钱包后,可以在 R1 中看到攻击者将助记词信息填充到 error 里面。

而这个 Error 数据的来源是通过 GET_SEED_PHRASE 这个函数调用获得的,目前 Trust Wallet 支持 password 和 passkeyPassword 两种方式进行解锁,攻击者在解锁的时候拿到了 password 或 passkeyPassword,然后调用 GET_SEED_PHRASE 获取了钱包的助记词(私钥也是类似),然后将助记词放到了“errorMessage” 中。

如下是使用 emit 调用 GetSeedPhrase 获取助记词数据并填充到 error 的代码。 

通过 BurpSuite 进行的流量分析显示,在获取到助记词后,将其封装在请求体的 errorMessage 字段中,并发送到恶意服务器(https[://]api[.]metrics-trustwallet[.]com),这与前面的分析是一致的。

经过以上流程,完成盗取助记词/私钥攻击。另外攻击者应该也熟悉扩展源码,其利用开源的全链路产品分析平台 PostHog JS 采集用户钱包信息。
被盗资产分析

根据 ZachXBT 披露的黑客地址,我们统计发现,截至发文时,Bitcoin 链上被盗资产总数约 33 BTC(价值约 300万 USD),Solana 链上被盗资产价值约 431 USD,Ethereum 主网及 Layer 2 等各条链被盗资产价值约 300万 USD。黑客在盗币后把部分资产利用各种中心化交易所和跨链桥进行资产转移和兑换。

总结
此次后门事件源于对 Trust Wallet 扩展内部代码库(分析服务逻辑)的恶意源代码修改,而非引入已被篡改的通用第三方包(如恶意 npm 包)。攻击者直接篡改了应用程序自身的代码,利用合法的 PostHog 库将分析数据导向恶意服务器。所以我们有理由相信这是一起专业的 APT 攻击, 攻击者可能在 12 月 8 日之前已经控制 Trust Wallet  相关开发人员的设备权限或发布部署权限。
建议:

1. 如果您安装过 Trust Wallet 扩展钱包,应该在第一时间断网作为排查和操作前提。
2. 立即导出私钥/助记词并卸载 Trust Wallet 扩展钱包。
3. 在备份好私钥/助记词后,尽快在其他钱包上做好资金的转移。
慢雾:去中心化永续合约安全审计指南作者:九九 校对:Kong 编辑:77 引言 去中心化永续合约通过“共享流动性”和“预言机定价”机制,在链上复刻了高杠杆衍生品交易。不同于 AMM 现货交易,永续合约系统涉及复杂的保证金核算、盈亏动态调整及清算博弈。微小的逻辑偏差——无论是价格精度的舍入,还是预言机更新的延迟——都可能导致协议资不抵债或用户资产归零。 本手册旨在解构此类系统的核心架构,剖析风险场景,并为智能合约安全审计师或区块链安全研究员提供实战审计检查清单。 基础技术架构 去中心化永续合约的核心在于将传统 CEX 的高性能撮合引擎逻辑,转化为链上的“异步执行”与“资金池博弈”模型。架构不仅要管理资产,还需处理复杂的订单状态与预言机延迟。 核心功能模块 1. 订单管理 负责处理用户的交易意图,将请求参数化并存储,等待之后的执行撮合。 加仓订单(Increase Order):包含开仓和追加保证金。减仓订单(Decrease Order):包含平仓和提取保证金。市价单(Market):即时请求,允许一定的滑点,通常通过“两步执行”机制防止预言机抢跑。限价单(Limit):当预言机价格达到指定的触发价格阈值时触发的加仓请求。止盈/止损订单(TP/SL):特殊的减仓限价单。当标记价格触及触发价格时,执行全平或部分平仓。互换订单(Swap Order):在不同抵押品之间进行转换(如用 USDT 开 BTC 本位合约),通常作为开仓的前置步骤。… 2. 仓位管理 这是系统的核心账本,记录每个用户的持仓状态。包括 size(头寸价值 USD)、collateral(抵押品数量)、averagePrice(平均开仓价格)、entryFundingIndex(开仓时的资金费率指数)等等。 仓位的 PnL 计算:实时计算未实现盈亏。 多单 PnL = size * (currentPrice - averagePrice) / averagePrice空单 PnL = size * (averagePrice - currentPrice) / averagePrice 在减仓或平仓时需要计算用户这部分仓位的实际盈亏,并在仓位保证金数据中进行结算: Position.collateral += PnL(仓位产生的盈亏)+ FundingFee(仓位产生的资金费率)- OrderExecuteFee(减仓时收取的手续费) 3. 交易执行与撮合 由于链上计算昂贵且需依赖预言机,DEX 通常不采用订单簿撮合(CLOB),而是采用“Keeper 触发 + 预言机定价”的模式。 请求队列(Request Queue):用户提交订单后,交易并不立即执行,而是进入队列(或存储为 pending 状态)。 Keepers(执行订单的角色):链下机器人监听队列,当条件满足(如由时间锁过期、价格触发)时,发送交易并调用合约执行订单来撮合交易。 4. 资金池(Liquidity Pool) 在去中心化永续合约项目中,资金池不仅仅是用户提供流动性的容器,它还是市场上所有交易者的全局对手方。 4.1 虚拟流动性与资产支撑: LP 铸造/销毁:流动性提供者存入资产(如 USDC, ETH 等)铸造 LP Token。LP Token 的价格(兑换率)由公式 P_LP = (TotalAssets + UnrealizedPnL) / TotalSupply 决定。 零和博弈:交易者的亏损直接成为 LP 的盈利,交易者的盈利则从 LP 池中支付。 风险隔离:通常将稳定币池与波动资产池在逻辑上隔离,或通过权重控制特定资产的敞口上限,避免某个资产的价格剧烈波动影响产生流动性风险。 4.2 动态费用(Dynamic Fees / Rebalancing): 为了维持池内资产比例平衡,系统根据当前资产权重与目标权重的偏差调整 Swap 费用。 机制:若 ETH 占比过高,用 ETH 换 USDC 会收取高额费用(惩罚),反之则由低费用甚至零费用激励。 4.3 全局债务追踪(Global Debt): 系统不直接持有空单的抵押品(如 USDC),而是记录“全局空单总额”。 Guaranteed USD:这是一个关键的记账变量,表示“被多单锁定”的资产价值 + “空单的抵押品”价值。用于确保资金池具备偿付能力。 5. Oracle 预言机模块 预言机模块负责提供“防操纵”的定价服务,是系统的风控核心。 5.1 价格聚合策略(Price Aggregation): 双源验证:通常结合 Chainlink/Pyth 等链上预言机的价格(参考价格)和 Keeper 提交的 CEX 价格(快速价格)。 价差保护:当 |FastPrice - ChainlinkPrice| > SpreadThreshold 时,强制回退使用 Chainlink 价格或暂停交易,防止 Keeper 恶意报价。 5.2 极值保护策略(Min/Max Price Logic): 为防止预言机短期波动导致用户套利,系统维护两个价格变量:MaxPrice 和 MinPrice。 做多(Long):开仓/加仓使用 MaxPrice(高成本入场),平仓/减仓使用 MinPrice(低收益离场)。做空(Short):开仓/加仓使用 MinPrice,平仓/减仓使用 MaxPrice。 5.3 置信区间与陈旧检查: 预言机需要检查 updatedAt 时间戳,拒绝接受超过 heartbeat 的陈旧价格(最好不超过 30 秒)。 6. 资金费与借贷费 由于链上无法每秒循环所有用户扣费,系统采用“累计指数”算法进行惰性结算,并以此激励用户往驱使流动性平衡的方向进行交易。 6.1 借贷费: 定义:占用资金池流动性所需支付的利息。 计算:BorrowRate = UtilizationRate * RateFactor。 累计逻辑:系统维护一个全局变量 cumulativeBorrowFeePerToken。每当有人操作仓位时,系统计算 deltaTime * borrowRate 并累加到全局变量。 6.2 资金费: 定义:平衡多空力量的费用。多头多于空头时,多头付给空头(或协议),反之亦然。 计算:FundingRate = (Longs - Shorts) / PoolSize * Factor。 6.3 用户结算流程: 入场记录:用户开仓时,记录当前的 entryFundingIndex = globalCumulativeIndex。 持有期间:globalCumulativeIndex 随时间递增。 离场结算:用户平仓或调整仓位时,需支付的费用 = PositionSize * (currentGlobalIndex - entryFundingIndex)。 扣费顺序:费用直接从用户的抵押品中扣除。如果抵押品不足以支付费用,则触发清算。 关键机制深度解析 A. 创建订单与触发方式 两步执行(Two-Step Execution): Commit:用户发送交易,扣除抵押品,记录 Request key。此时暂不确定成交价格,仅锁定预期操作意愿。 Execute:Keeper 获取最新预言机价格,调用执行函数。系统对比 minOut 或 triggerPrice,若满足则更新到用户的仓位中,否则取消订单。 由 Keeper 执行可以防止用户看到预言机更新交易后,在同一区块内抢跑在低价时创建订单再高价时平仓来套利(但是仍要注意 Keeper 作恶或者被黑的风险)。 B. 止盈止损(TP/SL) 逻辑 止盈止损本质上是“指定条件触发的减仓单”。 逻辑:用户预设指定的止盈止损触发价格(triggerPrice) 和触发方向(triggerAboveThreshold)。 多单止盈:triggerPrice > averagePrice,triggerAboveThreshold = true。多单止损:triggerPrice < averagePrice,triggerAboveThreshold = false。 执行:Keeper 轮询链上订单,一旦预言机喂价满足条件(如 markPrice >= triggerPrice),即触发减仓逻辑。 C. 爆仓清算 当用户保证金率低于维持保证金率(Maintenance Margin) 时触发。 触发条件:(Collateral - Losses) / PositionSize < MaintenanceMarginRatio。 过程: 1. Liquidator(帮助清算用户仓位的角色)调用清算函数例如 liquidatePosition。 2. 合约验证标记价格下用户当前仓位的保证金率。 3. 若验证通过,仓位被强制关闭。 4. 剩余抵押品扣除 Liquidation Fee(支付给清算人)后,剩余部分归入资金池(作为 LP 的收益)。 D. 自动减仓(ADL) 在极端行情下,若资金池发生穿仓(即用户亏损超过其抵押品,且资金池无法覆盖),系统可能触发 ADL。 机制:根据盈利百分比和杠杆倍数排名,强制平仓盈利最高的对手方仓位,以释放流动性弥补亏损。 交互流程 以下通过一个“市价开多”的例子,展示一个完整的创建订单到执行的交互流程: 1. 用户发起创建订单操作: 调用 Router.createIncreasePosition(...)。 传入创建订单所需的参数,例如 amountIn(抵押品数额)、sizeDelta(杠杆后头寸大小)、acceptablePrice(预期接受最大滑点的触发价格)等。 结果:保证金代币被转入指定合约中(例如 Vault 或 OrderBook),根据用户参数生成订单数据并进行存储,与对应生成的 OrderKey 或 OrderId 映射关联,事件 CreateIncreasePosition 被抛出。 2. Keeper 监听与执行订单: 链下脚本监听到 CreateIncreasePosition 事件。 等待预言机价格更新(或自行上传价格数据更新价格)。 执行订单进行交易撮合(例如调用 PositionManager.executeIncreasePosition)。 3. 合约验证: 价格检查:获取当前 Mark Price。验证 Mark Price <= acceptablePrice(防止价差滑点过大超出用户的预期)。 杠杆检查:计算新状态下的杠杆率,确保不超过 MaxLeverage。 资金池检查:确保多头总持仓量以及可用流动性等未超过上限。 4. 结算并更新状态: 对用户的仓位数据进行更新,例如增加 position.size 和 position.collateral,记录开仓方向、 扣除订单执行时的费用,例如开仓费、借贷费等。 增加资金池的流动性和储备状态(用于计算 AUM)。 结果:交易成功,Keeper 获得执行费(Execution Fee)。若失败,订单被取消,资金退回用户。 审计要点 Checklist 预言机与定价审计 喂价时效性验证:检查是否使用了 latestRoundData 而非过时的 latestAnswer。必须校验 updatedAt 时间戳,或检查预言机的价格更新心跳阈值,防止可以使用陈旧的价格来执行订单。价格极值选取验证:系统应根据用户持仓方向选择对系统“最有利”的价格(例如用户做多时,系统应计算较低的标记价格来判断清算)。若逻辑反转,用户可利用价差无风险套利。 多源校验:确认标记价格计算是否包含 CEX 价格与 AMM 价格的对比逻辑,如 abs(cexPrice - ammPrice) > threshold 时启用保护模式。此外确保预言机使用多个可信源(如 Chainlink 和 Pyth),避免单一价格来源失效或被操纵。 精度处理:检查所有涉及 Token Decimals(如 USDC 为 6 位,ETH 为 18 位)与 USD 精度(通常 30 位)转换的乘除法,是否存在精度丢失。Decimal 动态获取和转换:检查是否动态获取并转换 Oracle decimals,而非硬编码(如 decimals-8);若使用 Pyth 预言机,还需额外动态获取置信度参数(conf) 并进行检查。Pyth Exponent 处理:对于 Pyth 预言机,确保正确处理负数 exponent(如 price * 10^abs(exp))。L2 Sequencer 适配:如果在 L2 部署,是否有针对指定链的 Sequencer Uptime 进行检查来防止宕机风险;并且需要检查 Sequencer 地址的正确性。TWAP 与瞬时价格检查:清算逻辑建议使用 TWAP 或中位数价格,防止闪电贷操纵瞬时价格触发恶意清算。抵押品价格正常获取检查:在去中心化永续合约中,可能会允许多种稳定币当作抵押品,并默认这些抵押品的价格等于 1 美元,对交易品种的价格获取可能是用的美元计价。而实际上稳定币在极端行情的情况下可能会脱锚,其价格并不恒等于 1 美元,这就导致了协议可能会被利用这个价格差进行恶意清算或套利。因此在以美元计价的前提下,需要检查是否正确从预言机中获取到了抵押品的价格并与交易品种的价格进行转换。... 订单管理审计 执行费覆盖检查:验证用户发送的 msg.value 是否足以支付 Keeper 的 Gas 费。特别注意 L2 上对 L1 数据费用的估算。 ETH/Native Token 退款逻辑:若订单执行失败或取消,确保绑定的 ETH 能够全额退还给用户,防止资金滞留在合约中。 订单更新时的即时触发检查:当用户设置订单的止盈/止损(TP/SL) 价格时,需要检查止盈止损订单的价格以及方向,例如当试图为多单设置止盈时需要确保止盈价格超过当前市价和原订单触发价,当设置止损时需要确保止损价格低于当前市价和原订单触发价(空单则相反),否则订单会在创建后被立即平仓。 订单存在性校验:在执行或取消订单前,必须校验订单是否存在,防止重复执行或空指针操作。 订单所有权校验:修改或取消订单时,必须严格校验 msg.sender 是否为订单拥有者,防止恶意取消他人订单。 最小订单规模限制:设置 minOrderSize,防止攻击者通过大量微小订单(Dust Orders) 发起 DoS 攻击或耗尽 Keeper 资源。 订单参数边界检查:创建订单时检查滑点是否合理,triggerPrice 是否非零,防止无效订单阻塞队列。杠杆计算中的溢出与精度丢失检查:在计算 (size price) / collateral 时,若 size price 超过 uint256 上限(虽然少见但可能通过构造恶意参数触发),或除法舍入导致的精度截断可能绕过最大杠杆限制。... 仓位管理审计 杠杆限制:系统必须在开仓和加仓时强制检查 size/margin 不超过最大杠杆限制(MaxLeverage),防止极端行情造成穿仓风险。检查仓位存在性和所有权验证:关键操作(如平仓)前需验证仓位存在且调用者为所有者或者 Keeper 等角色,防止操作无效仓位。 PnL 计算:检查多空双方的 PnL 计算公式是否对称。注意:未实现盈亏(Unrealized PnL) 是否正确计入 AUM。 保证金扣除:检查 decreasePosition 时,扣除的保证金是否优先用于支付 Borrow Fee 和 Funding Fee,而非先返还用户;以及在清算或减仓逻辑中,需要检查扣除保证金后资金池中的账目与实际资产是否相符,防止资不抵债。清算奖励激励不足:若清算费用(Liquidation Fee) 完全归协议所有或无法覆盖 Gas 费,Keepers 将拒绝执行清算交易,导致坏账累积。市场平衡机制检查:如果进行大额的开仓或平仓交易会对盘口流动性造成冲击时或者出现开仓和平仓后会加剧当前多空失衡的情况,则应该在开仓或平仓时收取更多的费用来刺激市场偏向平衡稳定。资金费累计检查:检查资金费的累计指数(Cumulative Index) 更新频率和精度,并确保在任何仓位变动前先更新全局指数。借贷费扣除逻辑检查:在增加保证金时,不应错误地对原有仓位重复扣除已结算的借贷费。维持保证金率检查:在提现保证金或进行加仓时需要仓位的维持保证金率是否健康,即确保 remainingCollateral >= size * MM_Ratio。全局持仓上限检查:必须检查多空双方的全局持仓量(Open Interest) 是否超过流动性池的承载能力,超过则拒绝开仓。... 交易逻辑审计 PnL 计算一致性:检查做多和做空、开仓和平仓时的 PnL 计算公式是否在所有场景下(包括 ADL、清算)保持一致,避免双重扣除。 两步执行机制(Commit-Reveal):用户提交请求与 Keeper 执行请求必须分在不同区块(或有最小时间间隔),防止原子级抢跑进行套利(Front-running)。 Gas 消耗风险检查:如果平仓时是由 Keeper 转账原生代币给用户,则需要对消耗的 Gas 进行验证,防止被恶意用户耗尽 Keeper 的 Gas 而阻塞其他交易活动进行。 签名重放检查:若使用签名进行链下撮合链上结算,必须检查 chainId、可自增的 nonce 或 deadline,防止同一签名被多次使用。 交易回调重入保护:若系统包含回调函数(如 executeOrderCallback),必须检查是否有防重入检查,避免在回调中再次操作仓位。 ADL 逻辑独立性:如果 ADL 逻辑复用了常规的减仓函数,而该函数包含仓位健康度检查,而被 ADL 的仓位往往处于高风险边缘,所以会导致 ADL 交易失败,系统坏账无法消除。需要确保 ADL 执行路径应跳过常规的清算检查,并使用独立的减仓函数,确保在极端行情下能强制减仓。 订单修改即时性:修改订单(如价格、数量)时,必须立即用当前价格判定是否满足触发条件。滑点执行保护:在 executeOrder 中,必须对比当前价格与用户设置的 acceptablePrice,若超出滑点范围应取消订单而非强行执行。 自动减仓(ADL) 机制的正常触发:ADL 应在流动性不足时触发,且需正确检查对手仓位状态,防止错误匹配。... 资金池与 LP 审计 AUM 计算:审查 getAum 函数。是否区分了 maxPrice(用于铸造 LP)和 minPrice(用于销毁 LP)以防止套利。计算 LP 价格时,需包含“未实现盈亏”。 直接转账干扰记账:如果合约依赖 token.balanceOf(address(this)) 来判断用户实际存入金额,而非使用内部记账数据,攻击者可能通过直接向合约转账干扰记账逻辑(例如导致 feeReserves 计算错误)。 闪电贷操纵防御:禁止在同一笔交易中铸造并销毁 LP Token(添加冷却期 Cooldown 或区块限制),防止利用预言机更新间隙套利。 资金隔离:确保费用储备金(Fee Reserves) 与交易对的流动性池资金在逻辑上严格分离,防止用户提取了本应属于协议收入的资金。 重入保护:所有涉及资金转出的函数(如 removeLiquidity, decreasePosition)是否使用了 nonReentrant 修饰符。 ERC4626 利率通胀攻击:检查是否有“最小流动性锁定”(mint 1000 wei burn) 或“虚拟偏移量”机制,防止首笔存款通胀攻击。USDT 兼容性:使用 SafeERC20 库处理转账,确保兼容无返回值的代币。代币白名单:检查是否允许 Rebase 或通缩代币进入。若允许,检查系统是否基于 balanceOf 差值记账而非参数金额。入口唯一性:检查底层合约(Vault/PositionManager) 的关键写操作是否只允许 Router 或 Executor 调用,防止绕过费率/价格检查。... 治理升级与权限审计 Timelock 完备性:关键参数(如 setGov, withdrawFees)修改是否强制经过 Timelock 且有合理延迟(如 24 小时)。 存储槽冲突检查:如果合约是可升级的(Proxy 模式),检查存储槽(Storage Layout)是否冲突。验证治理提案的阈值:治理决策需满足法定人数和延迟期,避免闪电投票操纵。报告发现参数设置不当可能使治理无效。验证是否可以重复投票:检查投票函数中是否限制一个成员只能进行一次投票或投票用的代币可以进行转移后再次进行投票。初始化函数保护:确保 initialize 函数有 initializer 修饰符,且不能被多次调用。对于实现合约(Implementation),应在构造函数中禁用初始化。权限转移的两步确认:setOwner 或 setGov 应采用 pendingOwner -> acceptOwner 的两步机制,防止将权限误转给错误地址。Copy Trading 风险:若支持跟单功能,检查是否验证了“操作者”拥有“被操作账户”的授权,防止未授权的跟单操作。资金提取权限:IDO 或众筹模块是否遗漏了资金提取(Withdraw) 函数,或者提取逻辑被永久锁定。委托-转发机制逻辑检查:如果协议具有委托给其他角色并由其转发交易的机制,则需要检查被委托者与转发者的权限,以及需要检查转发的数据。例如 from 地址是否可以被外部调用恶意构造,导致非法对其他用户的账户进行交易。角色权责分离:Keeper(执行者)、Liquidator(清算人)、Admin(管理员)权限应严格区分。例如,Keeper 不应有权修改预言机地址。敏感参数范围限制:setMaxLeverage,setFees,setFundingRateFactor 等函数必须有硬编码的上下限(如费用上限不超过 10%),防止管理员恶意或误操作。关键地址零值检查:setGov,setVault 等函数必须检查输入的系统合约地址参数设置正确而非 address(0) 或其他错误的地址,防止权限丢失。铸币/销毁权限审计:检查衍生代币的 mint/burn 函数,确保仅允许特定的合约调用。紧急暂停功能:协议应具备暂停功能,且暂停不应阻止用户提取抵押品或追加保证金(防止爆仓)。核心功能权限检查:对于价格更新、订单更新、仓位更新、提取流动性代币等核心函数需要严格检查权限,禁止外部可以随意更改影响其他用户的数据。 ... 其他 Solidity 版本锁定:使用锁定的 Solidity 版本(如 0.8.19 而非 ^0.8.0),避免编译器版本差异引入 Bug。 数学溢出检查:即使 Solidity 0.8+ 自带溢出检查,在涉及 unchecked 块或类型转换(如 int256 转 uint256)时需格外注意,防止溢出。 循环 gas 限制(DoS):例如在批量清算或结算奖励时,避免对无上限的数组进行遍历,防止 Gas Limit 耗尽导致功能永久失效。 事件日志正确性检查:所有状态变更(特别是涉及资金和参数)必须释放 Event,且包含正确的参数,便于链下索引。 外部调用返回值检查:对任何 address.call{value: ...} 的低级调用,必须检查返回值 success。 冗余代码清理:移除未使用的变量、函数和引入的第三方合约,减少攻击面和部署成本。 奖励分发计算:在奖励分发中,检查 rewardPerToken 是否在 totalSupply == 0 时正确处理,防止除零错误。 推荐人机制(Referral) 循环:防止用户将推荐人设置为自己(Self-referral) 或建立循环推荐关系(A->B->A) 进行刷量。... 结论 去中心化永续合约的安全性不仅依赖于 Solidity 代码的健壮性,更取决于金融逻辑的闭环设计。从预言机喂价的毫秒级延迟,到资金池 AUM 计算的微小偏差,任何环节的疏漏都可能被“闪电贷”放大为致命的经济攻击。 审计师应采取对抗式思维,不仅仅验证代码是否符合预期设计,更要假设自己是真实的攻击者,试图通过操纵价格、利用舍入误差或抢跑交易等方式来从协议中套利,从而发现更深层的风险并协助项目方进行修复。 持续监控建议:鉴于 DeFi 乐高属性,建议项目方在主网部署后,建立自动化的链上监控系统或者使用 SlowMist 推出的 MistEye 产品,作为静态代码审计的必要补充。

慢雾:去中心化永续合约安全审计指南

作者:九九
校对:Kong
编辑:77
引言
去中心化永续合约通过“共享流动性”和“预言机定价”机制,在链上复刻了高杠杆衍生品交易。不同于 AMM 现货交易,永续合约系统涉及复杂的保证金核算、盈亏动态调整及清算博弈。微小的逻辑偏差——无论是价格精度的舍入,还是预言机更新的延迟——都可能导致协议资不抵债或用户资产归零。
本手册旨在解构此类系统的核心架构,剖析风险场景,并为智能合约安全审计师或区块链安全研究员提供实战审计检查清单。
基础技术架构
去中心化永续合约的核心在于将传统 CEX 的高性能撮合引擎逻辑,转化为链上的“异步执行”与“资金池博弈”模型。架构不仅要管理资产,还需处理复杂的订单状态与预言机延迟。
核心功能模块
1. 订单管理
负责处理用户的交易意图,将请求参数化并存储,等待之后的执行撮合。
加仓订单(Increase Order):包含开仓和追加保证金。减仓订单(Decrease Order):包含平仓和提取保证金。市价单(Market):即时请求,允许一定的滑点,通常通过“两步执行”机制防止预言机抢跑。限价单(Limit):当预言机价格达到指定的触发价格阈值时触发的加仓请求。止盈/止损订单(TP/SL):特殊的减仓限价单。当标记价格触及触发价格时,执行全平或部分平仓。互换订单(Swap Order):在不同抵押品之间进行转换(如用 USDT 开 BTC 本位合约),通常作为开仓的前置步骤。…
2. 仓位管理
这是系统的核心账本,记录每个用户的持仓状态。包括 size(头寸价值 USD)、collateral(抵押品数量)、averagePrice(平均开仓价格)、entryFundingIndex(开仓时的资金费率指数)等等。
仓位的 PnL 计算:实时计算未实现盈亏。
多单 PnL = size * (currentPrice - averagePrice) / averagePrice空单 PnL = size * (averagePrice - currentPrice) / averagePrice
在减仓或平仓时需要计算用户这部分仓位的实际盈亏,并在仓位保证金数据中进行结算:
Position.collateral += PnL(仓位产生的盈亏)+ FundingFee(仓位产生的资金费率)- OrderExecuteFee(减仓时收取的手续费)
3. 交易执行与撮合
由于链上计算昂贵且需依赖预言机,DEX 通常不采用订单簿撮合(CLOB),而是采用“Keeper 触发 + 预言机定价”的模式。
请求队列(Request Queue):用户提交订单后,交易并不立即执行,而是进入队列(或存储为 pending 状态)。
Keepers(执行订单的角色):链下机器人监听队列,当条件满足(如由时间锁过期、价格触发)时,发送交易并调用合约执行订单来撮合交易。
4. 资金池(Liquidity Pool)
在去中心化永续合约项目中,资金池不仅仅是用户提供流动性的容器,它还是市场上所有交易者的全局对手方。
4.1 虚拟流动性与资产支撑:
LP 铸造/销毁:流动性提供者存入资产(如 USDC, ETH 等)铸造 LP Token。LP Token 的价格(兑换率)由公式 P_LP = (TotalAssets + UnrealizedPnL) / TotalSupply 决定。
零和博弈:交易者的亏损直接成为 LP 的盈利,交易者的盈利则从 LP 池中支付。
风险隔离:通常将稳定币池与波动资产池在逻辑上隔离,或通过权重控制特定资产的敞口上限,避免某个资产的价格剧烈波动影响产生流动性风险。
4.2 动态费用(Dynamic Fees / Rebalancing):
为了维持池内资产比例平衡,系统根据当前资产权重与目标权重的偏差调整 Swap 费用。
机制:若 ETH 占比过高,用 ETH 换 USDC 会收取高额费用(惩罚),反之则由低费用甚至零费用激励。
4.3 全局债务追踪(Global Debt):
系统不直接持有空单的抵押品(如 USDC),而是记录“全局空单总额”。
Guaranteed USD:这是一个关键的记账变量,表示“被多单锁定”的资产价值 + “空单的抵押品”价值。用于确保资金池具备偿付能力。
5. Oracle 预言机模块
预言机模块负责提供“防操纵”的定价服务,是系统的风控核心。
5.1 价格聚合策略(Price Aggregation):
双源验证:通常结合 Chainlink/Pyth 等链上预言机的价格(参考价格)和 Keeper 提交的 CEX 价格(快速价格)。
价差保护:当 |FastPrice - ChainlinkPrice| > SpreadThreshold 时,强制回退使用 Chainlink 价格或暂停交易,防止 Keeper 恶意报价。
5.2 极值保护策略(Min/Max Price Logic):
为防止预言机短期波动导致用户套利,系统维护两个价格变量:MaxPrice 和 MinPrice。
做多(Long):开仓/加仓使用 MaxPrice(高成本入场),平仓/减仓使用 MinPrice(低收益离场)。做空(Short):开仓/加仓使用 MinPrice,平仓/减仓使用 MaxPrice。
5.3 置信区间与陈旧检查:
预言机需要检查 updatedAt 时间戳,拒绝接受超过 heartbeat 的陈旧价格(最好不超过 30 秒)。
6. 资金费与借贷费
由于链上无法每秒循环所有用户扣费,系统采用“累计指数”算法进行惰性结算,并以此激励用户往驱使流动性平衡的方向进行交易。
6.1 借贷费:
定义:占用资金池流动性所需支付的利息。
计算:BorrowRate = UtilizationRate * RateFactor。
累计逻辑:系统维护一个全局变量 cumulativeBorrowFeePerToken。每当有人操作仓位时,系统计算 deltaTime * borrowRate 并累加到全局变量。
6.2 资金费:
定义:平衡多空力量的费用。多头多于空头时,多头付给空头(或协议),反之亦然。
计算:FundingRate = (Longs - Shorts) / PoolSize * Factor。
6.3 用户结算流程:
入场记录:用户开仓时,记录当前的 entryFundingIndex = globalCumulativeIndex。
持有期间:globalCumulativeIndex 随时间递增。
离场结算:用户平仓或调整仓位时,需支付的费用 = PositionSize * (currentGlobalIndex - entryFundingIndex)。
扣费顺序:费用直接从用户的抵押品中扣除。如果抵押品不足以支付费用,则触发清算。
关键机制深度解析
A. 创建订单与触发方式
两步执行(Two-Step Execution):
Commit:用户发送交易,扣除抵押品,记录 Request key。此时暂不确定成交价格,仅锁定预期操作意愿。
Execute:Keeper 获取最新预言机价格,调用执行函数。系统对比 minOut 或 triggerPrice,若满足则更新到用户的仓位中,否则取消订单。
由 Keeper 执行可以防止用户看到预言机更新交易后,在同一区块内抢跑在低价时创建订单再高价时平仓来套利(但是仍要注意 Keeper 作恶或者被黑的风险)。
B. 止盈止损(TP/SL) 逻辑
止盈止损本质上是“指定条件触发的减仓单”。
逻辑:用户预设指定的止盈止损触发价格(triggerPrice) 和触发方向(triggerAboveThreshold)。
多单止盈:triggerPrice > averagePrice,triggerAboveThreshold = true。多单止损:triggerPrice < averagePrice,triggerAboveThreshold = false。
执行:Keeper 轮询链上订单,一旦预言机喂价满足条件(如 markPrice >= triggerPrice),即触发减仓逻辑。
C. 爆仓清算
当用户保证金率低于维持保证金率(Maintenance Margin) 时触发。
触发条件:(Collateral - Losses) / PositionSize < MaintenanceMarginRatio。
过程:
1. Liquidator(帮助清算用户仓位的角色)调用清算函数例如 liquidatePosition。
2. 合约验证标记价格下用户当前仓位的保证金率。
3. 若验证通过,仓位被强制关闭。
4. 剩余抵押品扣除 Liquidation Fee(支付给清算人)后,剩余部分归入资金池(作为 LP 的收益)。
D. 自动减仓(ADL)
在极端行情下,若资金池发生穿仓(即用户亏损超过其抵押品,且资金池无法覆盖),系统可能触发 ADL。
机制:根据盈利百分比和杠杆倍数排名,强制平仓盈利最高的对手方仓位,以释放流动性弥补亏损。
交互流程
以下通过一个“市价开多”的例子,展示一个完整的创建订单到执行的交互流程:
1. 用户发起创建订单操作:
调用 Router.createIncreasePosition(...)。
传入创建订单所需的参数,例如 amountIn(抵押品数额)、sizeDelta(杠杆后头寸大小)、acceptablePrice(预期接受最大滑点的触发价格)等。
结果:保证金代币被转入指定合约中(例如 Vault 或 OrderBook),根据用户参数生成订单数据并进行存储,与对应生成的 OrderKey 或 OrderId 映射关联,事件 CreateIncreasePosition 被抛出。
2. Keeper 监听与执行订单:
链下脚本监听到 CreateIncreasePosition 事件。
等待预言机价格更新(或自行上传价格数据更新价格)。
执行订单进行交易撮合(例如调用 PositionManager.executeIncreasePosition)。
3. 合约验证:
价格检查:获取当前 Mark Price。验证 Mark Price <= acceptablePrice(防止价差滑点过大超出用户的预期)。
杠杆检查:计算新状态下的杠杆率,确保不超过 MaxLeverage。
资金池检查:确保多头总持仓量以及可用流动性等未超过上限。
4. 结算并更新状态:
对用户的仓位数据进行更新,例如增加 position.size 和 position.collateral,记录开仓方向、
扣除订单执行时的费用,例如开仓费、借贷费等。
增加资金池的流动性和储备状态(用于计算 AUM)。
结果:交易成功,Keeper 获得执行费(Execution Fee)。若失败,订单被取消,资金退回用户。
审计要点 Checklist
预言机与定价审计
喂价时效性验证:检查是否使用了 latestRoundData 而非过时的 latestAnswer。必须校验 updatedAt 时间戳,或检查预言机的价格更新心跳阈值,防止可以使用陈旧的价格来执行订单。价格极值选取验证:系统应根据用户持仓方向选择对系统“最有利”的价格(例如用户做多时,系统应计算较低的标记价格来判断清算)。若逻辑反转,用户可利用价差无风险套利。
多源校验:确认标记价格计算是否包含 CEX 价格与 AMM 价格的对比逻辑,如 abs(cexPrice - ammPrice) > threshold 时启用保护模式。此外确保预言机使用多个可信源(如 Chainlink 和 Pyth),避免单一价格来源失效或被操纵。
精度处理:检查所有涉及 Token Decimals(如 USDC 为 6 位,ETH 为 18 位)与 USD 精度(通常 30 位)转换的乘除法,是否存在精度丢失。Decimal 动态获取和转换:检查是否动态获取并转换 Oracle decimals,而非硬编码(如 decimals-8);若使用 Pyth 预言机,还需额外动态获取置信度参数(conf) 并进行检查。Pyth Exponent 处理:对于 Pyth 预言机,确保正确处理负数 exponent(如 price * 10^abs(exp))。L2 Sequencer 适配:如果在 L2 部署,是否有针对指定链的 Sequencer Uptime 进行检查来防止宕机风险;并且需要检查 Sequencer 地址的正确性。TWAP 与瞬时价格检查:清算逻辑建议使用 TWAP 或中位数价格,防止闪电贷操纵瞬时价格触发恶意清算。抵押品价格正常获取检查:在去中心化永续合约中,可能会允许多种稳定币当作抵押品,并默认这些抵押品的价格等于 1 美元,对交易品种的价格获取可能是用的美元计价。而实际上稳定币在极端行情的情况下可能会脱锚,其价格并不恒等于 1 美元,这就导致了协议可能会被利用这个价格差进行恶意清算或套利。因此在以美元计价的前提下,需要检查是否正确从预言机中获取到了抵押品的价格并与交易品种的价格进行转换。...
订单管理审计
执行费覆盖检查:验证用户发送的 msg.value 是否足以支付 Keeper 的 Gas 费。特别注意 L2 上对 L1 数据费用的估算。
ETH/Native Token 退款逻辑:若订单执行失败或取消,确保绑定的 ETH 能够全额退还给用户,防止资金滞留在合约中。
订单更新时的即时触发检查:当用户设置订单的止盈/止损(TP/SL) 价格时,需要检查止盈止损订单的价格以及方向,例如当试图为多单设置止盈时需要确保止盈价格超过当前市价和原订单触发价,当设置止损时需要确保止损价格低于当前市价和原订单触发价(空单则相反),否则订单会在创建后被立即平仓。
订单存在性校验:在执行或取消订单前,必须校验订单是否存在,防止重复执行或空指针操作。
订单所有权校验:修改或取消订单时,必须严格校验 msg.sender 是否为订单拥有者,防止恶意取消他人订单。
最小订单规模限制:设置 minOrderSize,防止攻击者通过大量微小订单(Dust Orders) 发起 DoS 攻击或耗尽 Keeper 资源。
订单参数边界检查:创建订单时检查滑点是否合理,triggerPrice 是否非零,防止无效订单阻塞队列。杠杆计算中的溢出与精度丢失检查:在计算 (size price) / collateral 时,若 size price 超过 uint256 上限(虽然少见但可能通过构造恶意参数触发),或除法舍入导致的精度截断可能绕过最大杠杆限制。...
仓位管理审计
杠杆限制:系统必须在开仓和加仓时强制检查 size/margin 不超过最大杠杆限制(MaxLeverage),防止极端行情造成穿仓风险。检查仓位存在性和所有权验证:关键操作(如平仓)前需验证仓位存在且调用者为所有者或者 Keeper 等角色,防止操作无效仓位。
PnL 计算:检查多空双方的 PnL 计算公式是否对称。注意:未实现盈亏(Unrealized PnL) 是否正确计入 AUM。
保证金扣除:检查 decreasePosition 时,扣除的保证金是否优先用于支付 Borrow Fee 和 Funding Fee,而非先返还用户;以及在清算或减仓逻辑中,需要检查扣除保证金后资金池中的账目与实际资产是否相符,防止资不抵债。清算奖励激励不足:若清算费用(Liquidation Fee) 完全归协议所有或无法覆盖 Gas 费,Keepers 将拒绝执行清算交易,导致坏账累积。市场平衡机制检查:如果进行大额的开仓或平仓交易会对盘口流动性造成冲击时或者出现开仓和平仓后会加剧当前多空失衡的情况,则应该在开仓或平仓时收取更多的费用来刺激市场偏向平衡稳定。资金费累计检查:检查资金费的累计指数(Cumulative Index) 更新频率和精度,并确保在任何仓位变动前先更新全局指数。借贷费扣除逻辑检查:在增加保证金时,不应错误地对原有仓位重复扣除已结算的借贷费。维持保证金率检查:在提现保证金或进行加仓时需要仓位的维持保证金率是否健康,即确保 remainingCollateral >= size * MM_Ratio。全局持仓上限检查:必须检查多空双方的全局持仓量(Open Interest) 是否超过流动性池的承载能力,超过则拒绝开仓。...
交易逻辑审计
PnL 计算一致性:检查做多和做空、开仓和平仓时的 PnL 计算公式是否在所有场景下(包括 ADL、清算)保持一致,避免双重扣除。
两步执行机制(Commit-Reveal):用户提交请求与 Keeper 执行请求必须分在不同区块(或有最小时间间隔),防止原子级抢跑进行套利(Front-running)。
Gas 消耗风险检查:如果平仓时是由 Keeper 转账原生代币给用户,则需要对消耗的 Gas 进行验证,防止被恶意用户耗尽 Keeper 的 Gas 而阻塞其他交易活动进行。
签名重放检查:若使用签名进行链下撮合链上结算,必须检查 chainId、可自增的 nonce 或 deadline,防止同一签名被多次使用。
交易回调重入保护:若系统包含回调函数(如 executeOrderCallback),必须检查是否有防重入检查,避免在回调中再次操作仓位。
ADL 逻辑独立性:如果 ADL 逻辑复用了常规的减仓函数,而该函数包含仓位健康度检查,而被 ADL 的仓位往往处于高风险边缘,所以会导致 ADL 交易失败,系统坏账无法消除。需要确保 ADL 执行路径应跳过常规的清算检查,并使用独立的减仓函数,确保在极端行情下能强制减仓。
订单修改即时性:修改订单(如价格、数量)时,必须立即用当前价格判定是否满足触发条件。滑点执行保护:在 executeOrder 中,必须对比当前价格与用户设置的 acceptablePrice,若超出滑点范围应取消订单而非强行执行。
自动减仓(ADL) 机制的正常触发:ADL 应在流动性不足时触发,且需正确检查对手仓位状态,防止错误匹配。...
资金池与 LP 审计
AUM 计算:审查 getAum 函数。是否区分了 maxPrice(用于铸造 LP)和 minPrice(用于销毁 LP)以防止套利。计算 LP 价格时,需包含“未实现盈亏”。
直接转账干扰记账:如果合约依赖 token.balanceOf(address(this)) 来判断用户实际存入金额,而非使用内部记账数据,攻击者可能通过直接向合约转账干扰记账逻辑(例如导致 feeReserves 计算错误)。
闪电贷操纵防御:禁止在同一笔交易中铸造并销毁 LP Token(添加冷却期 Cooldown 或区块限制),防止利用预言机更新间隙套利。
资金隔离:确保费用储备金(Fee Reserves) 与交易对的流动性池资金在逻辑上严格分离,防止用户提取了本应属于协议收入的资金。
重入保护:所有涉及资金转出的函数(如 removeLiquidity, decreasePosition)是否使用了 nonReentrant 修饰符。
ERC4626 利率通胀攻击:检查是否有“最小流动性锁定”(mint 1000 wei burn) 或“虚拟偏移量”机制,防止首笔存款通胀攻击。USDT 兼容性:使用 SafeERC20 库处理转账,确保兼容无返回值的代币。代币白名单:检查是否允许 Rebase 或通缩代币进入。若允许,检查系统是否基于 balanceOf 差值记账而非参数金额。入口唯一性:检查底层合约(Vault/PositionManager) 的关键写操作是否只允许 Router 或 Executor 调用,防止绕过费率/价格检查。...
治理升级与权限审计
Timelock 完备性:关键参数(如 setGov, withdrawFees)修改是否强制经过 Timelock 且有合理延迟(如 24 小时)。
存储槽冲突检查:如果合约是可升级的(Proxy 模式),检查存储槽(Storage Layout)是否冲突。验证治理提案的阈值:治理决策需满足法定人数和延迟期,避免闪电投票操纵。报告发现参数设置不当可能使治理无效。验证是否可以重复投票:检查投票函数中是否限制一个成员只能进行一次投票或投票用的代币可以进行转移后再次进行投票。初始化函数保护:确保 initialize 函数有 initializer 修饰符,且不能被多次调用。对于实现合约(Implementation),应在构造函数中禁用初始化。权限转移的两步确认:setOwner 或 setGov 应采用 pendingOwner -> acceptOwner 的两步机制,防止将权限误转给错误地址。Copy Trading 风险:若支持跟单功能,检查是否验证了“操作者”拥有“被操作账户”的授权,防止未授权的跟单操作。资金提取权限:IDO 或众筹模块是否遗漏了资金提取(Withdraw) 函数,或者提取逻辑被永久锁定。委托-转发机制逻辑检查:如果协议具有委托给其他角色并由其转发交易的机制,则需要检查被委托者与转发者的权限,以及需要检查转发的数据。例如 from 地址是否可以被外部调用恶意构造,导致非法对其他用户的账户进行交易。角色权责分离:Keeper(执行者)、Liquidator(清算人)、Admin(管理员)权限应严格区分。例如,Keeper 不应有权修改预言机地址。敏感参数范围限制:setMaxLeverage,setFees,setFundingRateFactor 等函数必须有硬编码的上下限(如费用上限不超过 10%),防止管理员恶意或误操作。关键地址零值检查:setGov,setVault 等函数必须检查输入的系统合约地址参数设置正确而非 address(0) 或其他错误的地址,防止权限丢失。铸币/销毁权限审计:检查衍生代币的 mint/burn 函数,确保仅允许特定的合约调用。紧急暂停功能:协议应具备暂停功能,且暂停不应阻止用户提取抵押品或追加保证金(防止爆仓)。核心功能权限检查:对于价格更新、订单更新、仓位更新、提取流动性代币等核心函数需要严格检查权限,禁止外部可以随意更改影响其他用户的数据。
...
其他
Solidity 版本锁定:使用锁定的 Solidity 版本(如 0.8.19 而非 ^0.8.0),避免编译器版本差异引入 Bug。
数学溢出检查:即使 Solidity 0.8+ 自带溢出检查,在涉及 unchecked 块或类型转换(如 int256 转 uint256)时需格外注意,防止溢出。
循环 gas 限制(DoS):例如在批量清算或结算奖励时,避免对无上限的数组进行遍历,防止 Gas Limit 耗尽导致功能永久失效。
事件日志正确性检查:所有状态变更(特别是涉及资金和参数)必须释放 Event,且包含正确的参数,便于链下索引。
外部调用返回值检查:对任何 address.call{value: ...} 的低级调用,必须检查返回值 success。
冗余代码清理:移除未使用的变量、函数和引入的第三方合约,减少攻击面和部署成本。
奖励分发计算:在奖励分发中,检查 rewardPerToken 是否在 totalSupply == 0 时正确处理,防止除零错误。
推荐人机制(Referral) 循环:防止用户将推荐人设置为自己(Self-referral) 或建立循环推荐关系(A->B->A) 进行刷量。...
结论
去中心化永续合约的安全性不仅依赖于 Solidity 代码的健壮性,更取决于金融逻辑的闭环设计。从预言机喂价的毫秒级延迟,到资金池 AUM 计算的微小偏差,任何环节的疏漏都可能被“闪电贷”放大为致命的经济攻击。
审计师应采取对抗式思维,不仅仅验证代码是否符合预期设计,更要假设自己是真实的攻击者,试图通过操纵价格、利用舍入误差或抢跑交易等方式来从协议中套利,从而发现更深层的风险并协助项目方进行修复。
持续监控建议:鉴于 DeFi 乐高属性,建议项目方在主网部署后,建立自动化的链上监控系统或者使用 SlowMist 推出的 MistEye 产品,作为静态代码审计的必要补充。
从入选到落地:MistTrack 在香港数码港区块链与数字资产试点计划中的实践与成果近日,随着多家香港权威媒体陆续发布对香港数码港「区块链与数字资产试点资助计划」首期成果的回顾与总结,慢雾(SlowMist) 自主研发的区块链反洗钱追踪系统 MistTrack,作为入围项目之一,在数字资产安全与合规领域的实践成果亦获得进一步肯定。 MistTrack 的应用进展与阶段性成果 「区块链与数字资产试点资助计划」于今年 6 月正式启动,旨在支持具典范性及高影响力的区块链与数字资产应用在真实环境中测试与落地。计划反应热烈,共收到逾 200 份申请,最终仅有 9 个项目成功入围,首期涉及资产规模超过 1.2 亿港元。数码港区块链及数字资产总监李懿政表示,近半数入围试点产品已成功或正准备商业化,显示该计划在推动创新应用落地方面成效显著。其中,SlowMist 被明确列为“数字资产安全与合规利器”的代表项目。 [MistTrack](https://www.binance.com/zh-CN/square/post/32683189193273) 已成为多家金融机构、交易平台、Web3 项目及合规部门的重要工具。在本次试点资助计划及与 HashKey 等生态伙伴的协作支持下,MistTrack 对产品能力进行了系统性升级,新增包括风险报告快照、智能资金追踪以及特定币种全局分析等进阶功能,可视化呈现复杂链上资金流,大幅提升数字资产交易的风险管理与合规审计效率。 这些能力的提升已在实际场景中产生效果。仅在 2025 年第二季度,MistTrack 便协助 11 起被盗案件成功冻结或追回约 1195 万美元的数字资产。相关调查与分析成果也被联合国安理会、美国财政部、联合国毒品与犯罪问题办公室等多家国际组织采纳,为全球反洗钱与合规协作提供技术支持。 安全是任何资金交易中的核心要素 结合 MistTrack 在真实场景的应用,慢雾香港社区负责人 Tony Tan 在接受香港中通社采访时表示,资金来源调查、反洗钱风险评估和资金溯源分析就像数字资产交易的“护航者”,为交易提供保护,而“安全”显然是所有资金交易中最核心、最重要的因素。 Tony Tan 强调,安全不应仅作为交易完成后的补救措施,而应被嵌入交易全流程之中。“在安全领域,慢即流畅,顺畅即快。”他指出,只有在风险能够被提前识别、资金路径可以被清晰还原的前提下,数字资产交易才能在合规与效率之间实现真正的平衡。 总结 此前,MistTrack 凭借在监管科技领域的创新实践,成功荣获 HKICT Awards FinTech 金奖,印证了其在香港数字资产生态中推动安全、合规与可持续发展的核心价值。 此次多方权威媒体与官方渠道的集中报道,不仅印证了 MistTrack 在数码港试点计划中的实践价值,也反映出香港在构建安全、合规、可持续的数字资产生态方面的坚定方向。未来,慢雾(SlowMist) 将继续深化技术研发与生态合作,推动更智能、更高效的反洗钱与风险追踪能力在香港及全球范围内落地,为数字资产行业的长期健康发展提供坚实支撑。

从入选到落地:MistTrack 在香港数码港区块链与数字资产试点计划中的实践与成果

近日,随着多家香港权威媒体陆续发布对香港数码港「区块链与数字资产试点资助计划」首期成果的回顾与总结,慢雾(SlowMist) 自主研发的区块链反洗钱追踪系统 MistTrack,作为入围项目之一,在数字资产安全与合规领域的实践成果亦获得进一步肯定。

MistTrack 的应用进展与阶段性成果
「区块链与数字资产试点资助计划」于今年 6 月正式启动,旨在支持具典范性及高影响力的区块链与数字资产应用在真实环境中测试与落地。计划反应热烈,共收到逾 200 份申请,最终仅有 9 个项目成功入围,首期涉及资产规模超过 1.2 亿港元。数码港区块链及数字资产总监李懿政表示,近半数入围试点产品已成功或正准备商业化,显示该计划在推动创新应用落地方面成效显著。其中,SlowMist 被明确列为“数字资产安全与合规利器”的代表项目。

MistTrack 已成为多家金融机构、交易平台、Web3 项目及合规部门的重要工具。在本次试点资助计划及与 HashKey 等生态伙伴的协作支持下,MistTrack 对产品能力进行了系统性升级,新增包括风险报告快照、智能资金追踪以及特定币种全局分析等进阶功能,可视化呈现复杂链上资金流,大幅提升数字资产交易的风险管理与合规审计效率。
这些能力的提升已在实际场景中产生效果。仅在 2025 年第二季度,MistTrack 便协助 11 起被盗案件成功冻结或追回约 1195 万美元的数字资产。相关调查与分析成果也被联合国安理会、美国财政部、联合国毒品与犯罪问题办公室等多家国际组织采纳,为全球反洗钱与合规协作提供技术支持。
安全是任何资金交易中的核心要素
结合 MistTrack 在真实场景的应用,慢雾香港社区负责人 Tony Tan 在接受香港中通社采访时表示,资金来源调查、反洗钱风险评估和资金溯源分析就像数字资产交易的“护航者”,为交易提供保护,而“安全”显然是所有资金交易中最核心、最重要的因素。
Tony Tan 强调,安全不应仅作为交易完成后的补救措施,而应被嵌入交易全流程之中。“在安全领域,慢即流畅,顺畅即快。”他指出,只有在风险能够被提前识别、资金路径可以被清晰还原的前提下,数字资产交易才能在合规与效率之间实现真正的平衡。
总结
此前,MistTrack 凭借在监管科技领域的创新实践,成功荣获 HKICT Awards FinTech 金奖,印证了其在香港数字资产生态中推动安全、合规与可持续发展的核心价值。
此次多方权威媒体与官方渠道的集中报道,不仅印证了 MistTrack 在数码港试点计划中的实践价值,也反映出香港在构建安全、合规、可持续的数字资产生态方面的坚定方向。未来,慢雾(SlowMist) 将继续深化技术研发与生态合作,推动更智能、更高效的反洗钱与风险追踪能力在香港及全球范围内落地,为数字资产行业的长期健康发展提供坚实支撑。
Cointelegraph 报道:慢雾(SlowMist)创始人 Cos 谈链上安全的核心——速度与协作近日,全球知名区块链媒体 Cointelegraph 发布名为《Meet the onchain crypto detectives fighting crime better than the cops》的专题报道,聚焦加密安全行业的链上侦探与研究者。慢雾科技(SlowMist) 创始人 Cos(余弦)作为受访者之一,分享了团队在重大安全事件中的处置流程、产品体系,以及对行业安全态势的观察。 速度是安全的第一要务 Cos 在采访中介绍了慢雾(SlowMist) 的标准化事件响应机制。他指出,链上攻击通常具有“扩散快、跨链广、窗口极短”的特征,因此响应速度几乎决定事件最终的损失上限。“事件一发生,我们就会立即开启作战室,目标是尽快追踪、控制并发出警报。”在作战室环境中,团队会根据攻击路径快速分工,例如链上追踪、基础设施分析、域名风险研判和二次攻击监控等。随着事件推进,可信任的项目方、交易所、合作团队和受害者都会陆续加入,共享情报、同步行动,同时严格控制信息外泄风险。Cos 也坦言,在事件初期专业安全团队必须先行一步:“执法机构的介入速度相对较慢,他们需要时间收集证据,而攻击在几分钟内就可能造成巨大损失,所以我们需要速度,必须抢在更大损失发生之前行动。”这也解释了为何行业内的安全团队往往承担最早、最重的响应压力。 这样的应急能力并非凭空而来,而是慢雾(SlowMist) 长期投入产品体系与情报能力建设的结果。例如报道中提到的:[MistTrack](https://www.binance.com/zh-CN/square/post/19048326225930)(慢雾自主研发的链上分析与反洗钱工具,可追踪黑客资金流向,及时识别风险地址,并帮助用户、企业进行合规检查)、MistEye(慢雾自主研发的 Web3 威胁情报与动态安全监控系统,实时发现潜在攻击行为,为项目方和交易所提供预警与防护)。依托这些工具,再结合 InMist Lab(慢雾主导的威胁情报合作网络),慢雾安全团队能够在事件爆发后的关键窗口迅速锁定攻击链路、阻断进一步损失,并向交易所、项目方和合作伙伴提供明确可执行的措施建议,使整体响应效率显著提升。 行业协作仍是关键 报道不仅展示了慢雾(SlowMist) 的防御体系,也呈现了更广泛的行业协作。独立研究者如 ZachXBT、Saiyan、Garcia,以及许多专业安全团队,在链上安全事件中发挥了不可替代的作用:从追踪复杂的链上资金流、分析钓鱼基础设施,到利用 OSINT(公开来源情报)和 HUMINT(人力情报)技术识别潜在的恶意开发者,几乎每一个关键步骤都依赖跨团队、跨区域的密切协作与实时情报共享。 Cos 强调:“攻击者往往利用跨链、跨平台手段进行快速攻击,单靠一个团队很难全面掌握全局。只有通过行业内实时共享情报、同步行动,才能在最短时间内发现异常并阻断损失。”在实际操作中,这意味着项目方、交易所、独立研究者和专业团队需要建立高度信任的沟通渠道,这也是各方愿意在关键时刻开放资源、贡献力量的结果。 同时,Cos 提醒,安全行业的挑战不仅来自技术复杂性,更来自伦理判断的考验。他的 X 账号名为 @evilcos,看似戏谑,却藏着提醒:“你必须决定自己想成为什么样的人。这个行业里的技术既能保护人,也能害人,切勿成为坏人。” 结语 此次 Cointelegraph 的专题报道不仅展现了安全从业者的日常工作,也体现了整个行业在应对风险时展现的协作力量。我们感谢所有并肩作战的研究者、项目方、交易所、合作伙伴,以及愿意主动分享信息的社区成员。安全建设是一项跨生态、长期性的工作,未来我们将继续深化链上追踪、情报分析与应急响应能力,并与行业伙伴共同推动 Web3 生态向更稳健、更可持续的方向发展。 原文报道: https://cointelegraph.com/magazine/meet-crypto-sleuths-fighting-crime-better-than-the-cops/

Cointelegraph 报道:慢雾(SlowMist)创始人 Cos 谈链上安全的核心——速度与协作

近日,全球知名区块链媒体 Cointelegraph 发布名为《Meet the onchain crypto detectives fighting crime better than the cops》的专题报道,聚焦加密安全行业的链上侦探与研究者。慢雾科技(SlowMist) 创始人 Cos(余弦)作为受访者之一,分享了团队在重大安全事件中的处置流程、产品体系,以及对行业安全态势的观察。

速度是安全的第一要务
Cos 在采访中介绍了慢雾(SlowMist) 的标准化事件响应机制。他指出,链上攻击通常具有“扩散快、跨链广、窗口极短”的特征,因此响应速度几乎决定事件最终的损失上限。“事件一发生,我们就会立即开启作战室,目标是尽快追踪、控制并发出警报。”在作战室环境中,团队会根据攻击路径快速分工,例如链上追踪、基础设施分析、域名风险研判和二次攻击监控等。随着事件推进,可信任的项目方、交易所、合作团队和受害者都会陆续加入,共享情报、同步行动,同时严格控制信息外泄风险。Cos 也坦言,在事件初期专业安全团队必须先行一步:“执法机构的介入速度相对较慢,他们需要时间收集证据,而攻击在几分钟内就可能造成巨大损失,所以我们需要速度,必须抢在更大损失发生之前行动。”这也解释了为何行业内的安全团队往往承担最早、最重的响应压力。

这样的应急能力并非凭空而来,而是慢雾(SlowMist) 长期投入产品体系与情报能力建设的结果。例如报道中提到的:MistTrack(慢雾自主研发的链上分析与反洗钱工具,可追踪黑客资金流向,及时识别风险地址,并帮助用户、企业进行合规检查)、MistEye(慢雾自主研发的 Web3 威胁情报与动态安全监控系统,实时发现潜在攻击行为,为项目方和交易所提供预警与防护)。依托这些工具,再结合 InMist Lab(慢雾主导的威胁情报合作网络),慢雾安全团队能够在事件爆发后的关键窗口迅速锁定攻击链路、阻断进一步损失,并向交易所、项目方和合作伙伴提供明确可执行的措施建议,使整体响应效率显著提升。
行业协作仍是关键
报道不仅展示了慢雾(SlowMist) 的防御体系,也呈现了更广泛的行业协作。独立研究者如 ZachXBT、Saiyan、Garcia,以及许多专业安全团队,在链上安全事件中发挥了不可替代的作用:从追踪复杂的链上资金流、分析钓鱼基础设施,到利用 OSINT(公开来源情报)和 HUMINT(人力情报)技术识别潜在的恶意开发者,几乎每一个关键步骤都依赖跨团队、跨区域的密切协作与实时情报共享。
Cos 强调:“攻击者往往利用跨链、跨平台手段进行快速攻击,单靠一个团队很难全面掌握全局。只有通过行业内实时共享情报、同步行动,才能在最短时间内发现异常并阻断损失。”在实际操作中,这意味着项目方、交易所、独立研究者和专业团队需要建立高度信任的沟通渠道,这也是各方愿意在关键时刻开放资源、贡献力量的结果。

同时,Cos 提醒,安全行业的挑战不仅来自技术复杂性,更来自伦理判断的考验。他的 X 账号名为 @evilcos,看似戏谑,却藏着提醒:“你必须决定自己想成为什么样的人。这个行业里的技术既能保护人,也能害人,切勿成为坏人。”
结语
此次 Cointelegraph 的专题报道不仅展现了安全从业者的日常工作,也体现了整个行业在应对风险时展现的协作力量。我们感谢所有并肩作战的研究者、项目方、交易所、合作伙伴,以及愿意主动分享信息的社区成员。安全建设是一项跨生态、长期性的工作,未来我们将继续深化链上追踪、情报分析与应急响应能力,并与行业伙伴共同推动 Web3 生态向更稳健、更可持续的方向发展。
原文报道:
https://cointelegraph.com/magazine/meet-crypto-sleuths-fighting-crime-better-than-the-cops/
900 万美元被盗:Yearn yETH 池漏洞分析作者:九九 & Lisa 编辑:77 背景 2025 年 12 月 1 日,老牌去中心化收益聚合协议 Yearn 遭到攻击,损失约 900 万美元。以下是慢雾安全团队针对此次攻击事件的具体分析: 根本原因 在 Yearn 的 yETH Weighted Stableswap Pool 合约中,计算供应量的函数逻辑(_calc_supply) 由于采用了不安全的数学运算方式,允许计算时出现溢出和舍入的情况,导致在计算新的供应量和虚拟余额乘积时出现严重偏差,最终造成攻击者可以将流动性操控到特定的值后铸造出超出预期数量的 LP 代币获利。 前置知识 yETH 是一个由各种以太坊流动性质押衍生品(LST) 组成的自动做市商池(AMM),用户可以将 LST 存入池中提供流动性并获得 yETH 代币。每种 LST 资产都有一个对应的汇率提供商,资金池中的资产余额乘以利率被称为“虚拟余额”(vb),其计算公式如下: 合约会跟踪一个变量 D,该变量代表资金池在完全平衡状态下的总 LP 供应量。任何对 D 值的增减操作都会相应地增发或销毁等量的 LP 代币(yETH)。这种机制确保了 1:1 的锚定,其计算方式如下: 其中 σ 为各资产虚拟余额的总和(vb_sum), π 为虚拟余额的总乘积(vb_prod)。虚拟余额的总乘积(vb_prod) 会在计算新的供应量时同步更新,计算方式如下: 攻击分析 攻击交易:0x53fe7ef190c34d810c50fb66f0fc65a1ceedc10309cf4b4013d64042a0331156 1. 攻击者首先通过闪电贷借出大量 LST 资产,包括(wstETH、rETH、WETH、0xa35b_ETHx、rETH、wstETH 和 cbETH)。 注意其中一部分的 WETH 被换成 ETH 后存入 Tornado Cash,之后再从 Tornado Cash 提款触发攻击合约的 fallback 函数执行攻击: 2. 在攻击合约中,先通过调用 yETH pool 合约的 update_rates 函数为其中六种 LST 资产更新对应的利率并平衡流动性,紧接着用 800 枚 WETH 兑换出 LP 代币,即 yETH。 3. 之后攻击者进行了连续 5 次的移除后再添加流动性的操作,其中移除流动性时会为燃烧 yETH 并按权重为攻击者赎回池中的 8 种 LST 资产;而在添加流动性时却只会添加其中几个资产的流动性,并不会添加cbETH、 wOETH 和 mETH 的流动性。 而在第五次添加流动性后,虚拟余额的总乘积(vb_prod) 会被更新为 0,供应量 D 值会被更新为与虚拟余额总和(vb_sum) 接近相等的值,比正常预期的要偏大。 那么这是为什么呢?让我们跟进到 calcsupply 函数中进行分析: 该函数用循环的方式迭代计算新的供应量,而在每次循环中又会再循环 8 次进行迭代计算出新的乘积用于下一次循环计算供应量,其中每次循环中计算供应量的算法可以简化为一个式子:s’ = (l - s r) / d,计算乘积的算法可以简化为:r’ = r (s’ / s)^8。 通过用 foundry 模拟攻击交易步骤后的结果,我们可以得知当前供应量(_supply) 约为 2.51e21, 虚拟余额总和(_vb_sum) 约为 1.0903e22,虚拟余额乘积(_vb_prod) 约为 3.5e15, _amplification 为定值 4.5e20。 在第一次循环时,s’ = ((4.5e20 1.0903e22) - 2.51e21 3.5e15) / (4.5e20 - 1e18) ≈ 1.0927e22,r’ =  3.5e15 (1.09e22 / 2.5e21)^8 ≈ 4.57e20。在第二次循环时,s’ = ((4.5e20 1.0903e22) - 1.0927e22 4.57e20) / (4.5e20 - 1e18) ≈ 1.94e18。此处触发本次攻击的核心漏洞,由于在计算新的供应量时分子采用的是 unsafe_sub 函数将 l 和 s r 的值进行相减,而该函数并不会检查是否溢出,从而导致最终的计算出来的值被下溢出成 1.94e18,远远小于之前的供应量。 而在计算新的乘积 r’ 时由于此时的 s’ 远小于 s,导致计算出来新的虚拟余额总乘积(vb_prod) 会因为向下舍入等于 0。 因为新的乘积 r’ 被舍入到 0,所以后续所有循环中供应量计算出来的值都会恒等于一个定值:s’ = ((4.5e20 * 1.0903e22) - 0) / (4.5e20 - 1e18) ≈ 1.0927e22。最终计算出来的 LP 总供应量(约等于 1.0927e22 )以及虚拟余额乘积(等于 0)会被更新到合约存储中,并为攻击者铸造偏差后的 yETH。 紧接着攻击者在虚拟余额乘积和总供应量被操控的情况下,再次用 cbETH 添加单边流动性,使得这两次添加流动性为攻击者铸造出了超出预期数量的 yETH。 4. 随后攻击者通过移除流动性(数量为 0)的方式来恢复虚拟余额的总乘积(vb_prod) 为非零值,首先让我们跟进到 remove_liquidity 函数中: 我们可以看到在移除流动性时即使传入的 LP 数量为 0,也会重新计算虚拟余额的总乘积并进行更新,计算公式为: 其中 D 为总供应量的值,wi 为每个资产各自的权重,vbi 为每个资产减去赎回数量后新的虚拟余额,由于传入的 LP 数量为 0 所以此处依旧等于之前的虚拟余额,最终计算出来后的虚拟余额总乘积(vb_prod) 的值约为 9.09e19,虚拟余额总和与总供应量没变,依旧等于上一次单边添加流动性后的值(vb_sum ≈ 1.0926e22, supply ≈ 1.095e22)。 紧接着调用 update_rates 函数更新 wOETH 资产的兑换利率,跟进到 update_rates 函数中: 首先会先从利率提供者地址获取 wOETH 最新的兑换利率,如果利率有变化的话会用这个新的兑换利率更新虚拟余额总乘积(vb_prod)、资产对应的虚拟余额、虚拟余额总和,之后就会调用 updatesupply 函数更新 LP 总供应量。这也就说明了为什么先前循环移除/添加流动性时不为 wOETH 添加流动性,因为如果利率有变化的话会在在添加流动性时就调用 updaterates 函数将利率进行更新。而只有在这一步中才是需要利用一个利率差去将操控的 vb_prod 和供应量恢复。 在其中依旧会调用 calc supply 函数计算新的供应量和虚拟余额总乘积,由于虚拟余额已经经过上面的操作恢复为一个非零的值,所以最终计算出来的供应量要小于先前的供应量,并为合约燃烧掉这部分的 yETH。 至此,虚拟余额总乘积(vb_prod)、虚拟余额总和(vb_sum) 和总供应量的值被更新为以下值:vb_prod ≈ 4.34e19、vb_sum ≈ 1.0926e22、supply ≈ 9.98e21。 5. 之后攻击者将上面两次添加流动性铸造的 LP 代币通过 remove_liquidity 函数全部赎回,由于这部分 LP 是在第三步放大操控供应量时所铸造的,而赎回时是在第四步恢复并减少供应量时赎回的,所以攻击者可以赎回比正常预期更多的代币,以此来削减池子中的资产余额和供应量。 攻击者用相同的手法再次进行了循环操控,以此逐渐削减 LP 的供应量和虚拟余额。注意其中调用了 OETHVaultCore 合约的 rebase 函数,其目的是为了让 wOETH 的兑换利率进行更新,以此让 update_rates 函数能再次获取到新的利率并恢复虚拟总和乘积和供应量的值。 在最后一次操控完后,攻击者在移除流动性之后能直接将池子中的所有资产给清空,使得虚拟余额总乘积(vb_prod)、虚拟余额总和(vb_sum) 以及总供应量的值全部为 0。 6. 在池子被完全清空的情况下,攻击者开始向空池中添加粉尘流动性: 由于底层 8 种 LSD 资产的利率都接近 1e18,那么在添加粉尘数量的代币后,每个资产的虚拟余额会直接等于代币的数量。在供应量为 0 的情况下,添加流动性时会调用内部的 calcvb_prod_sum 函数重新计算虚拟余额总乘积(vb_prod)、虚拟余额总和以及当前总供应量的值: 紧接着会将这些值传入 calcsupply 函数中计算新的供应量,即给攻击者铸造的 LP 数量,在 calcsupply 函数中某次迭代循环计算 supply 时同样会因为 unsafe_mul 溢出导致计算出来后的 supply 为一个数量级巨大的值(2.354e56),并为攻击者铸造对应数量的 yETH 代币。 7. 最后攻击者通过 AMM 将 yETH 直接卖出兑换,并归还闪电贷获利。 MistTrack 分析 据链上追踪 & 反洗钱工具 MistTrack 分析,攻击者在本次事件中获利约 900 万美元,初始资金来自 Railgun 转入的少量 ETH。 攻击者发起攻击后,先是将 1,100 ETH 转入了 Tornado Cash,其中 100 ETH 被提取用于进一步利用: 剩余约 600 万美元的获利资金(包括 128 ETH、48.96 cbETH、203.55 rETH、742.63 frxETH、857.48 pxETH、167.67 stETH)则被集中转移到地址 0xa80d3f2022f6bfd0b260bf16d72cad025440c822: 值得注意的是,后续 Yearn 通过销毁黑客持有的 pxETH,成功追回了 240 万美元资金, 857.48 pxETH 已重新铸造并返还至 Redacted Cartel 多签钱包。 MistTrack 已对相关地址进行标记,并将持续监控资金异动。 总结 本次攻击的核心在于攻击者利用了 Yearn 协议的 yETH Weighted Stableswap Pool 合约在添加流动性时计算 LP 供应量的实现逻辑中存在的不安全的数学运算方式所导致的溢出和舍入缺陷。通过精心构造特定的虚拟余额和供应量数值放大这个缺陷带来的误差,使得攻击者可以铸造出巨额的 LP 代币来获利。慢雾安全团队建议项目方/审计人员在面对类似场景时应当加强对极端场景和边界条件的覆盖测试,在计算核心变量时采用安全的数学运算方式并进行检查,以防止溢出等严重漏洞影响协议安全。 参考 https://github.com/banteg/yeth-exploit/blob/main/report.pdf

900 万美元被盗:Yearn yETH 池漏洞分析

作者:九九 & Lisa
编辑:77
背景

2025 年 12 月 1 日,老牌去中心化收益聚合协议 Yearn 遭到攻击,损失约 900 万美元。以下是慢雾安全团队针对此次攻击事件的具体分析:

根本原因
在 Yearn 的 yETH Weighted Stableswap Pool 合约中,计算供应量的函数逻辑(_calc_supply) 由于采用了不安全的数学运算方式,允许计算时出现溢出和舍入的情况,导致在计算新的供应量和虚拟余额乘积时出现严重偏差,最终造成攻击者可以将流动性操控到特定的值后铸造出超出预期数量的 LP 代币获利。
前置知识
yETH 是一个由各种以太坊流动性质押衍生品(LST) 组成的自动做市商池(AMM),用户可以将 LST 存入池中提供流动性并获得 yETH 代币。每种 LST 资产都有一个对应的汇率提供商,资金池中的资产余额乘以利率被称为“虚拟余额”(vb),其计算公式如下:

合约会跟踪一个变量 D,该变量代表资金池在完全平衡状态下的总 LP 供应量。任何对 D 值的增减操作都会相应地增发或销毁等量的 LP 代币(yETH)。这种机制确保了 1:1 的锚定,其计算方式如下:

其中 σ 为各资产虚拟余额的总和(vb_sum), π 为虚拟余额的总乘积(vb_prod)。虚拟余额的总乘积(vb_prod) 会在计算新的供应量时同步更新,计算方式如下:

攻击分析

攻击交易:0x53fe7ef190c34d810c50fb66f0fc65a1ceedc10309cf4b4013d64042a0331156
1. 攻击者首先通过闪电贷借出大量 LST 资产,包括(wstETH、rETH、WETH、0xa35b_ETHx、rETH、wstETH 和 cbETH)。

注意其中一部分的 WETH 被换成 ETH 后存入 Tornado Cash,之后再从 Tornado Cash 提款触发攻击合约的 fallback 函数执行攻击:

2. 在攻击合约中,先通过调用 yETH pool 合约的 update_rates 函数为其中六种 LST 资产更新对应的利率并平衡流动性,紧接着用 800 枚 WETH 兑换出 LP 代币,即 yETH。

3. 之后攻击者进行了连续 5 次的移除后再添加流动性的操作,其中移除流动性时会为燃烧 yETH 并按权重为攻击者赎回池中的 8 种 LST 资产;而在添加流动性时却只会添加其中几个资产的流动性,并不会添加cbETH、 wOETH 和 mETH 的流动性。

而在第五次添加流动性后,虚拟余额的总乘积(vb_prod) 会被更新为 0,供应量 D 值会被更新为与虚拟余额总和(vb_sum) 接近相等的值,比正常预期的要偏大。
那么这是为什么呢?让我们跟进到 calcsupply 函数中进行分析:

该函数用循环的方式迭代计算新的供应量,而在每次循环中又会再循环 8 次进行迭代计算出新的乘积用于下一次循环计算供应量,其中每次循环中计算供应量的算法可以简化为一个式子:s’ = (l - s r) / d,计算乘积的算法可以简化为:r’ = r (s’ / s)^8。
通过用 foundry 模拟攻击交易步骤后的结果,我们可以得知当前供应量(_supply) 约为 2.51e21, 虚拟余额总和(_vb_sum) 约为 1.0903e22,虚拟余额乘积(_vb_prod) 约为 3.5e15, _amplification 为定值 4.5e20。
在第一次循环时,s’ = ((4.5e20 1.0903e22) - 2.51e21 3.5e15) / (4.5e20 - 1e18) ≈ 1.0927e22,r’ =  3.5e15 (1.09e22 / 2.5e21)^8 ≈ 4.57e20。在第二次循环时,s’ = ((4.5e20 1.0903e22) - 1.0927e22 4.57e20) / (4.5e20 - 1e18) ≈ 1.94e18。此处触发本次攻击的核心漏洞,由于在计算新的供应量时分子采用的是 unsafe_sub 函数将 l 和 s r 的值进行相减,而该函数并不会检查是否溢出,从而导致最终的计算出来的值被下溢出成 1.94e18,远远小于之前的供应量。
而在计算新的乘积 r’ 时由于此时的 s’ 远小于 s,导致计算出来新的虚拟余额总乘积(vb_prod) 会因为向下舍入等于 0。
因为新的乘积 r’ 被舍入到 0,所以后续所有循环中供应量计算出来的值都会恒等于一个定值:s’ = ((4.5e20 * 1.0903e22) - 0) / (4.5e20 - 1e18) ≈ 1.0927e22。最终计算出来的 LP 总供应量(约等于 1.0927e22 )以及虚拟余额乘积(等于 0)会被更新到合约存储中,并为攻击者铸造偏差后的 yETH。
紧接着攻击者在虚拟余额乘积和总供应量被操控的情况下,再次用 cbETH 添加单边流动性,使得这两次添加流动性为攻击者铸造出了超出预期数量的 yETH。

4. 随后攻击者通过移除流动性(数量为 0)的方式来恢复虚拟余额的总乘积(vb_prod) 为非零值,首先让我们跟进到 remove_liquidity 函数中:

我们可以看到在移除流动性时即使传入的 LP 数量为 0,也会重新计算虚拟余额的总乘积并进行更新,计算公式为:

其中 D 为总供应量的值,wi 为每个资产各自的权重,vbi 为每个资产减去赎回数量后新的虚拟余额,由于传入的 LP 数量为 0 所以此处依旧等于之前的虚拟余额,最终计算出来后的虚拟余额总乘积(vb_prod) 的值约为 9.09e19,虚拟余额总和与总供应量没变,依旧等于上一次单边添加流动性后的值(vb_sum ≈ 1.0926e22, supply ≈ 1.095e22)。
紧接着调用 update_rates 函数更新 wOETH 资产的兑换利率,跟进到 update_rates 函数中:

首先会先从利率提供者地址获取 wOETH 最新的兑换利率,如果利率有变化的话会用这个新的兑换利率更新虚拟余额总乘积(vb_prod)、资产对应的虚拟余额、虚拟余额总和,之后就会调用 updatesupply 函数更新 LP 总供应量。这也就说明了为什么先前循环移除/添加流动性时不为 wOETH 添加流动性,因为如果利率有变化的话会在在添加流动性时就调用 updaterates 函数将利率进行更新。而只有在这一步中才是需要利用一个利率差去将操控的 vb_prod 和供应量恢复。

在其中依旧会调用 calc supply 函数计算新的供应量和虚拟余额总乘积,由于虚拟余额已经经过上面的操作恢复为一个非零的值,所以最终计算出来的供应量要小于先前的供应量,并为合约燃烧掉这部分的 yETH。

至此,虚拟余额总乘积(vb_prod)、虚拟余额总和(vb_sum) 和总供应量的值被更新为以下值:vb_prod ≈ 4.34e19、vb_sum ≈ 1.0926e22、supply ≈ 9.98e21。
5. 之后攻击者将上面两次添加流动性铸造的 LP 代币通过 remove_liquidity 函数全部赎回,由于这部分 LP 是在第三步放大操控供应量时所铸造的,而赎回时是在第四步恢复并减少供应量时赎回的,所以攻击者可以赎回比正常预期更多的代币,以此来削减池子中的资产余额和供应量。

攻击者用相同的手法再次进行了循环操控,以此逐渐削减 LP 的供应量和虚拟余额。注意其中调用了 OETHVaultCore 合约的 rebase 函数,其目的是为了让 wOETH 的兑换利率进行更新,以此让 update_rates 函数能再次获取到新的利率并恢复虚拟总和乘积和供应量的值。
在最后一次操控完后,攻击者在移除流动性之后能直接将池子中的所有资产给清空,使得虚拟余额总乘积(vb_prod)、虚拟余额总和(vb_sum) 以及总供应量的值全部为 0。

6. 在池子被完全清空的情况下,攻击者开始向空池中添加粉尘流动性:

由于底层 8 种 LSD 资产的利率都接近 1e18,那么在添加粉尘数量的代币后,每个资产的虚拟余额会直接等于代币的数量。在供应量为 0 的情况下,添加流动性时会调用内部的 calcvb_prod_sum 函数重新计算虚拟余额总乘积(vb_prod)、虚拟余额总和以及当前总供应量的值:

紧接着会将这些值传入 calcsupply 函数中计算新的供应量,即给攻击者铸造的 LP 数量,在 calcsupply 函数中某次迭代循环计算 supply 时同样会因为 unsafe_mul 溢出导致计算出来后的 supply 为一个数量级巨大的值(2.354e56),并为攻击者铸造对应数量的 yETH 代币。

7. 最后攻击者通过 AMM 将 yETH 直接卖出兑换,并归还闪电贷获利。

MistTrack 分析
据链上追踪 & 反洗钱工具 MistTrack 分析,攻击者在本次事件中获利约 900 万美元,初始资金来自 Railgun 转入的少量 ETH。

攻击者发起攻击后,先是将 1,100 ETH 转入了 Tornado Cash,其中 100 ETH 被提取用于进一步利用:

剩余约 600 万美元的获利资金(包括 128 ETH、48.96 cbETH、203.55 rETH、742.63 frxETH、857.48 pxETH、167.67 stETH)则被集中转移到地址 0xa80d3f2022f6bfd0b260bf16d72cad025440c822:

值得注意的是,后续 Yearn 通过销毁黑客持有的 pxETH,成功追回了 240 万美元资金, 857.48 pxETH 已重新铸造并返还至 Redacted Cartel 多签钱包。

MistTrack 已对相关地址进行标记,并将持续监控资金异动。

总结
本次攻击的核心在于攻击者利用了 Yearn 协议的 yETH Weighted Stableswap Pool 合约在添加流动性时计算 LP 供应量的实现逻辑中存在的不安全的数学运算方式所导致的溢出和舍入缺陷。通过精心构造特定的虚拟余额和供应量数值放大这个缺陷带来的误差,使得攻击者可以铸造出巨额的 LP 代币来获利。慢雾安全团队建议项目方/审计人员在面对类似场景时应当加强对极端场景和边界条件的覆盖测试,在计算核心变量时采用安全的数学运算方式并进行检查,以防止溢出等严重漏洞影响协议安全。
参考
https://github.com/banteg/yeth-exploit/blob/main/report.pdf
警惕 Solana 钓鱼攻击:钱包 Owner 权限被篡改作者:Lisa & Johan 编辑:77 背景 近期,我们接到一位用户的求助,其在当日遭遇钓鱼攻击。该用户发现钱包中存在异常授权记录,试图撤销授权却无法完成,并提供了受影响的钱包地址 9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb。我们通过链上分析发现,该用户的账户 Owner 权限已被转移至地址 GKJBELftW5Rjg24wP88NRaKGsEBtrPLgMiv3DhbJwbzQ。此外,该用户已有超过价值 300 万美金的资产被盗,另外价值约 200 万美金的资产存于 DeFi 协议中但无法转移(目前该部分价值约 200 万美金的资产已在相关 DeFi 的协助下援救成功)。 受害者曾尝试从该账户向自身地址发起转账以验证权限,但所有交易均失败。这一情况与 TRON 生态中频繁出现的“[恶意多签](https://www.binance.com/zh-CN/square/post/11757510788050)”攻击具有高度相似性。换言之,这起攻击并不是传统意义的“授权被盗”,而是核心权限(Owner 权限)被攻击者替换,导致受害者即便想转账、撤销授权或操作 DeFi 资产,也毫无办法。资金虽“看得见”,但已无法控制。 Solana Owner 修改机制 攻击者利用了两种反直觉的场景成功诱骗了用户点击: 1、通常交易签名时,钱包会模拟运行交易的执行结果,如果有资金变化那么会显示在交互界面上,而攻击者精心构造的交易没有资金变化; 2、传统的以太坊 EOA 账号是私钥控制所有权,主观上不清楚 Solana 存在可以修改账号所有权的特性; 下面我们来分析一下 Solana Owner 修改究竟是一种什么样的操作。 账号所有权 通常我们用钱包创建账号时,Owner 是系统账号(11111111111111111111111111111111),在交易时需要通过系统验证交易签名是否由对应的公钥签署而来的。用 Solana Account 命令可以查看账号的基本信息: 还有一种账号称为 PDA 账号,它是由智能合约派生的账号,主要用于存储智能合约数据,它的 Owner 是派生它的智能合约,例如:用于保存 Token 发行和持有信息的账号就是一种 PDA 账号,用 Solana Account 查看账号基本信息时可以看到它的 Owner 是 Token 智能合约 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA: 这两种账号都可以修改 Owner,但有不同的规则和限制: 普通账号 无法在外部通过命令或脚本直接修改 Owner,但可以通过智能合约调用进行修改,关键指令如下:    let assign_ix = system_instruction::assign(         account_to_assign.key,         &new_owner,     ); assign 指令将账户的 Owner 从当前值改为 new_owner,部署程序后,使用 Solana CLI 或客户端(如 Solana Web3.js)调用这个指令。本次钓鱼事件正是利用这一特性诱导受害者主动签名含有 assign 指令的交易,从而悄无声息地完成了受害者钱包地址 Owner 的转移。 PDA 账号 简单来说 PDA 账号可以修改 Owner,但要求账号的 data 为空,同样是通过 assign 指令进行操作,我们简单测试了一下几种场景下修改 Owner 的反馈: 1. 新创建的 PDA 账号,可以任意指定 Owner,如果 Owner 不为创建它的 Program,那么 Program 无写入权限。 2. 创建完成的 PDA 账号试图修改 Owner 时报错:instruction illegally modified the program id of an account。 3. PDA 账号最终 assign 之前试图写入数据:instruction modified data of an account it does not own。 账号被修改 Owner 后用户就失去了账号的控制权,攻击者可以通过 CPI 调用的方式转移账号资产。 还有一种常见的所有权变更,那就是 Token 账号的所有权,本质上这是一种智能合约内逻辑控制的所有权,不是由 Solana 底层逻辑控制,但它也经常被用于钓鱼攻击,广大用户应警觉这类钓鱼攻击方式。 MistTrack 分析 根据链上追踪 & 反洗钱工具 MistTrack 对受害者地址 9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb 的分析,本次攻击资金转移路径复杂,攻击者主要通过两个核心地址对资产分流:BaBcXDg…(流向 1)、7pSj1R…(流向 2)。 流向 1:BaBcXDgbPgn85XtEQK7TZV8kZuFpT4iWVAs4QJoyNSmd 第一条主要路径涉及约 238 万美元等值资产,核心特征为“多层级扩散 + CEX 分散入金 + 多地址中转”。攻击者通过该地址将接收的多种代币(包括 PAYAI、CASH、CARDS、JitoSOL、POLYFACTS、PUMP、PYUSD、CAP)兑换为 SOL。其中,PUMP 是被转移至 7E4eNkK… 后再兑换为 SOL。 兑换后的 SOL 主要流向如下: 1)717.5 SOL 转移至 YDrMfsB…,部分 SOL 转入 Binance 平台,剩余资金分散并停留在约 4 个中转地址。 2)7,556.89 SOL + 2,218 SOL(来自 PUMP 兑换)统一汇聚至 7E4eNkK…,随后部分 SOL 转入 Letsexchange 平台,5,050.93 SOL 转入 FyB2jDJbTdmW…,剩余资金分散并停留在约 13 个中转地址。 3)2,161.88 SOL + 上述 5,050.93 SOL 在 FyB2jD… 进一步分散,分别被转入多个平台(HTX、Binance、Kucoin、ChangeNOW、Changelly),并有部分流入一个未知地址(25nULbv…),剩余资金分散并停留在约 25 个中转地址。 4)2,053 SOL 转移至 6qdtH5D…,部分 SOL 转入 Letsexchange 平台,剩余资金分散并停留在约 15 个中转地址。 5)20 SOL 转移至 5rJdvkp…,再转移并停留在地址 2etvjZH…。 6)2,142 SOL 转移至 2xFzAda…,352 SOL 转入 Binance 平台,200 SOL 转入 Letsexchange 平台,剩余资金分散并停留在约 11 个中转地址。 流向 2:7pSj1RxHf77G3XeisvnNAtbyx5AFjYPcChswWhZe9bM8 第二条主要路径涉及约 79 万美元等值资产,核心特征为“跨链与多链循环兑换”。攻击者同样将接收的多种代币兑换为 SOL,其中 JitoSOL、PUMP 与 POLYFACTS 占比较高。 兑换后的 SOL 主要流向如下: 5,742 SOL 转移至 FiywJZ2Z…,该地址同时收到了被 MistTrack 标记为“Phishing”的其他钓鱼事件地址的 2772.8 SOL。 其中,攻击者通过 Relay.link 将 8,579.92 SOL 兑换为 ETH 并跨链至 Arbitrum 地址 0xDCFa6f…,再通过 1inch 将资金兑换为 SOL 并跨链到多个 Solana 地址,然后再使用 1inch 进行反复跨链,此处不多赘述。 FiywJZ2Z… 将剩余的 215.89 SOL 转移至 Ah5Rs916…,然后兑换为 29,875 USDC。USDC 被分别以 5000、5000、5000、5000、19,875.38 的数值通过 Relay.link 兑换为 DAI 并跨链至 Base 和 Ethereum 地址 0xd2c1c2A…,其中有两笔 5000 USDC 被退回,目前 DAI 均未转出。 DeFi 资产援救 此外,受害者在 DeFi 中的剩余资产在多方协助下得以成功提取,并通过地址 fgR5PJF… 完成了转移,包括约 217 万 PYUSD 与 4548 USDC: 本次资金流向清晰展现出攻击者的行为模式:快速分散、多地址跳转、多平台混合、跨链循环、CEX 入金与 DeFi 资产再利用同时进行,构建出多层级、跨生态的洗钱网络,极大增加追踪难度,目前 MistTrack 已对所有相关地址进行标记。 如何预防类似攻击? 对普通用户来说,此类攻击其实本质上就是“钓鱼攻击”。攻击者会用各种方式包装链接,比如空投、奖励、任务、提前测试资格、甚至假装是官方公告,让人以为只是做个简单操作,但实际上弹出的签名里藏着修改 Owner 等高危权限。一旦签了,钱包基本就被接管了。所以最重要的预防方法,就是在点链接和点“签名”之前多想一下:来源是不是可信?这个页面是不是官方的?这个签名到底在做什么?如果钱包弹出的内容你完全看不懂,或者里面突然出现一些奇怪的权限、陌生的地址、莫名其妙需要你授权的地方,那就一定要停下来,千万不要硬着头皮点确认。 平时也尽量不要用存着大额资产的钱包到处交互。做任务、玩项目、领空投可以专门准备一个“低余额、只用于交互”的小号,把真正的重要资产放在独立的钱包甚至冷钱包里,就算误签了也能把损失降到最低。另外,尽量少给“无限授权”,能限制范围、限制金额就限制一下,减少让攻击者可以长期滥用的空间。 总之,多看一眼、多确认一次、不乱点、不乱签,给自己留层保护;大额资产分离存放、小号负责交互,大号只负责保管;遇到异常立刻停下,不要抱着侥幸心理。只要做到这些,被这类钓鱼攻击的风险就能大幅降低。最后,非常推荐阅读《区块链黑暗森林自救手册》(https://darkhandbook.io/)。

警惕 Solana 钓鱼攻击:钱包 Owner 权限被篡改

作者:Lisa & Johan
编辑:77
背景
近期,我们接到一位用户的求助,其在当日遭遇钓鱼攻击。该用户发现钱包中存在异常授权记录,试图撤销授权却无法完成,并提供了受影响的钱包地址 9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb。我们通过链上分析发现,该用户的账户 Owner 权限已被转移至地址 GKJBELftW5Rjg24wP88NRaKGsEBtrPLgMiv3DhbJwbzQ。此外,该用户已有超过价值 300 万美金的资产被盗,另外价值约 200 万美金的资产存于 DeFi 协议中但无法转移(目前该部分价值约 200 万美金的资产已在相关 DeFi 的协助下援救成功)。

受害者曾尝试从该账户向自身地址发起转账以验证权限,但所有交易均失败。这一情况与 TRON 生态中频繁出现的“恶意多签”攻击具有高度相似性。换言之,这起攻击并不是传统意义的“授权被盗”,而是核心权限(Owner 权限)被攻击者替换,导致受害者即便想转账、撤销授权或操作 DeFi 资产,也毫无办法。资金虽“看得见”,但已无法控制。
Solana Owner 修改机制
攻击者利用了两种反直觉的场景成功诱骗了用户点击:
1、通常交易签名时,钱包会模拟运行交易的执行结果,如果有资金变化那么会显示在交互界面上,而攻击者精心构造的交易没有资金变化;
2、传统的以太坊 EOA 账号是私钥控制所有权,主观上不清楚 Solana 存在可以修改账号所有权的特性;
下面我们来分析一下 Solana Owner 修改究竟是一种什么样的操作。
账号所有权
通常我们用钱包创建账号时,Owner 是系统账号(11111111111111111111111111111111),在交易时需要通过系统验证交易签名是否由对应的公钥签署而来的。用 Solana Account 命令可以查看账号的基本信息:
还有一种账号称为 PDA 账号,它是由智能合约派生的账号,主要用于存储智能合约数据,它的 Owner 是派生它的智能合约,例如:用于保存 Token 发行和持有信息的账号就是一种 PDA 账号,用 Solana Account 查看账号基本信息时可以看到它的 Owner 是 Token 智能合约 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA:
这两种账号都可以修改 Owner,但有不同的规则和限制:
普通账号
无法在外部通过命令或脚本直接修改 Owner,但可以通过智能合约调用进行修改,关键指令如下:
   let assign_ix = system_instruction::assign(
        account_to_assign.key,
        &new_owner,
    );
assign 指令将账户的 Owner 从当前值改为 new_owner,部署程序后,使用 Solana CLI 或客户端(如 Solana Web3.js)调用这个指令。本次钓鱼事件正是利用这一特性诱导受害者主动签名含有 assign 指令的交易,从而悄无声息地完成了受害者钱包地址 Owner 的转移。
PDA 账号
简单来说 PDA 账号可以修改 Owner,但要求账号的 data 为空,同样是通过 assign 指令进行操作,我们简单测试了一下几种场景下修改 Owner 的反馈:
1. 新创建的 PDA 账号,可以任意指定 Owner,如果 Owner 不为创建它的 Program,那么 Program 无写入权限。
2. 创建完成的 PDA 账号试图修改 Owner 时报错:instruction illegally modified the program id of an account。
3. PDA 账号最终 assign 之前试图写入数据:instruction modified data of an account it does not own。
账号被修改 Owner 后用户就失去了账号的控制权,攻击者可以通过 CPI 调用的方式转移账号资产。
还有一种常见的所有权变更,那就是 Token 账号的所有权,本质上这是一种智能合约内逻辑控制的所有权,不是由 Solana 底层逻辑控制,但它也经常被用于钓鱼攻击,广大用户应警觉这类钓鱼攻击方式。
MistTrack 分析
根据链上追踪 & 反洗钱工具 MistTrack 对受害者地址 9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb 的分析,本次攻击资金转移路径复杂,攻击者主要通过两个核心地址对资产分流:BaBcXDg…(流向 1)、7pSj1R…(流向 2)。
流向 1:BaBcXDgbPgn85XtEQK7TZV8kZuFpT4iWVAs4QJoyNSmd
第一条主要路径涉及约 238 万美元等值资产,核心特征为“多层级扩散 + CEX 分散入金 + 多地址中转”。攻击者通过该地址将接收的多种代币(包括 PAYAI、CASH、CARDS、JitoSOL、POLYFACTS、PUMP、PYUSD、CAP)兑换为 SOL。其中,PUMP 是被转移至 7E4eNkK… 后再兑换为 SOL。

兑换后的 SOL 主要流向如下:
1)717.5 SOL 转移至 YDrMfsB…,部分 SOL 转入 Binance 平台,剩余资金分散并停留在约 4 个中转地址。

2)7,556.89 SOL + 2,218 SOL(来自 PUMP 兑换)统一汇聚至 7E4eNkK…,随后部分 SOL 转入 Letsexchange 平台,5,050.93 SOL 转入 FyB2jDJbTdmW…,剩余资金分散并停留在约 13 个中转地址。

3)2,161.88 SOL + 上述 5,050.93 SOL 在 FyB2jD… 进一步分散,分别被转入多个平台(HTX、Binance、Kucoin、ChangeNOW、Changelly),并有部分流入一个未知地址(25nULbv…),剩余资金分散并停留在约 25 个中转地址。

4)2,053 SOL 转移至 6qdtH5D…,部分 SOL 转入 Letsexchange 平台,剩余资金分散并停留在约 15 个中转地址。

5)20 SOL 转移至 5rJdvkp…,再转移并停留在地址 2etvjZH…。

6)2,142 SOL 转移至 2xFzAda…,352 SOL 转入 Binance 平台,200 SOL 转入 Letsexchange 平台,剩余资金分散并停留在约 11 个中转地址。

流向 2:7pSj1RxHf77G3XeisvnNAtbyx5AFjYPcChswWhZe9bM8
第二条主要路径涉及约 79 万美元等值资产,核心特征为“跨链与多链循环兑换”。攻击者同样将接收的多种代币兑换为 SOL,其中 JitoSOL、PUMP 与 POLYFACTS 占比较高。

兑换后的 SOL 主要流向如下:
5,742 SOL 转移至 FiywJZ2Z…,该地址同时收到了被 MistTrack 标记为“Phishing”的其他钓鱼事件地址的 2772.8 SOL。

其中,攻击者通过 Relay.link 将 8,579.92 SOL 兑换为 ETH 并跨链至 Arbitrum 地址 0xDCFa6f…,再通过 1inch 将资金兑换为 SOL 并跨链到多个 Solana 地址,然后再使用 1inch 进行反复跨链,此处不多赘述。

FiywJZ2Z… 将剩余的 215.89 SOL 转移至 Ah5Rs916…,然后兑换为 29,875 USDC。USDC 被分别以 5000、5000、5000、5000、19,875.38 的数值通过 Relay.link 兑换为 DAI 并跨链至 Base 和 Ethereum 地址 0xd2c1c2A…,其中有两笔 5000 USDC 被退回,目前 DAI 均未转出。

DeFi 资产援救
此外,受害者在 DeFi 中的剩余资产在多方协助下得以成功提取,并通过地址 fgR5PJF… 完成了转移,包括约 217 万 PYUSD 与 4548 USDC:

本次资金流向清晰展现出攻击者的行为模式:快速分散、多地址跳转、多平台混合、跨链循环、CEX 入金与 DeFi 资产再利用同时进行,构建出多层级、跨生态的洗钱网络,极大增加追踪难度,目前 MistTrack 已对所有相关地址进行标记。
如何预防类似攻击?
对普通用户来说,此类攻击其实本质上就是“钓鱼攻击”。攻击者会用各种方式包装链接,比如空投、奖励、任务、提前测试资格、甚至假装是官方公告,让人以为只是做个简单操作,但实际上弹出的签名里藏着修改 Owner 等高危权限。一旦签了,钱包基本就被接管了。所以最重要的预防方法,就是在点链接和点“签名”之前多想一下:来源是不是可信?这个页面是不是官方的?这个签名到底在做什么?如果钱包弹出的内容你完全看不懂,或者里面突然出现一些奇怪的权限、陌生的地址、莫名其妙需要你授权的地方,那就一定要停下来,千万不要硬着头皮点确认。
平时也尽量不要用存着大额资产的钱包到处交互。做任务、玩项目、领空投可以专门准备一个“低余额、只用于交互”的小号,把真正的重要资产放在独立的钱包甚至冷钱包里,就算误签了也能把损失降到最低。另外,尽量少给“无限授权”,能限制范围、限制金额就限制一下,减少让攻击者可以长期滥用的空间。
总之,多看一眼、多确认一次、不乱点、不乱签,给自己留层保护;大额资产分离存放、小号负责交互,大号只负责保管;遇到异常立刻停下,不要抱着侥幸心理。只要做到这些,被这类钓鱼攻击的风险就能大幅降低。最后,非常推荐阅读《区块链黑暗森林自救手册》(https://darkhandbook.io/)。
美英澳联合打击俄罗斯网络犯罪基础设施 Media Land 与 Aeza Group 作者:77 编辑:77 2025 年 11 月 19 日,美国财政部外国资产控制办公室(OFAC)、澳大利亚外交贸易部(DFAT) 及英国外交、联邦及发展事务部(FCDO) 联合宣布,对俄罗斯多家防弹主机(Bulletproof Hosting, BPH) 服务商及相关个人实施新一轮制裁。原因是其支持包括勒索软件在内的网络犯罪活动。主要制裁对象包括 Media Land 的主要负责人及其关联实体,以及 Aeza Group 的关键成员和相关幌子公司。 (https://home.treasury.gov/news/press-releases/sb0319) 什么是“防弹主机”服务商? 防弹主机服务商是一类专门面向网络犯罪分子的互联网基础设施提供者,通过出租虚拟或物理服务器,为其托管非法内容并开展各类恶意活动。“防弹(Bulletproof)”一词本质上是一种营销手法;这些服务本身并非真正无法打击,而是因为其运营方拒绝遵守执法部门的下架指令,刻意无视滥用投诉、内容封禁通知等,使得其基础设施极难被直接关闭。依托这种高容忍度环境,网络犯罪分子能够在这些基础设施上通信、运营论坛与非法网站、投递恶意软件与钓鱼活动、开展洗钱操作,而无需担心服务会因执法介入而被终止。因此,防弹主机服务商在全球网络犯罪生态中具有高度关键性,既难以直接打击,又对恶意活动的规模与持续性产生深远影响。 制裁详情 Media Land:由 Volosovik 主导的防弹托管网络 Media Land LLC (Media Land) 总部位于俄罗斯圣彼得堡,是典型的防弹主机  (BPH) 服务商,长期为 [LockBit](https://www.binance.com/el/square/post/4502651034410)、BlackSuit、Play 等勒索软件组织提供专用服务器和基础设施,并支持多起大规模 DDoS 攻击。其核心人物 Aleksandr Volosovik(又名 “Ohyeahhellno” “podzemniy1” “Yalishanda”)自 2010 年起就活跃于地下论坛,与 Evil Corp、LockBit、Black Basta 等多个网络犯罪集团保持密切合作。在 Volosovik 的主导下,Media Land 搭建了一套覆盖网络攻击链多个关键环节的托管体系,为地下交易所、洗钱服务、诈骗团伙、黑客以及勒索软件运营者提供稳定的基础设施支撑。 美国财政部指出,Media Land 之所以被列入制裁,是因为其直接或间接参与、或为位于美国境外的人员提供支持,用以实施可能导致或已经导致美国国家安全、外交政策、经济健康或金融稳定受到威胁的恶意网络活动。这些活动的目的通常涉及中断计算机或网络的可用性,或损害其上信息的完整性。 在本次制裁行动中,一个由 Aleksandr Volosovik 直接控制的比特币地址也被 OFAC 列入制裁名单: 慢雾(SlowMist) 旗下反洗钱追踪分析系统 MistTrack 显示,该比特币地址自 2017 年 8 月起持续活跃至 2024 年 11 月,期间共发生 5 次入账,累计接收 0.0524 BTC。 英国方面指出,类似由 Media Land 支撑的恶意基础设施对国家安全构成重大威胁。官方数据显示,网络攻击在 2024 年给英国企业造成的损失高达 147 亿英镑,占 GDP 的 0.5%,并且每年都在增长。 本次被制裁的 Media Land 相关对象包括: 1. 个人(3 名): Aleksandr Volosovik (Volosovik):Media Land 的总经理,他以“Yalishanda”为化名在网络犯罪论坛上推广 Media Land 的非法服务,并为勒索软件及 DDoS 攻击者提供服务器、协助排查故障。Kirill Zatolokin (Zatolokin):Media Land 的员工,负责客户收款并协调其他网络犯罪行为者,同时与 Volosovik 密切合作管理 Media Land 的整体运营。Yulia Pankova (Pankova):Media Land 的员工,知悉 Volosovik 的非法活动并协助其处理法律问题及财务事务。 2. 公司(3 家): ML Cloud:Media Land 的姊妹公司,其技术基础设施常与 Media Land 联合使用,用于支持勒索软件活动和 DDoS 攻击。Media Land Technology (MLT) 和 Data Center Kirishi (DC Kirishi):Media Land 的全资子公司,因受 Media Land 控制或代表其行事而被 OFAC 列入制裁。 Aeza Group:制裁后的隐蔽扩张 Aeza Group (Aeza) 亦总部位于俄罗斯圣彼得堡,以防弹主机业务为核心,长期为 Meduza、Lumma、BianLian、RedLine 等勒索软件和信息窃取组织提供基础设施支持,并托管俄罗斯暗网毒品平台 BlackSprut,使其成为网络犯罪生态系统中关键的基础设施枢纽。由于其服务被用于攻击美国国防工业基地、科技企业及全球范围的受害者,美国财政部外国资产控制办公室(OFAC) 已于 2025 年 7 月将Aeza 及其关联实体列入制裁名单。 在遭到制裁后,Aeza 并未停止运营,而是启动了一系列隐蔽扩张与规避措施。其领导层通过新注册空壳公司、替换品牌名称、搭建境外幌子公司以及迁移 IP 基础设施等方式,试图掩盖实际控制关系并规避监管追踪。部分新设实体继续为同类恶意活动提供托管支持,为勒索软件团伙、信息窃取程序运营者以及暗网市场的基础设施运转提供服务。 在此次制裁中,美英澳三国进一步明确瞄准了 Aeza 的规避体系,将参与相关运营、协助规避监管的关键个人及其所控制的幌子实体一并纳入制裁范围,具体包括: 1. 个人(2 名): Maksim Vladimirovich Makarov (Makarov):Aeza 的新任主管,负责做出关键决策以推动 Aeza 的制裁规避。Ilya Vladislavovich Zakirov (Zakirov):帮助建立新公司和支付方式,以掩盖 Aeza 的持续活动。 2. 公司(3 家): Hypercore Ltd. (Hypercore):Aeza Group 在英国设立的幌子公司,用于迁移 IP 基础设施并规避制裁。Smart Digital Ideas DOO (Smart Digital) 和 Datavice MCHJ (Datavice):分别为塞尔维亚及乌兹别克斯坦公司,被 Aeza 用于规避制裁并建立与 Aeza 品牌无公开关联的技术基础设施。 总结与建议 美英澳三国联合制裁行动清晰传递出一个信号:在全球针对勒索软件及高危网络犯罪的协作持续深化之际,执法部门正将打击重心从个体攻击者进一步延伸至其关键依赖的基础设施层。Media Land、Aeza Group 及其关联实体所提供的防弹主机服务,是众多网络犯罪活动持续运作的隐秘支撑点。随着制裁范围不断扩大,企业与机构需要同步强化内部合规体系,避免因接触到受制裁基础设施、污染资金或关联实体而承担额外风险。 在实际操作中,链上风险监控和合规管理已成为核心环节。企业可通过技术手段,对交易地址、资金来源和关联实体进行实时审查,从而实现前置风险防控。基于多年区块链安全研究和风控实践,慢雾(SlowMist) 旗下反洗钱追踪分析系统 [MistTrack](https://www.binance.com/zh-CN/square/post/19048326225930) 已为多家交易所、企业提供稳定可靠的链上风控支持和强有力的 AML 合规解决方案,并为个人用户、企业团队和开发者提供准确的数据分析、实时的风险监控以及全面的合规支持。 MistTrack 可以: 检测资金来源,筛查是否来自受制裁钱包或高风险地址,避免接收被污染资金;在交易前进行地址审查,防止与受制裁或可疑资金往来,降低被冻结风险。 目前,MistTrack 已积累 4 亿多个地址标签、1000 多家实体、50 万+ 威胁情报数据、9000 万+ 风险地址,为数字资产安全与打击洗钱犯罪提供坚实支撑。更多链上反洗钱实践经验,可参考案例分享文章:[案例分享|MistTrack 助力虚拟资产基金实现反洗钱合规风控。](https://www.binance.com/bg/square/post/30070900142474)如需了解更多信息,请访问 https://aml.slowmist.com,点击阅读原文可直接跳转。 相关链接: https://home.treasury.gov/news/press-releases/sb0319 https://www.cyber.gov.au/sites/default/files/2025-01/Bulletproof-hosting-providers.pdf

美英澳联合打击俄罗斯网络犯罪基础设施 Media Land 与 Aeza Group

作者:77
编辑:77
2025 年 11 月 19 日,美国财政部外国资产控制办公室(OFAC)、澳大利亚外交贸易部(DFAT) 及英国外交、联邦及发展事务部(FCDO) 联合宣布,对俄罗斯多家防弹主机(Bulletproof Hosting, BPH) 服务商及相关个人实施新一轮制裁。原因是其支持包括勒索软件在内的网络犯罪活动。主要制裁对象包括 Media Land 的主要负责人及其关联实体,以及 Aeza Group 的关键成员和相关幌子公司。
(https://home.treasury.gov/news/press-releases/sb0319)
什么是“防弹主机”服务商?
防弹主机服务商是一类专门面向网络犯罪分子的互联网基础设施提供者,通过出租虚拟或物理服务器,为其托管非法内容并开展各类恶意活动。“防弹(Bulletproof)”一词本质上是一种营销手法;这些服务本身并非真正无法打击,而是因为其运营方拒绝遵守执法部门的下架指令,刻意无视滥用投诉、内容封禁通知等,使得其基础设施极难被直接关闭。依托这种高容忍度环境,网络犯罪分子能够在这些基础设施上通信、运营论坛与非法网站、投递恶意软件与钓鱼活动、开展洗钱操作,而无需担心服务会因执法介入而被终止。因此,防弹主机服务商在全球网络犯罪生态中具有高度关键性,既难以直接打击,又对恶意活动的规模与持续性产生深远影响。
制裁详情
Media Land:由 Volosovik 主导的防弹托管网络
Media Land LLC (Media Land) 总部位于俄罗斯圣彼得堡,是典型的防弹主机  (BPH) 服务商,长期为 LockBit、BlackSuit、Play 等勒索软件组织提供专用服务器和基础设施,并支持多起大规模 DDoS 攻击。其核心人物 Aleksandr Volosovik(又名 “Ohyeahhellno” “podzemniy1” “Yalishanda”)自 2010 年起就活跃于地下论坛,与 Evil Corp、LockBit、Black Basta 等多个网络犯罪集团保持密切合作。在 Volosovik 的主导下,Media Land 搭建了一套覆盖网络攻击链多个关键环节的托管体系,为地下交易所、洗钱服务、诈骗团伙、黑客以及勒索软件运营者提供稳定的基础设施支撑。
美国财政部指出,Media Land 之所以被列入制裁,是因为其直接或间接参与、或为位于美国境外的人员提供支持,用以实施可能导致或已经导致美国国家安全、外交政策、经济健康或金融稳定受到威胁的恶意网络活动。这些活动的目的通常涉及中断计算机或网络的可用性,或损害其上信息的完整性。
在本次制裁行动中,一个由 Aleksandr Volosovik 直接控制的比特币地址也被 OFAC 列入制裁名单:

慢雾(SlowMist) 旗下反洗钱追踪分析系统 MistTrack 显示,该比特币地址自 2017 年 8 月起持续活跃至 2024 年 11 月,期间共发生 5 次入账,累计接收 0.0524 BTC。

英国方面指出,类似由 Media Land 支撑的恶意基础设施对国家安全构成重大威胁。官方数据显示,网络攻击在 2024 年给英国企业造成的损失高达 147 亿英镑,占 GDP 的 0.5%,并且每年都在增长。
本次被制裁的 Media Land 相关对象包括:
1. 个人(3 名):
Aleksandr Volosovik (Volosovik):Media Land 的总经理,他以“Yalishanda”为化名在网络犯罪论坛上推广 Media Land 的非法服务,并为勒索软件及 DDoS 攻击者提供服务器、协助排查故障。Kirill Zatolokin (Zatolokin):Media Land 的员工,负责客户收款并协调其他网络犯罪行为者,同时与 Volosovik 密切合作管理 Media Land 的整体运营。Yulia Pankova (Pankova):Media Land 的员工,知悉 Volosovik 的非法活动并协助其处理法律问题及财务事务。

2. 公司(3 家):
ML Cloud:Media Land 的姊妹公司,其技术基础设施常与 Media Land 联合使用,用于支持勒索软件活动和 DDoS 攻击。Media Land Technology (MLT) 和 Data Center Kirishi (DC Kirishi):Media Land 的全资子公司,因受 Media Land 控制或代表其行事而被 OFAC 列入制裁。
Aeza Group:制裁后的隐蔽扩张
Aeza Group (Aeza) 亦总部位于俄罗斯圣彼得堡,以防弹主机业务为核心,长期为 Meduza、Lumma、BianLian、RedLine 等勒索软件和信息窃取组织提供基础设施支持,并托管俄罗斯暗网毒品平台 BlackSprut,使其成为网络犯罪生态系统中关键的基础设施枢纽。由于其服务被用于攻击美国国防工业基地、科技企业及全球范围的受害者,美国财政部外国资产控制办公室(OFAC) 已于 2025 年 7 月将Aeza 及其关联实体列入制裁名单。

在遭到制裁后,Aeza 并未停止运营,而是启动了一系列隐蔽扩张与规避措施。其领导层通过新注册空壳公司、替换品牌名称、搭建境外幌子公司以及迁移 IP 基础设施等方式,试图掩盖实际控制关系并规避监管追踪。部分新设实体继续为同类恶意活动提供托管支持,为勒索软件团伙、信息窃取程序运营者以及暗网市场的基础设施运转提供服务。
在此次制裁中,美英澳三国进一步明确瞄准了 Aeza 的规避体系,将参与相关运营、协助规避监管的关键个人及其所控制的幌子实体一并纳入制裁范围,具体包括:

1. 个人(2 名):
Maksim Vladimirovich Makarov (Makarov):Aeza 的新任主管,负责做出关键决策以推动 Aeza 的制裁规避。Ilya Vladislavovich Zakirov (Zakirov):帮助建立新公司和支付方式,以掩盖 Aeza 的持续活动。

2. 公司(3 家):
Hypercore Ltd. (Hypercore):Aeza Group 在英国设立的幌子公司,用于迁移 IP 基础设施并规避制裁。Smart Digital Ideas DOO (Smart Digital) 和 Datavice MCHJ (Datavice):分别为塞尔维亚及乌兹别克斯坦公司,被 Aeza 用于规避制裁并建立与 Aeza 品牌无公开关联的技术基础设施。
总结与建议
美英澳三国联合制裁行动清晰传递出一个信号:在全球针对勒索软件及高危网络犯罪的协作持续深化之际,执法部门正将打击重心从个体攻击者进一步延伸至其关键依赖的基础设施层。Media Land、Aeza Group 及其关联实体所提供的防弹主机服务,是众多网络犯罪活动持续运作的隐秘支撑点。随着制裁范围不断扩大,企业与机构需要同步强化内部合规体系,避免因接触到受制裁基础设施、污染资金或关联实体而承担额外风险。
在实际操作中,链上风险监控和合规管理已成为核心环节。企业可通过技术手段,对交易地址、资金来源和关联实体进行实时审查,从而实现前置风险防控。基于多年区块链安全研究和风控实践,慢雾(SlowMist) 旗下反洗钱追踪分析系统 MistTrack 已为多家交易所、企业提供稳定可靠的链上风控支持和强有力的 AML 合规解决方案,并为个人用户、企业团队和开发者提供准确的数据分析、实时的风险监控以及全面的合规支持。
MistTrack 可以:
检测资金来源,筛查是否来自受制裁钱包或高风险地址,避免接收被污染资金;在交易前进行地址审查,防止与受制裁或可疑资金往来,降低被冻结风险。
目前,MistTrack 已积累 4 亿多个地址标签、1000 多家实体、50 万+ 威胁情报数据、9000 万+ 风险地址,为数字资产安全与打击洗钱犯罪提供坚实支撑。更多链上反洗钱实践经验,可参考案例分享文章:案例分享|MistTrack 助力虚拟资产基金实现反洗钱合规风控。如需了解更多信息,请访问 https://aml.slowmist.com,点击阅读原文可直接跳转。
相关链接:
https://home.treasury.gov/news/press-releases/sb0319
https://www.cyber.gov.au/sites/default/files/2025-01/Bulletproof-hosting-providers.pdf
威胁情报 |NPM 投毒分析 — Shai-Hulud 攻击重现作者:Joker & Ccj 编辑:77 背景 近日,NPM 社区再次爆发大规模 NPM 包投毒事件,本次事件与 2025 年 9 月的 Shai-Hulud 攻击事件高度相关,本次的 NPM 包中的恶意代码窃取开发者密钥和 API 密钥以及环境变量等敏感信息,利用密钥创建公开仓库并上传这些窃取的敏感信息。 慢雾(SlowMist) 自主研发的 Web3 威胁情报与动态安全监控工具 MistEye 第一时间响应,迅速推送相关威胁情报,为客户提供关键的安全保障。 同时,后台会在第一时间保存恶意样本,并计算其对应的 SHA-256 等特征值。 分析过程 以 @asyncapi/php-template@0.1.1 包为例,在对比旧版本 @asyncapi/php-template@0.1.0 时可以发现,0.1.1 版本比 0.1.1 版本新增了两个 js 文件,为 setup_bun.js 和经过混淆的 bun_environment.js 文件。 在 package.json 中新增了 preinstall 脚本,使得在依赖安装之前会自动执行 setup_bun.js。 在 setup_bun.js 中,首先会去检查系统是否已经安装了 Bun,如果未安装,会自动从官方下载并安装 Bun,并且正确设置环境变量以便找到 Bun 可执行文件。 最后使用 bun 执行 bun_environment.js 文件,该 bun_environment.js 是一个经过高度混淆的恶意文件。 经过将恶意脚本的部分代码反混淆后,可知 aL0() 是整个恶意脚本的主入口函数,大概的可以看出此恶意脚本进行了敏感信息的窃取,会先对运行环境进行检查是否存在 NPM 或 GitHub 等凭据,若检测到这些凭据,它会利用 NPM 凭据进行供应链传播,并且所有收集到的系统信息和敏感数据最终会被打包并上传到攻击者控制的 GitHub 仓库,用于后续利用。 凭据窃取 AWS:该恶意脚本实现 runSecrets() 和 listAndRetrieveAllSecrets() 方法,runSecrets() 方法会遍历所有能找到的云访问凭据以及所有可能的区域,最大化扫描范围;而 listAndRetrieveAllSecrets() 则在指定凭据与区域内进行“深度挖掘”,遍历出所有 Secret,并获取其最新明文内容。两者配合后,攻击者能够将受害者 AWS 账号中可访问的所有 SecretString 和 SecretBinary 一次性全部导出。 而 enumerateValidCredentials() 方法主要用来全面搜集所有能用的云服务密钥。它会从环境变量、配置文件、CLI 登录等各种来源逐一尝试,凡是能成功验证的凭据都会被记录下来,供后续窃取云端机密时使用。 GCP:该恶意脚本中实现的另一个 listAndRetrieveAllSecrets() 方法主要是针对 GCP 模块,它会先根据指定的 Project ID 列出该 GCP 项目下所有的 Secret,然后直接定位每个 Secret 的最新版本,并调用 accessSecretVersion 读取其明文内容。最终将所有获取到的机密(如 API Key、数据库密码等)逐一收集起来。 Azure:该恶意脚本中实现的另一个 listAndRetrieveAllSecrets() 方法主要专门针对 Azure 模块。它会先通过 Azure Resource Manager 扫描整个订阅,找出所有 Key Vault;随后使用获得的凭据逐一连接每个 Vault;最后枚举其中的所有 Secrets,并调用 getSecret 获取每个机密的明文值。 在窃取敏感信息的实现中,还使用合法的安全工具来攻击受害者。在 extractAndInstall() 方法中,解压并提取出 TruffleHog 的二进制文件,TruffleHog 本是用于在代码库中检测和验证泄漏的机密信息,如 API 密钥和凭证,则被攻击者使用来对受害者的整个文件系统进行扫描。 NPM 供应链传播 该恶意脚本实现了个 updatePackage() 函数用于进行 NPM 供应链传播。首先使用窃取的 NPM Token,下载受害者拥有发布权限的合法 NPM 包的源代码,然后修改 package.json 文件,在 scripts 字段中插入恶意的 preinstall 脚本命令。同时将恶意脚本放入包中,自动将包的版本号加 1,以触发用户的自动更新,将带有恶意脚本的 NPM 包推送到 NPM 官方仓库中。 后门与 C2 在窃取完信息后,将利用窃取的 GitHub Token 在其账号下创建一个随机名称的仓库,并获取注册令牌,将受害者的电脑伪装成该仓库的自托管 GitHub Actions Runner。随后,攻击者在仓库中植入恶意工作流,使得任何被触发的 Actions 任务都会在受害者机器上执行,从而实现远程代码执行。 并把这些窃取的信息经过双重 base64 加密上传到创建的仓库里,这些创建的仓库的描述都是“Sha1-Hulud: The Second Coming.”。 经过解密后可以看到用户泄漏的敏感数据。 总结 本次的 NPM 仓库投毒结合了蠕虫和自托管运行程序的长期持久性且利用了 TruffleHog 进行攻击。慢雾安全团队建议开发者在构建和发布新迭代时,应采用依赖包版本锁定策略。若依赖包存在必要的安全或功能更新,应通过内部严格的安全审计流程进行更新,并同步更新锁定版本,避免盲目更新引入新的风险。 如需获取更多关于 APT 情报、依赖投毒情报等安全信息,您可以联系我们采购 Web3 威胁情报与动态安全监控工具 MistEye,获取最新安全情报,快速识别威胁并及时阻断攻击。 官网:https://misteye.io/ 联系方式:https://www.slowmist.com/contact-us.html IoCs SHA256: aad1fec103eef1900ec585a5e1ce2385a9db2670b33905be2abae88d79b8c0ce  - 02-echo-0.0.7.tgz 445389cf177800ae5b6f4a1598321bd2bcc754f0ad6bab90925d95e880d7c375  - accordproject_concerto-linter-default-ruleset-3.24.1.tgz 28fa0c058f71c92e1324f1666bfb08aa602ce3ff2122fe974c1fc289f35e43bf  - accordproject_concerto-metamodel-3.12.5.tgz 4974f4c2ff5ab13f2a46d68bc3debf46c2fb2b824c2382174ad1c5626e89e8e7  - accordproject_concerto-types-3.24.1.tgz 0ba18c71df931d80d4dc3215ca3cb390108b999cd500bd3703920f62c8ec304e  - accordproject_markdown-it-cicero-0.16.26.tgz 1de993d72430bb91af57cb670a19ab9c40c9faf1de5cf61b8ebba2995c16d7c1  - accordproject_template-engine-2.7.2.tgz 672cb4f2dab1a6d21093351c20b1759723f4e8743b9f842f964ae52d28236d89  - actbase_css-to-react-native-transform-1.0.3.tgz 347bdade8ef691f09971c49aa3471e742c769a44a4d57c4ea59abae9af2f842e  - actbase_native-0.1.32.tgz 70becf47c6dd344dbad5d09ffd904065fefed876f27bfad1eb402a6cf2bd071d  - actbase_node-server-1.1.19.tgz 046fc52b4b35e9c67062b102d2eacbe30df02ae5e10f0982deab95e31b8918c5  - actbase_react-absolute-0.8.3.tgz 644fe573cd198dbe536a62ee59308b0df104be7757ffe0efb5c24689ed74774d  - actbase_react-daum-postcode-1.0.5.tgz 82f9b08b7b93f825f6a3ae21dd7317dd945555ba58b58aa64bc1e049ff83238b  - actbase_react-kakaosdk-0.9.27.tgz 4e49d33931644cc522b8951f8eed4b3d9056550ba06ac781e67295ad791bd6b6  - actbase_react-native-actionsheet-1.0.3.tgz deb6f1c1bbe4d77c523ef93f2894224b76ebe3fec3f57f6398d1e111823b5ff5  - actbase_react-native-devtools-0.1.3.tgz aab428f91796ad8b7445f7f6731d47ecdcb18d9138ffd74efcece705304ccb9c  - actbase_react-native-fast-image-8.5.13.tgz 7e26cf1b140a9bcfcd702c4f89ba0aa2d4fe98a7622bc95d39c645945020a9d8  - actbase_react-native-kakao-channel-1.0.2.tgz 971ad7b7186de33a1efe9ff53095b472044555da6c333c49b32b0926eba482b7  - actbase_react-native-kakao-navi-2.0.4.tgz ae1a76f83cd78af6ed246f490caee07cbb5ad2d6547493f98bac111e4027653b  - actbase_react-native-less-transformer-1.0.6.tgz 40f1f40ccc1a6e275be74079a6ae763cc89fb142e641e8573bf83fc14f3cc20b  - actbase_react-native-naver-login-1.0.1.tgz a542cad8a2d079f63f4cf24f25e2238cca9fbe4cebda912ee00512162a288e67  - actbase_react-native-simple-video-1.0.13.tgz 6c947a41e381be28888ce3c34c6b69c1d722f1d1a1a0b8c0fbab6e9171b16ebf  - actbase_react-native-tiktok-1.1.3.tgz 08bbac261e17aa4c672ba443c4e141cc73ad4c62afbed485de526705a927a55b  - antstackio_eslint-config-antstack-0.0.3.tgz 4a7250fed28411b54fca1bfda22422392d7cd9144e0d6f038857279e2050f62a  - antstackio_express-graphql-proxy-0.2.8.tgz a7fffb33f70a3c9d93dd2c4e8c9fd052f3f02a9a14c5c715feebfeda98b4a823  - antstackio_json-to-graphql-1.0.3.tgz bb5d51df02d14163a6a5e95854465a91d0baed1d51f8e2c2f0e89eee99cf9a6c  - antstackio_shelbysam-1.1.7.tgz 16d1d1e71642e5683e7aa83dd890018826c2d5b93dc5fb3c0f1815c3d57bd06c  - aryanhussain_my-angular-lib-0.0.23.tgz 58a02430f046164fc1bd82e8ff1b95b5ce91e6837d8de7c2498ef19728ad5c78  - asyncapi_avro-schema-parser-3.0.26.tgz be54ac092b22be190a60ec5a6e07471016c69d6c918f71e9e7a28a43ad11b91b  - asyncapi_bundler-0.6.6.tgz 76678b918e11bb9250e693243943067a2e85ae42a53add1dfc09c7723a2c3a29  - asyncapi_cli-4.1.3.tgz f960ef84c52b8e2e5a8654f6a94a1e849a434f639c53794fc730d1e8e65c9fcb  - asyncapi_converter-1.6.4.tgz 60cf4260c53a2d0b1559099645c3f24895f41655015de7ddcf43a952f433fd0f  - asyncapi_generator-2.8.6.tgz 44a23f6470555634bcdbcd1e7d102a64151e06bbb6cfaa66726dd4870b57000a  - asyncapi_generator-components-0.3.3.tgz 3172c89f3145408b5f7fa6b9fc78d58d47c2fd0fa0d425065adab6c7360f05ba  - asyncapi_generator-helpers-0.2.2.tgz 4e59cbd001d57fd7124889b7f7b1bc1b7b2827e205bf6d20683e570131613b24  - asyncapi_java-spring-template-1.6.2.tgz 174a9da628c634d80b2039257a168e86ca058b78d33662641ee7df6137ee1e4c  - asyncapi_keeper-0.0.3.tgz 83d1560891850b58fc909d8844cf9231d5a59056ba2e397cac82508a685dde54  - asyncapi_modelina-5.10.3.tgz d6ba9211ecd216affc96778539de2e3eba5086d91e279f5d19ecbe8ec5d876db  - asyncapi_multi-parser-2.2.2.tgz 7a204fe5a387c7fe4d0b9bcfaf13e7ac1af19dd02e76424eb2d9583ce48cc420  - asyncapi_nunjucks-filters-2.1.2.tgz a698e16320ee9e315a32b1c3a9ab4e0e34e286b2e5e361ec650415a2b78d783b  - asyncapi_openapi-schema-parser-3.0.26.tgz 110d7b5c98776e65f9ab1d81766bcb3a30e67d28896c90f288873cb081141caa  - asyncapi_optimizer-1.0.6.tgz b67ec36240ba58957dc3bfe05bf3013294ddd5c19702557c5a4da8f06776911c  - asyncapi_parser-3.4.2.tgz a1e7b8d26a662d3d3f3ed46fd79031720999f26f8e83b17f33242d8acdda09f6  - asyncapi_protobuf-schema-parser-3.5.3.tgz 3ba7df46af6111d0174af7f2fba0fb97007f1db3cc5c1e48c2f9146c0a6a0d19  - asyncapi_react-component-2.6.7.tgz f816c74782908a2b1907360a349d1366651c4efa0dbc5abad4c43257e906f404  - asyncapi_specs-6.8.3.tgz 8ac9daa9c55b6bacf18fa46d68e6605b310acaa6c8f6b18d8b09cafb9bbb1cd7  - asyncapi_studio-1.0.3.tgz 8f31913b0432bfe36980a975db587842ef2eb4c617c991c38beae9c5d9d6fa40  - clausehq_flows-step-mqtt-0.1.14.tgz 7b2b411479485365cec59b562b2a7615d4f4494f0644f98391a4e282d8a8f6d7  - clausehq_flows-step-sendgridemail-0.1.14.tgz aa7f8bf4c8bdf362b3949b97b90d14c8655b7418c4863d4776116a09099e8f52  - clausehq_flows-step-taskscreateurl-0.1.14.tgz f64f169369b062ac630e28b361fa51daffcf37434a114236aa52388c9201f94b  - dev-blinq_cucumber-js-1.0.131.tgz e9ffa710b785c5925b08bc51b5b982eb307dbec3b81cdd4f3423342da47fef87  - dev-blinq_cucumber_client-1.0.738.tgz e57639e8ee131df9154792cac4b80dd6a95bd6421db734f2e4c6fc2b41af02bd  - ensdomains_address-encoder-1.1.5.tgz 2092fb9772f00aa14ad6f4491afb1ba1393837db0a7f92671b4b8c9a6336c758  - ensdomains_blacklist-1.0.1.tgz f4490c269c7acbce1b7f038475f3e4efd3cf5ad6727cc40e4f118aa5981b7dc3  - ensdomains_ccip-read-dns-gateway-0.1.1.tgz 25460c9078a6ca44b2b690a4dea02ef4c2bfbef8a23eb3541845431195dbae8d  - ensdomains_ccip-read-worker-viem-0.0.4.tgz 9f6981d275efbf71e663d0130e9165a1d52d989d53a5d8377b8a4fedc7fe91f4  - ensdomains_curvearithmetics-1.0.1.tgz eb946d09ff2b6c73e838926c469ee92f0b3c679b45ca39187975bc9b2c2b98aa  - ensdomains_cypress-metamask-1.2.1.tgz d62e01697195c09ee0eea40d5f081ff705971f0672ee791bf0a3748fddc7914e  - ensdomains_hardhat-chai-matchers-viem-0.1.15.tgz 247b3c5490abd2279daeb88b6feb82b11b6cf90cb7f7b5529114500d0a114f9c  - ensdomains_hardhat-toolbox-viem-extended-0.0.6.tgz 954236d40e3b77cdb4c1368e347c4d1425d2bd8fc6e74b59e17f15d4ae94cdfa  - ensdomains_renewal-0.0.13.tgz 7ecd08a7f8bf2b4a5de197f8348c49eb680087f4d41dff7ee2d13bcb1bc67889  - ensdomains_server-analytics-0.0.2.tgz cfab9001ecaadc20155b87b98e634736e4618070f7e7e3a4860e6ffb2b991af1  - ensdomains_subdomain-registrar-0.2.4.tgz 932d20c634049323e60d7137c91883426cfba638736345ffe260d9f7e4fc81cc  - ensdomains_test-utils-1.3.1.tgz 96ac8b468695d1d782801a84f4203cbcd36db84cd68fd77165b2b3914c15c28d  - ensdomains_thorin-0.6.51.tgz d27f078c3394e32aca81cec95e942c8480a296c4b3ef72a8226a09e18459202d  - ensdomains_ui-3.4.6.tgz e218d68fb95751bf73f245a39b6b8cc6056f12f9d4c233220d2151bf4d6db270  - ensdomains_vite-plugin-i18next-loader-4.0.4.tgz bba886ee0c0c311e8ceaa7a120b831f5f4aa02f904e1280a040dfeddefef668e  - ensdomains_web3modal-1.10.2.tgz a8b0564e1e63f9dcc7f8322fb6c3715682878fe70ad3d3221fb14679b0e38354  - everreal_validate-esmoduleinterop-imports-1.4.4.tgz fc920356ae54bb3ae124abd1bf3ca3636128c2bbb869176c75fdd4fc436f35da  - everreal_validate-esmoduleinterop-imports-1.4.5.tgz d4b91cd592dde77f93e245483237353b723a69a2ed8329924601b03856d0e19c  - everreal_web-analytics-0.0.1.tgz c00555a8887871e5da52a30590b269916857e9945b53e0e9e1d64dfcb3b453f9  - everreal_web-analytics-0.0.2.tgz 769d0685583b31b7010f40a64904373c737115dcb01bf3d0cdd2c369538ab934  - faq-component_core-0.0.4.tgz 82025a99c9f396c87b71711020e55f6cc28a9d0eb0d5e5e1a9ba305bdda4a832  - faq-component_react-1.0.1.tgz d42b26443e73218a3a48c91200a46bc13e44bfb20e90be49b61fbab4cca0c1f4  - hapheus_n8n-nodes-pgp-1.5.1.tgz e0653527e05efb6c8134a95ddc9ad2f0e7fa7cc8de0833637d7e6f5ed6a2944e  - hover-design_core-0.0.1.tgz e4f6717ef06e9be0a0bcb5ad6c46939981ff6e8e85fc7c02042ac2169a882b58  - ifelsedeveloper_protocol-contracts-svm-idl-0.1.2.tgz 67a2f000b9c3f0f35702627b140591a05678c837fdc43c5316563410b82a5ffe  - kvytech_cli-0.0.7.tgz 15cd5db680c6ff6b8616d22093478d29d22c96f796297245cbf12fb3279da28d  - kvytech_components-0.0.2.tgz e831e280a6c7e38f73cbf98ce1447db4a03f0280637721402cbf990a5a15a220  - kvytech_habbit-e2e-test-0.0.2.tgz 6f914b50e8bcee5ffe5a7166f35788d5309b850b5f19a6c9830fd06d2796aaaf  - kvytech_medusa-plugin-announcement-0.0.8.tgz 4995b6f58dd75d4cf59bdbd6a673f32ee5f1a792709a2e8cc682e8d80278f070  - kvytech_medusa-plugin-management-0.0.5.tgz 529e8b28c445d69efdf6466cdf30cae7852e661b0190234e2d385761a763c646  - kvytech_medusa-plugin-newsletter-0.0.5.tgz 4835a282e3969fde325d7aea0d7c69667ee3983596a737f0fea2487ce3ab717d  - kvytech_medusa-plugin-product-reviews-0.0.9.tgz 6a6c1060ea6825daaa8b98724e036455495e1f671326cc326f152c3876e92e94  - kvytech_medusa-plugin-promotion-0.0.2.tgz 622a1466c70da9101d41cac75e1911a8335e255b67753511345bb86e845d5a5f  - kvytech_web-0.0.2.tgz 3cfca0c054de903578096f0e4dc142a03a83d85503c430cb461ae818d1c783ec  - lessondesk_schoolbus-5.2.3.tgz 6af8bf886001cbb9a6ffbd9499bf615b90fc695ee293964b31c16b9641c6ed57  - markvivanco_app-version-checker-1.0.1.tgz e67c0956dc4f381be33d9d25ccd763382add255ee719699b06e209c3e033519a  - markvivanco_app-version-checker-1.0.2.tgz b4bcd8bb143d39da012f8733ff6658ed4990ca246a123030a514d0967bea323c  - mcp-use_cli-2.2.6.tgz a6f82b556a5fac3de7587bcff0d023d9a78eb7ddaee2fe748f28d1f26e94e479  - mcp-use_cli-2.2.7.tgz 4b28eb378f9ec7ac495853243d6cec1060430ac6d11f40f0078f05344bebc67e  - mcp-use_inspector-0.6.2.tgz 79c28fb613e39c9dfdaa92afdbb56276d184a9f312a7aa23fea6257a484af2cb  - mcp-use_inspector-0.6.3.tgz e7ef18b9ca7514eb4d5492c02da5cd63b693c2e53f35bebeb79a2cba787ae836  - mcp-use_mcp-use-1.0.1.tgz 482708f4aa2c69860dbd67fe1cfb2b5ef36931b60637e8693dcdefe94738d356  - mcp-use_mcp-use-1.0.2.tgz bdb961573e62ab99f2351e5ae04325cc4b4fbc2d2ac47de9d918c760ef2f0618  - ntnx_passport-wso2-0.0.3.tgz 6ff99b035e9158d7370eaceeb0660700d54908a7121a7990d769aa0fbe213083  - ntnx_t-0.0.101.tgz b036f39a45eeb52dfaa87ccc554390ff9cb584117eb32335f00fba4921e1b19b  - orbitgtbelgium_mapbox-gl-draw-cut-polygon-mode-2.0.5.tgz aa889a1d6bcb5f1a2700c05abb343940ae84a06a8f80604258b4471044aae100  - orbitgtbelgium_mapbox-gl-draw-scale-rotate-mode-1.1.1.tgz a5631978b41a8ef1dc0619bc422fb9069bb99ea9a4dbc5a0dd02b642bfb60bee  - orbitgtbelgium_orbit-components-1.2.9.tgz 4b132fa02f05d62c8a9aabb31f2db0a40f89cef09f62459abc604bf9630720fb  - orbitgtbelgium_time-slider-1.0.187.tgz 273c78e2a5836f48ab5688893b0f6edf4ca6a54b88edc050e17fdea9cdd98903  - osmanekrem_bmad-1.0.6.tgz 716f53fad84b0303b9f4e42eaa6cc0389de1e9b765d243bbddef56a92a1ae1db  - osmanekrem_error-handler-1.2.2.tgz e6b7e9c89da5a0bb399950aacbf53a53e2a076105c43334fd564866904919267  - posthog_core-1.5.6.tgz e767df6e470be9b2cbb9410978390d9d9b9ba97c8400af16afbd3edcb519d737  - posthog_currency-normalization-plugin-0.0.8.tgz 776baccd1d0d47e849938af917eba88aea340cea9cddf881c4c159dda5a57f02  - posthog_databricks-plugin-0.0.8.tgz 3ecc8dfc4846cbe45a31928ab1bc1dd24af0121e7af1afa7571c52fa1bdc86bc  - posthog_drop-events-on-property-plugin-0.0.8.tgz 1e50a7bb601d3d1d3887c0b86a468215cb549060767227dab6aafa5b0016e93c  - posthog_filter-out-plugin-0.0.8.tgz 2ce48976c48b8e95fe73b810d3ae2e5e8282564b75698a8019bfeb44949aee01  - posthog_first-time-event-tracker-0.0.8.tgz ca2d3e24932e848380a650da08a4cef6be61417316c73f9da8f407bf10dadea7  - posthog_heartbeat-plugin-0.0.8.tgz b70b6be39320b7ef217bf79bdd425b8f2ee8ad5cb96ef63111533ac8ff189186  - posthog_hedgehog-mode-0.0.42.tgz 7fc30567ed0ad0d8059bf9225c5f61227d1b5dcc0fd3431593f296ad5fbeea16  - posthog_maxmind-plugin-0.1.6.tgz 2d5264b12128e5c1c24d1e9512f4716a970727189a5dd7387b5ccc26cce8f373  - posthog_nextjs-0.0.3.tgz 2778ff06e4a571b766f11c0eaea63b869cf543ddc7017d71b84de1f873c6c367  - posthog_pagerduty-plugin-0.0.8.tgz f0aa8fea7ef3c64f2a6b0d723751efdd86518f43a10a5275f4bfb1f80011dca2  - posthog_piscina-3.2.1.tgz e4c8da8c279ed1a6ac909a2c5316702c824d222d7a51f69d81e0615c1c5ac549  - posthog_plugin-server-1.10.8.tgz c9536f09628bb918b3943d5ebc2a72a8735586e5bd4b1abe33d9daac43315aea  - posthog_postgres-plugin-0.0.8.tgz fe2ae0c2c69a162af8a752e7a2dc04854c4fbfec0aa0f8c00efb980638228bbd  - posthog_rrweb-0.0.31.tgz 594a557d213fc6bbdb9c9a7d1caf8dc8d2532cd1bdf1a0b7d79e0512b6109f36  - posthog_rrweb-player-0.0.31.tgz ad2958069ed5ac75a4717c269396283dbe1d4bad8d6d505aad3696ca5bc5fc2a  - posthog_rrweb-record-0.0.31.tgz b0b43554eed8b17a9b560fba4842df691b8b3a342fccd082a34792b9fa6d5fa7  - posthog_rrweb-replay-0.0.19.tgz beea922587b8934a6f18432fe5bdb6654f52ff8eabf7e98a11ff9acb573d0da7  - posthog_taxonomy-plugin-0.0.8.tgz 06c2885e340a2c5d892de591a5a20a77deb2251b1168ff10ff9b867e6992de94  - posthog_twitter-followers-plugin-0.0.8.tgz 94a1bef6465487ec8563bfc9038ac05e38c209036eb11d361e4e7b64bea51da9  - posthog_variance-plugin-0.0.8.tgz a646f490c5551012bfb03561e48b7a384f4408588ed0790801dbc9712c0e9a2a  - posthog_web-dev-server-1.0.5.tgz 9d63600674ca054c294c117d879971be59f54b74c7113a4a8d848ed9346395a2  - posthog_wizard-1.18.1.tgz e35bbf9dceb1fac877f94add456badadf5d06ad0e63eeb79f2a83f866337fdf3  - postman_aether-icons-2.23.2.tgz ab184940247b7c4c059d1afdd86d1db50161ba6d9402f3b530131af4451d1795  - postman_aether-icons-2.23.3.tgz 35a8804dedcde4f82be7768e5b7de67df2e246ab2e1d03824f016acbd354b674  - postman_aether-icons-2.23.4.tgz fb3fd2a08fbc95bd75b32bef51c2f383788ef0a575310fca6bc8e30f95a45e61  - postman_csv-parse-4.0.4.tgz 16aa58df188ac24fcbd51caaf6f00099d5bd6c1304c9f63f2020e3eb2f08aaf1  - postman_csv-parse-4.0.5.tgz 9729f2d424eda8f7bea381cd749835e3343f3f017845be93a150b5e50872ef63  - postman_final-node-keytar-7.9.1.tgz 112afe30921099019bc7bbe7429b1c630d6d33d76ffe67a910227b16aa9c76aa  - postman_final-node-keytar-7.9.2.tgz 645f7a51bd02bab834ca12b1a0692d5a65938e63999ed4a6005b09083fdfa670  - postman_final-node-keytar-7.9.3.tgz e9d022f7810b9bcb4997e066f0cf7fac57ca9a9ee25438a37eed8f234a70468a  - postman_mcp-ui-client-5.5.1.tgz ea918b80589aa7cf17c996653ab73d11b96d49c665c09f7c7870495ccd71c772  - postman_mcp-ui-client-5.5.2.tgz 5d8b6ef8e05f59e4e191ceea49a7f4742eefc24eb8589d4915a85f24d164549c  - postman_mcp-ui-client-5.5.3.tgz 748bb79cc2b58e23a57d3ed460b00986ce141b56522a11d9feb2994e86835f2b  - postman_node-keytar-7.9.4.tgz bb489a9d8c5499a6d6725e9ef6d2889d90a9d8779034082f0fb7766ab1bf93ac  - postman_node-keytar-7.9.5.tgz 2431a903296c7abe9045c5ec1a83b188d3c18188a5d252b610cc276f0afbd380  - postman_node-keytar-7.9.6.tgz 1b0532be70ce920216dc77cfee952cf3ff5ff3e50cb4ff0d19de77e41bf53630  - postman_pm-bin-linux-x64-1.24.3.tgz 3414dd97256f4d0772e762686e82b6c68ca7a481561e33a2678ce106e82a7b1c  - postman_pm-bin-linux-x64-1.24.4.tgz c57275b3a5e0894a6eb085c4141790a9dc9f0f703a46e213deba8677e395a96f  - postman_pm-bin-linux-x64-1.24.5.tgz deb406dd7979f327c366b9c4cf7497671c4ef6cb8958cfeffd6682b3b4271fe4  - postman_pm-bin-macos-arm64-1.24.3.tgz 3e412baba0a923cc8a71d1a165e9ba82f02fe36916982f70049fe004d5910a12  - postman_pm-bin-macos-arm64-1.24.4.tgz f7b61e63c8045520465d519203b2380f2f0d354854d473d8cae72d70866c3762  - postman_pm-bin-macos-arm64-1.24.5.tgz afc65bb87b6b2c82694185692d979c1dcadd50767bec2887ff61e51d1de63820  - postman_pm-bin-macos-x64-1.24.3.tgz 63ff001049db615453e492e0da28b32e11b75b998d4536a4bd2050d3ab277c88  - postman_pm-bin-macos-x64-1.24.4.tgz 7f5fcd3db59c571bc5bd90e27346f4322aa5eed5184ad6303ed592b1facf2cca  - postman_pm-bin-macos-x64-1.24.5.tgz bef5a62c444a0684032b8979901a8cb8d5ae7c6ec41bd6e4e7de8ccd53aacf6a  - postman_pm-bin-windows-x64-1.24.3.tgz 7a6b4065de82a7fddebc97ae49032cd72ad39b1afe9291f756e48c5344e2aed6  - postman_pm-bin-windows-x64-1.24.4.tgz c5a551f024b02b56bcceee7679327655b5f4a86a61e1cb5caadac438c2575561  - postman_pm-bin-windows-x64-1.24.5.tgz f20be046cdce5df9ec5961a3a41021f6a17ffff7563db8cd85752be65ec5b202  - postman_postman-collection-fork-4.3.3.tgz 0c3b2a346cb0fd2fb5793294ff0734dbe99a89a3a9f3a367619de9265f3f30fc  - postman_postman-collection-fork-4.3.4.tgz 5e40e3842525de66f83848ee4fb97d962c746c95b3862516d8a580c070bf1a27  - postman_postman-collection-fork-4.3.5.tgz e307895b8bfc58e30646b006ea3647ee491e06dd721d1ce3a1e38f11f69ac26b  - postman_postman-mcp-cli-1.0.3.tgz 8e93c91ba43842007e0673ef7b9d8b9d166ec3558d10afad78ddc904783840e9  - postman_postman-mcp-cli-1.0.4.tgz ba63dde9af6b040d87e42c88934c7021591c11921619a4bd660140f2786af702  - postman_postman-mcp-server-2.4.11.tgz 94b5dcd1b4c72363cdf6848776630700c2aeab3482dd9f3073d79c5640ccb1ff  - postman_postman-mcp-server-2.4.12.tgz f2c5ce3c523b8c15ef83dfe6779b71fa4ab2546b522a07ce963fbab9a60f9d7e  - postman_pretty-ms-6.1.1.tgz c46be3e8d6cc1922bbd682afd6db3f1da08fd2e145406120dba0f9a8074b79f0  - postman_pretty-ms-6.1.2.tgz 29f53a02e0f6ba5e8f1f3790cd23d0c5fc9d419faec0794d3d7367426e8089c5  - postman_pretty-ms-6.1.3.tgz e85eb253ea5f114d220d84b66f3ab593c7790eec7ecd0263ae1dbcd3335f0126  - postman_secret-scanner-wasm-2.1.2.tgz 3ffaeead015f7516e351e7ddd80e54ca781e7ddede0dfb481842ff62d195f29d  - postman_secret-scanner-wasm-2.1.3.tgz abe0c046bc5ef92878846db9e98efaa5af92890968ae2b13b89ea591aa7e5438  - postman_secret-scanner-wasm-2.1.4.tgz 1a71ef2019467895db206328f7b9d5dff64e78385f6789d9141f31f5263fe8ef  - postman_tunnel-agent-0.6.5.tgz 1e6c0e324b2d8d9f65262cb4832bbc29976b1f9ddb8ba112d5da5eb0950e3a34  - postman_tunnel-agent-0.6.6.tgz 3969827fc2e63da4132d07112ccc900acf43bf33dfb17ff6a6100acbddbf03ab  - postman_wdio-allure-reporter-0.0.7.tgz d4f0cb0afbc7a927b67fa967ba74b3526986efbf4c3e220b2a26b8cf284dd582  - postman_wdio-allure-reporter-0.0.8.tgz b429b64fe595e6c7c3c7f7ed1c87d96ed84bd8053b4ef1c07563392d13b69c7c  - postman_wdio-allure-reporter-0.0.9.tgz acae5501667e9f22edb182fb642317d848a1750fc5075de4606786ac5b1c11e4  - postman_wdio-junit-reporter-0.0.4.tgz 54e7669c59ab40add0e47a98e639e60a6cfe1933bac5d61b23f76b1d380da596  - postman_wdio-junit-reporter-0.0.5.tgz 224641e0b7222f1fb4c601525117461a313377094dfd11f77c38e4a5d1e511f9  - postman_wdio-junit-reporter-0.0.6.tgz e164bae67b01fcb4688990cd99e2692e8474bb9b3bc66389e53c4b57b2635a65  - pradhumngautam_common-app-1.0.2.tgz a133e9536c26923f2f4d72695c78a79982248b927343879528abb09281861aba  - pruthvi21_use-debounce-1.0.3.tgz dc7d81aad99d008a7b08bd440d910814c157bdada1cd16a5a3bdeacfc8c0e5e2  - seezo_sdr-mcp-server-0.0.5.tgz 0321518c0800f66be79cac3b65830694d2b4c67a8e77fb75dcf863e50592d9b3  - seung-ju_next-0.0.2.tgz 4e8f203fc4d547e30f7edeac7a7ccb43326f1d1ea28839f9f825683818e0603a  - seung-ju_openapi-generator-0.0.4.tgz b2702320073ae3eb2f19fd7e433a7b687b32afe0e3249ce12ecd0159f8b72228  - seung-ju_react-hooks-0.0.2.tgz 7233ef60f3779abf9eae56a36860be2b8160ef2a244d46f42a2eaf3b44c3b64f  - seung-ju_react-native-action-sheet-0.2.1.tgz dfec20aeacbcac9018552a1927f032fb1c4cc8b699d45b9f6ae0f56155fd94be  - voiceflow_api-sdk-3.28.58.tgz 152e6697ca719ae337162b49f4eebdb3918c65b1941f178ce604ce37a98d18d5  - voiceflow_backend-utils-5.0.1.tgz e8fa1112fe1ad00c8b6d902e7b6db87c9e471bfb133aa7aa038aeda33f54f317  - voiceflow_backend-utils-5.0.2.tgz cb3889bc121b75980d2d7846fe6c661ccf3cf9ad1b8c318b2401cff5c178c199  - voiceflow_chat-types-2.14.58.tgz f502144cbd7c780e8a0f7376c59b09d5997c53326625d56eab0fa24c8ce800b4  - voiceflow_common-8.9.1.tgz e81591a0040a0c7579f5b3f0e71a8bf2b6a603ed50fa4a43d5cf8b45c01303cb  - voiceflow_fetch-1.11.1.tgz fb575544322ab2b354a5498868a78a36758c21d91a19854351b2e7a122376495  - voiceflow_general-types-3.2.22.tgz fd6aa837074a9f77f38b3e37745039e7c15a67efdf7bf431df409d6b3657c773  - voiceflow_google-dfes-types-2.17.12.tgz 27038c023b813982fd8f2caeefca3280e1b147a227e7a304d569867264a158ae  - voiceflow_logger-2.4.2.tgz cf3b7bb0963e66e39375be5d093ebea252d4da33ecf60ce50e817149fc00d546  - voiceflow_logger-2.4.3.tgz 19634e78e699bc8019e42a314fa945350299044a6c814259b7378912d104b2c3  - voiceflow_nestjs-mongodb-1.3.2.tgz 8a00db0e2707fc528ce1084bea91e6038d5c57908b59d51700ad42fac49ed2a1  - voiceflow_nestjs-rate-limit-1.3.3.tgz c5695af85a61f76bcae86960dc0c0f69c8cc99573af223fcf806f89e2c0519b7  - voiceflow_nestjs-redis-1.3.2.tgz 0d415ab6d1fb3946c54ec35c05268d1323e1fc77eac18a316e60d17c4a47923b  - voiceflow_runtime-client-js-1.17.2.tgz c8feebd509dcea9e0e3ab335af689c24e9b3af557aa471d681bfb3cd8a759f09  - voiceflow_sdk-runtime-1.43.1.tgz 67d04bf8bbe0b0617af6643fe9357b43cb2c3391d3225614e1035371fe508391  - voiceflow_slate-serializer-1.7.4.tgz d8cbf876bfb0ca193332fcf3667b10e5cc60c4ae99bb72aa323f45a5421bcdd4  - voiceflow_stitches-react-2.3.2.tgz 9fe2519f14075b0bcd8b9ee07f4eb3bc4cf71f96ad693a432383786688f6de20  - voiceflow_utils-designer-1.74.19.tgz 69ae3caa65928fd91be85af3d2cb20b4868e9af7cc948bbc09ae113f8c74cc60  - voiceflow_voice-types-2.10.58.tgz b9fbbb4fae0c8861464b5969deb207b9385ac153f0cfe904761ec653ff26575e  - zapier_ai-actions-0.1.19.tgz cf2a5688ab08a257049f12eb131b1ee6063cba246e7d013502035d8456543e2b  - zapier_babel-preset-zapier-6.4.2.tgz 9d7e28c17a21eab67f60db2b311906d958655b57c783daa28a8eb43b361d2890  - zapier_browserslist-config-zapier-1.0.4.tgz 6aff2a1dec927bec3d96073838fd2c0103b2d03e7bbb07b82134d4a94dfaa86d  - zapier_eslint-plugin-zapier-11.0.3.tgz 3bccffaaa36369f34c339a904777c06e90f7d731f908b8fca45f072ae57116f2  - zapier_eslint-plugin-zapier-11.0.4.tgz 135cdabc0234a40541821712b9bece0620719e0b2f86a56502842bba4eb5a7d5  - zapier_spectral-api-ruleset-1.9.2.tgz eced444aef3b8a0c50193a1338e44ba3a6eb1d3ff87d7d4f29fe7c919f526b44  - ai-crowl-shield-1.0.7.tgz c431b731ab2187e72d53df205a96d9ecc953cab6daa6b674763a1c628a8ef969  - automation_model-1.0.491.tgz 18c4dce70d6d2dc425610e38a2e3122e9b21d8c0df6f9f08aa4a518e9f4fd913  - axios-timed-1.0.2.tgz 23bc1685e81daade8631de1251ac6faf8608f8055f9d5b4526c69ed91aa66d55  - bytecode-checker-cli-1.0.9.tgz f9f53c0024cbd97eb6fab558f3a4dbc6234edfa3b87832b907447542eb5d286e  - bytecode-checker-cli-1.0.10.tgz 78549ab449219640d203978786dfa0780c97b0b574993ab38e959aa54abab33e  - calc-loan-interest-1.0.4.tgz e7503cc9584592c6dc6e78a620a3ccd85523fbaca5455f8164737c07d65cb8cf  - claude-token-updater-1.0.3.tgz b9c73776e9459313f567b400621f9d064d084290e650360112678091dc5fe3b3  - coinmarketcap-api-3.1.2.tgz 468431c85cb6469c551e1637e1f4710d51edfc61ff1c98bce5e2aa9530761274  - coinmarketcap-api-3.1.3.tgz bd058ff1a565d52f360b986b9f78c908014f4f3d694958863f4bef77372f721b  - colors-regex-2.0.1.tgz 54c0326622621029bf3b48a4bf1753b0617aec208ad5f0cf495cff2a9d777f95  - command-irail-0.5.4.tgz dfe3caeab209df32cdf370ba6c21385a19666693b429856f426720ec9d35cafa  - compare-obj-1.1.1.tgz 66762751e93cbed77181af1c7a0edbea0eacf6a1e1cc797e4526432f8415af90  - compare-obj-1.1.2.tgz 07086dd495c2354e1fccd52d20a205498aec299c26a1887bf7a47f49b3acb1e0  - create-director-app-0.1.1.tgz 1f38688329e09dc98861ec68f91b89b32b8cebda887b2389042925dc9cd0137f  - create-glee-app-0.2.3.tgz 7bd95d761431ad7e914b33d78c4c4c420b26564ce08fe63257ce874ef9e75af3  - create-hardhat3-app-1.1.2.tgz 3e6d9685c7053f083cd9ff53f82aa6abdb64fc78a89647966896d01d97efaf9e  - create-hardhat3-app-1.1.3.tgz 0c3fc0412c591280561fb5abe1e2e6f02cef09644dca206dc072eb5f8f728410  - create-mcp-use-app-0.5.3.tgz f622def86f0cfa54e13499a464c93392bfb13e39edbbc116048dd89dccada99d  - create-mcp-use-app-0.5.4.tgz 052c05972856030355572521cc2af4f2d072d6070852899d0079466b8f5b330a  - designstudiouiux-1.0.1.tgz 397e2aa1ae1db65964a491f1a66e42bbfb81017686d718ba4f65eddafecc8aac  - discord-bot-server-0.1.2.tgz a5a1a2ebec0052795df64d511c9048b38f5026cebf3fe028ad294d16456687fb  - docusaurus-plugin-vanilla-extract-1.0.3.tgz becf4b7d4b6df0a7cf962943e1d2f5db76753df784d122b96392dbaf20c4a46a  - drop-events-on-property-plugin-0.0.2.tgz 502460a4bedb794c8d248243fe86d7804327427bc270ce1aecd3137ae35f47c8  - email-deliverability-tester-1.1.1.tgz bc9daffc943b21103fb8b82f9d70985cee3fce121fc00d1558725abea41d8c20  - evm-checkcode-cli-1.0.13.tgz 34c8b349f8253fc37f3e665ad306da17aef40398379e756406588a2822cf7bbe  - evm-checkcode-cli-1.0.14.tgz 58a08bff1d42a83c4de752451f6d61700becba88c1381a3d81d44ed3324334c2  - exact-ticker-0.3.5.tgz 3e165586b21a54cc0b48d3a6e1803e8949974640a9bf9986f5d0cb1a0f465037  - expo-audio-session-0.2.1.tgz c50eae35bf9a8cfefe181b66effc58527e82067a32398de9776af7ee189916c2  - fat-fingered-1.0.2.tgz 7050c930e091326fec2c04155a1224d6796dda463657ded9c7883d3f111893c5  - feature-flip-1.0.2.tgz 865759ed7110571507a60e9616c087dc453c4caa3f569336a4ae2101c370353a  - fittxt-1.0.3.tgz b4c91419372576f60bec5325cff8e50937dbcbe807c5bbba62f6e56a8d8085fc  - gate-evm-check-code2-2.0.4.tgz 2b27fba91751b91f7e96a375316fe0679174882fb85e3863b4f816411f122e51  - gate-evm-check-code2-2.0.5.tgz ebfa53452b47d3c062f7445f8fa8d89d2569b8ab7ac05bc2b58df963f51ecdaa  - gate-evm-check-code2-2.0.6.tgz 23c12e7836e097f601df773330a9ace6a3fb2059126f2090558823a0ab5cda81  - gate-evm-tools-test-1.0.6.tgz 405fc69a0e287a8002cedafab3fe555588199258ddb88708b36eac8bc1882c03  - gate-evm-tools-test-1.0.7.tgz 72dcbfea4d4a9dd08b801336d1af79cefbd1f83e5c4fc8b59843b8a6bd7d73b6  - generator-ng-itobuz-0.0.15.tgz fe4ca41ae126031a157b517277e802b5e39bc24998eb360f5eded91358abf120  - gitsafe-1.0.5.tgz 6f6f99f98400d68e2c56033de1d1a09fc85187a7a567e659a1e5469d3f516b21  - go-template-0.1.9.tgz c0d366214bca5b708c3db46ed18a325b7bdc9ef3ee79654b927c74e8c2257935  - hope-mapboxdraw-0.1.1.tgz f71e7e9a4b4458a6790c6f0daced87d1400a71982f8698dbc4248000019c75ff  - hopedraw-1.0.3.tgz 3eab324c9e87c53700d6f40018b4887eb1e880d3a4b2358941eb8fd365bdf244  - hover-design-prototype-0.0.5.tgz b1409f852d878814ce4d1b94e5082d72ff2c0301244a64abc8ea1718db5b4e11  - ito-button-8.0.3.tgz c70c62a3eea5fde7e51eada5d6ac7b73a60429bbdaf347ab8f76d2252e07b48e  - itobuz-angular-0.0.1.tgz 8132d71edd159bc7b5ee0b3ff913f223ee5969a30111a946632878c90b61e798  - itobuz-angular-button-8.0.11.tgz fe37d2db87f0462a62d17841f443415e643eda769bd8f0564c0297de3a706e15  - jquery-bindings-1.1.2.tgz 754da4093e6c5cf0d0990baea5c649a896bd5efde75328c188cac7528a43b1cd  - jquery-bindings-1.1.3.tgz 29d5cf9f01d76e0d26afd4bba52283b3eec0a9fb708baf571bd12be2adeb8fb0  - kill-port-2.0.3.tgz bbc58c9223027a57889a6fb94c46918600caf3d82c5859e684d9a8aaad1f66fc  - lang-codes-1.0.2.tgz 4da855fe2eabf3ca622d3bfe037ee4de2ff369900012f0783f23b2ceb653eee9  - mcp-use-1.4.2.tgz 0d1fdd62c21b044173bd4f69c819eaf57db3fa1f5df3b4046ebe17fba4db315c  - mcp-use-1.4.3.tgz 20d6033fc9dccf8154be1d9bc6f93e94584d3dedbde65f46a194d890f6e8aeff  - medusa-plugin-logs-0.0.17.tgz 1fd0f52b36232097d96ebecd9eae354649b07ab1a200a7f5f23935a68dcf5156  - medusa-plugin-momo-0.0.68.tgz 9b16ee63578aaa7ec914a43f368bfe9247ef8bb92aaf3c5944bf65064de37c5d  - medusa-plugin-product-reviews-kvy-0.0.4.tgz bba56ed5fbbb4d69dc87cd0d45e646fb49c8571928ad9ac8fcce98ff39a8f1e7  - medusa-plugin-zalopay-0.0.40.tgz 13264c050a69f85c7f2b665bda7a42c7bda2d3d29d820afaee8a0fd6d516d617  - mon-package-react-typescript-1.0.1.tgz 6bee6ebcfe4b3af0385ec364161fe79b3c9951277937f890f9fe9083fc266686  - ngx-useful-swiper-prosenjit-9.0.2.tgz 6ca03db753ed1163a918da2d720951f9ef85492d4b59dea857058c6ef9ee1069  - ngx-wooapi-12.0.1.tgz ff8ce6515e7677d1e08a7f3a9bc495fda3adeca4545c4238b74e604fb4a79962  - okta-react-router-6-5.0.1.tgz 77b406819daf7f305ac1e829fb1a495e866d9b383f50c33221c6334bcf87f7d4  - orbit-boxicons-2.1.3.tgz bf3565b0b6e23f91a0a58f319db8f2c7da08bd382b7eb3ddc0e7ec69b05f093b  - orbit-nebula-draw-tools-1.0.10.tgz d53d76d4df3cb1ebbb05bb228078c054176e759165e7b216092beb46b6bff1a2  - orbit-nebula-editor-1.0.2.tgz 446972c46a2daaa6a7dbf0ea07f36e8ec6171496be127b6902026a3114e414e9  - orbit-soap-0.43.13.tgz 51165e51935dae3b030e14678acb80f364d44743f8464bdc28c13d13dc78578a  - orchestrix-12.1.2.tgz eea7a5a0b484fc16b209270380e333a7acb8c3ca6bde21b2a6e4971afc47d15f  - parcel-plugin-asset-copier-1.1.3.tgz 490360cc1d7189ea1b415cdaae848036da3bbc5c70acdac4f62922e03c127b50  - pdf-annotation-0.0.2.tgz 5aa40fd0b86ae8da8cfd7d723e831c1507a6e33452e1348ef4575ca44eb23777  - poper-react-sdk-0.1.2.tgz f8be56470e83079d8f5f981c19f22ac9b4b341ae20eb852ebc716a9b91b39237  - posthog-docusaurus-2.0.6.tgz de71e0ebe146ec1a56db90c4c391e05b03dc5418d0725624c6e2af653c64ec2e  - posthog-js-1.297.3.tgz 52950150345b2d9a0d902dbafb8a08e7b4b0215776abb3b85b4c5536b15e5fa6  - posthog-node-4.18.1.tgz 6d17af41ccb5ce2933548b46620eb1e7788139d8e0c5e672f57876f5b04f9628  - posthog-node-5.11.3.tgz 1056e8fbe603afaa6991ed84aa745f44e218662605767a138e90ebbd1890e1af  - posthog-node-5.13.3.tgz 58b02986fb5215b94d74100a45c49df57199534572152257430383b6cb80926e  - posthog-react-native-4.11.1.tgz dc3325e60693878ce2e2eb38d693c4473e02f13cd0c5dc28e10dd5f00b8b7c50  - posthog-react-native-4.12.5.tgz 1f39d7f26736cd217c5f7c51befaf632e6c489ba39c00287ed5ebbf7c8b70caf  - prime-one-table-0.0.19.tgz 81ba4783af6e64029ea460b2a4a02543ed64d6343f4748b00e93b39f448d6a53  - ra-data-firebase-1.0.8.tgz 1e913641ecdf20c33f3669c49fa8009bf9edfd33f486743c82289d5a715d7001  - react-element-prompt-inspector-0.1.18.tgz 3af15f7541475664c081f41c979b8d71ba88accc4aab9b98349a722af4022dc7  - react-jam-icons-1.0.2.tgz 133020e242191e654d67d020d39276a5f76626b78132b49caf3782cf00707aca  - react-keycloak-context-1.0.8.tgz 390cb649a0e1bc9413ae3984e8a350a9fb6f882fc691fa3f91974b30e7e405bd  - react-keycloak-context-1.0.9.tgz 29a6cab3e7e070cfe8bf277f20ad06223f1bbf608d1ac2b8ddd38c9f9ae9cd80  - react-library-setup-0.0.6.tgz 6a4093891dbc84ca82a8e83ad3e11b1358e785ec107353bbb01ff47e2f185bfc  - react-micromodal.js-1.0.2.tgz 79a174fa855e5000418ca581d5c108f9d41ddbafbf8e44e69c27a967e2046941  - react-native-email-2.1.1.tgz 55d926da019d08a56ed4300a6e58bec46e2c964228532361aa8994b41a1e6895  - react-native-get-pixel-dimensions-1.0.1.tgz 770e49ac32f04cbeb23979df16c6f93194bd5880ac405431db97d65bba7ea0e9  - react-native-google-maps-directions-2.1.2.tgz 7b43847092bee7eba628842cf14de4c5e885073447a1a416f3d2ddbf14cd2907  - react-native-retriable-fetch-2.0.2.tgz 71dcb27c8137f83cff836b587d2566493d4f081652c82505f7abd9df2fda30d7  - react-native-view-finder-1.2.2.tgz 992112076d10f463faaae02e7107dd2380135957f2b99ccb5c56e26e22bbd6bc  - react-native-websocket-1.0.4.tgz 83d329e8da56f4291e1ffad4e918e85bca87ff2254c3b8e1ef74ce022c8d8b3f  - react-native-worklet-functions-3.3.3.tgz 8d5d42c83f84a68484f3b3e1825803a8881a553b2d06956979dbfa151ac4974f  - redux-router-kit-1.2.3.tgz 8f5487a6c2c7936a3388145db6594ccce77daaa00fa8d9ee0dc5a721ba42f9ea  - skills-use-0.1.1.tgz 02a73a856e68a8f43eca916d3fdf58303a0f257684cf92ed7a4745f6aec99431  - super-commit-1.0.1.tgz 8e243a49ddedcd40361f4ee32e74a525ae9bfbcc7eee16267ab1a616fcaba0f9  - tanstack-shadcn-table-1.1.5.tgz c51e4d9feff7a400c8da45973bc7bb56d61a85453acdf8b5ec252399d528bee7  - tcsp-draw-test-1.0.5.tgz 6740f424b5994479480be0eecacb0519d0d7ad9171c485dcb5f823ee0f7240ea  - tcsp-test-vd-2.4.4.tgz 178d363aa2cd8c18074a2a56142762b3f48f251105dda79afbdb1098f62f4697  - template-micro-service-1.0.3.tgz 1ff7426d58160a6f63d725fbe7b8823ede6b5c0b52b01b977374365b3230f451  - test-hardhat-app-1.0.2.tgz aef6d78cbb9ff6ee986411418870870fe3b4213eb6f68caf07204c088943c636  - test-hardhat-app-1.0.3.tgz 4a62b2192b2a4b60a5f3cef70ae7be43ab710ad8ca1a37894f4915af6b1b6f9d  - tiaan-1.0.2.tgz c328dcac706c2ad6ebbf99d58f8aab74b0c7a2a6f574c16cd2a96071ac056bca  - undefsafe-typed-1.0.3.tgz 1ee36ac800f389dc8d4f5dc9f73db81a53bd65326535e2b363be625aec1444ba  - undefsafe-typed-1.0.4.tgz 2c0f172acf4b8a74bf5669860ac897e1f71255623df2ed1be62a9c9824cc6f98  - url-encode-decode-1.0.1.tgz 01cf3e9375ab0507eb3f1bec572932962947d381902672391635b1b69d73f906  - web-scraper-mcp-1.1.4.tgz 8b0ef2a407425480c5956402a11b88a1ba1df02de758a6e173749b3dbb3b48f0  - zapier-async-storage-1.0.1.tgz a62a857684597efa7248e94365c9f87e0a16c74e0282ebe077dde54ae31aa8b9  - zapier-async-storage-1.0.2.tgz 5532148d23d199ca4697b8e69599908e1b68d425f60e14b01ebf8df15793b738  - zapier-platform-legacy-scripting-runner-4.0.3.tgz 7f2c195b2240158fbf01d1e862a9e9e52e12e2e36b40ec1b52b01cdad6526e6c  - zuper-cli-1.0.1.tgz 05bc1e7d0b97fe8a8707958cbaa7f09043d1c727d01b860add75a9b646136d04  - zuper-sdk-1.0.57.tgz a4e35b4d2b8b8e884f7fd041d8c9893e0ee4ad5155bb4e82acd7845ac1290c41  - zuper-stream-2.0.9.tgz

威胁情报 |NPM 投毒分析 — Shai-Hulud 攻击重现

作者:Joker & Ccj
编辑:77
背景
近日,NPM 社区再次爆发大规模 NPM 包投毒事件,本次事件与 2025 年 9 月的 Shai-Hulud 攻击事件高度相关,本次的 NPM 包中的恶意代码窃取开发者密钥和 API 密钥以及环境变量等敏感信息,利用密钥创建公开仓库并上传这些窃取的敏感信息。
慢雾(SlowMist) 自主研发的 Web3 威胁情报与动态安全监控工具 MistEye 第一时间响应,迅速推送相关威胁情报,为客户提供关键的安全保障。

同时,后台会在第一时间保存恶意样本,并计算其对应的 SHA-256 等特征值。

分析过程
以 @asyncapi/php-template@0.1.1 包为例,在对比旧版本 @asyncapi/php-template@0.1.0 时可以发现,0.1.1 版本比 0.1.1 版本新增了两个 js 文件,为 setup_bun.js 和经过混淆的 bun_environment.js 文件。

在 package.json 中新增了 preinstall 脚本,使得在依赖安装之前会自动执行 setup_bun.js。

在 setup_bun.js 中,首先会去检查系统是否已经安装了 Bun,如果未安装,会自动从官方下载并安装 Bun,并且正确设置环境变量以便找到 Bun 可执行文件。
最后使用 bun 执行 bun_environment.js 文件,该 bun_environment.js 是一个经过高度混淆的恶意文件。

经过将恶意脚本的部分代码反混淆后,可知 aL0() 是整个恶意脚本的主入口函数,大概的可以看出此恶意脚本进行了敏感信息的窃取,会先对运行环境进行检查是否存在 NPM 或 GitHub 等凭据,若检测到这些凭据,它会利用 NPM 凭据进行供应链传播,并且所有收集到的系统信息和敏感数据最终会被打包并上传到攻击者控制的 GitHub 仓库,用于后续利用。
凭据窃取
AWS:该恶意脚本实现 runSecrets() 和 listAndRetrieveAllSecrets() 方法,runSecrets() 方法会遍历所有能找到的云访问凭据以及所有可能的区域,最大化扫描范围;而 listAndRetrieveAllSecrets() 则在指定凭据与区域内进行“深度挖掘”,遍历出所有 Secret,并获取其最新明文内容。两者配合后,攻击者能够将受害者 AWS 账号中可访问的所有 SecretString 和 SecretBinary 一次性全部导出。

而 enumerateValidCredentials() 方法主要用来全面搜集所有能用的云服务密钥。它会从环境变量、配置文件、CLI 登录等各种来源逐一尝试,凡是能成功验证的凭据都会被记录下来,供后续窃取云端机密时使用。

GCP:该恶意脚本中实现的另一个 listAndRetrieveAllSecrets() 方法主要是针对 GCP 模块,它会先根据指定的 Project ID 列出该 GCP 项目下所有的 Secret,然后直接定位每个 Secret 的最新版本,并调用 accessSecretVersion 读取其明文内容。最终将所有获取到的机密(如 API Key、数据库密码等)逐一收集起来。

Azure:该恶意脚本中实现的另一个 listAndRetrieveAllSecrets() 方法主要专门针对 Azure 模块。它会先通过 Azure Resource Manager 扫描整个订阅,找出所有 Key Vault;随后使用获得的凭据逐一连接每个 Vault;最后枚举其中的所有 Secrets,并调用 getSecret 获取每个机密的明文值。

在窃取敏感信息的实现中,还使用合法的安全工具来攻击受害者。在 extractAndInstall() 方法中,解压并提取出 TruffleHog 的二进制文件,TruffleHog 本是用于在代码库中检测和验证泄漏的机密信息,如 API 密钥和凭证,则被攻击者使用来对受害者的整个文件系统进行扫描。

NPM 供应链传播
该恶意脚本实现了个 updatePackage() 函数用于进行 NPM 供应链传播。首先使用窃取的 NPM Token,下载受害者拥有发布权限的合法 NPM 包的源代码,然后修改 package.json 文件,在 scripts 字段中插入恶意的 preinstall 脚本命令。同时将恶意脚本放入包中,自动将包的版本号加 1,以触发用户的自动更新,将带有恶意脚本的 NPM 包推送到 NPM 官方仓库中。

后门与 C2
在窃取完信息后,将利用窃取的 GitHub Token 在其账号下创建一个随机名称的仓库,并获取注册令牌,将受害者的电脑伪装成该仓库的自托管 GitHub Actions Runner。随后,攻击者在仓库中植入恶意工作流,使得任何被触发的 Actions 任务都会在受害者机器上执行,从而实现远程代码执行。

并把这些窃取的信息经过双重 base64 加密上传到创建的仓库里,这些创建的仓库的描述都是“Sha1-Hulud: The Second Coming.”。

经过解密后可以看到用户泄漏的敏感数据。

总结
本次的 NPM 仓库投毒结合了蠕虫和自托管运行程序的长期持久性且利用了 TruffleHog 进行攻击。慢雾安全团队建议开发者在构建和发布新迭代时,应采用依赖包版本锁定策略。若依赖包存在必要的安全或功能更新,应通过内部严格的安全审计流程进行更新,并同步更新锁定版本,避免盲目更新引入新的风险。

如需获取更多关于 APT 情报、依赖投毒情报等安全信息,您可以联系我们采购 Web3 威胁情报与动态安全监控工具 MistEye,获取最新安全情报,快速识别威胁并及时阻断攻击。
官网:https://misteye.io/
联系方式:https://www.slowmist.com/contact-us.html
IoCs
SHA256:
aad1fec103eef1900ec585a5e1ce2385a9db2670b33905be2abae88d79b8c0ce
 - 02-echo-0.0.7.tgz
445389cf177800ae5b6f4a1598321bd2bcc754f0ad6bab90925d95e880d7c375
 - accordproject_concerto-linter-default-ruleset-3.24.1.tgz
28fa0c058f71c92e1324f1666bfb08aa602ce3ff2122fe974c1fc289f35e43bf
 - accordproject_concerto-metamodel-3.12.5.tgz
4974f4c2ff5ab13f2a46d68bc3debf46c2fb2b824c2382174ad1c5626e89e8e7
 - accordproject_concerto-types-3.24.1.tgz
0ba18c71df931d80d4dc3215ca3cb390108b999cd500bd3703920f62c8ec304e
 - accordproject_markdown-it-cicero-0.16.26.tgz
1de993d72430bb91af57cb670a19ab9c40c9faf1de5cf61b8ebba2995c16d7c1
 - accordproject_template-engine-2.7.2.tgz
672cb4f2dab1a6d21093351c20b1759723f4e8743b9f842f964ae52d28236d89
 - actbase_css-to-react-native-transform-1.0.3.tgz
347bdade8ef691f09971c49aa3471e742c769a44a4d57c4ea59abae9af2f842e
 - actbase_native-0.1.32.tgz
70becf47c6dd344dbad5d09ffd904065fefed876f27bfad1eb402a6cf2bd071d
 - actbase_node-server-1.1.19.tgz
046fc52b4b35e9c67062b102d2eacbe30df02ae5e10f0982deab95e31b8918c5
 - actbase_react-absolute-0.8.3.tgz
644fe573cd198dbe536a62ee59308b0df104be7757ffe0efb5c24689ed74774d
 - actbase_react-daum-postcode-1.0.5.tgz
82f9b08b7b93f825f6a3ae21dd7317dd945555ba58b58aa64bc1e049ff83238b
 - actbase_react-kakaosdk-0.9.27.tgz
4e49d33931644cc522b8951f8eed4b3d9056550ba06ac781e67295ad791bd6b6
 - actbase_react-native-actionsheet-1.0.3.tgz
deb6f1c1bbe4d77c523ef93f2894224b76ebe3fec3f57f6398d1e111823b5ff5
 - actbase_react-native-devtools-0.1.3.tgz
aab428f91796ad8b7445f7f6731d47ecdcb18d9138ffd74efcece705304ccb9c
 - actbase_react-native-fast-image-8.5.13.tgz
7e26cf1b140a9bcfcd702c4f89ba0aa2d4fe98a7622bc95d39c645945020a9d8
 - actbase_react-native-kakao-channel-1.0.2.tgz
971ad7b7186de33a1efe9ff53095b472044555da6c333c49b32b0926eba482b7
 - actbase_react-native-kakao-navi-2.0.4.tgz
ae1a76f83cd78af6ed246f490caee07cbb5ad2d6547493f98bac111e4027653b
 - actbase_react-native-less-transformer-1.0.6.tgz
40f1f40ccc1a6e275be74079a6ae763cc89fb142e641e8573bf83fc14f3cc20b
 - actbase_react-native-naver-login-1.0.1.tgz
a542cad8a2d079f63f4cf24f25e2238cca9fbe4cebda912ee00512162a288e67
 - actbase_react-native-simple-video-1.0.13.tgz
6c947a41e381be28888ce3c34c6b69c1d722f1d1a1a0b8c0fbab6e9171b16ebf
 - actbase_react-native-tiktok-1.1.3.tgz
08bbac261e17aa4c672ba443c4e141cc73ad4c62afbed485de526705a927a55b
 - antstackio_eslint-config-antstack-0.0.3.tgz
4a7250fed28411b54fca1bfda22422392d7cd9144e0d6f038857279e2050f62a
 - antstackio_express-graphql-proxy-0.2.8.tgz
a7fffb33f70a3c9d93dd2c4e8c9fd052f3f02a9a14c5c715feebfeda98b4a823
 - antstackio_json-to-graphql-1.0.3.tgz
bb5d51df02d14163a6a5e95854465a91d0baed1d51f8e2c2f0e89eee99cf9a6c
 - antstackio_shelbysam-1.1.7.tgz
16d1d1e71642e5683e7aa83dd890018826c2d5b93dc5fb3c0f1815c3d57bd06c
 - aryanhussain_my-angular-lib-0.0.23.tgz
58a02430f046164fc1bd82e8ff1b95b5ce91e6837d8de7c2498ef19728ad5c78
 - asyncapi_avro-schema-parser-3.0.26.tgz
be54ac092b22be190a60ec5a6e07471016c69d6c918f71e9e7a28a43ad11b91b
 - asyncapi_bundler-0.6.6.tgz
76678b918e11bb9250e693243943067a2e85ae42a53add1dfc09c7723a2c3a29
 - asyncapi_cli-4.1.3.tgz
f960ef84c52b8e2e5a8654f6a94a1e849a434f639c53794fc730d1e8e65c9fcb
 - asyncapi_converter-1.6.4.tgz 60cf4260c53a2d0b1559099645c3f24895f41655015de7ddcf43a952f433fd0f
 - asyncapi_generator-2.8.6.tgz
44a23f6470555634bcdbcd1e7d102a64151e06bbb6cfaa66726dd4870b57000a
 - asyncapi_generator-components-0.3.3.tgz
3172c89f3145408b5f7fa6b9fc78d58d47c2fd0fa0d425065adab6c7360f05ba
 - asyncapi_generator-helpers-0.2.2.tgz
4e59cbd001d57fd7124889b7f7b1bc1b7b2827e205bf6d20683e570131613b24
 - asyncapi_java-spring-template-1.6.2.tgz
174a9da628c634d80b2039257a168e86ca058b78d33662641ee7df6137ee1e4c
 - asyncapi_keeper-0.0.3.tgz
83d1560891850b58fc909d8844cf9231d5a59056ba2e397cac82508a685dde54
 - asyncapi_modelina-5.10.3.tgz
d6ba9211ecd216affc96778539de2e3eba5086d91e279f5d19ecbe8ec5d876db
 - asyncapi_multi-parser-2.2.2.tgz
7a204fe5a387c7fe4d0b9bcfaf13e7ac1af19dd02e76424eb2d9583ce48cc420
 - asyncapi_nunjucks-filters-2.1.2.tgz
a698e16320ee9e315a32b1c3a9ab4e0e34e286b2e5e361ec650415a2b78d783b
 - asyncapi_openapi-schema-parser-3.0.26.tgz
110d7b5c98776e65f9ab1d81766bcb3a30e67d28896c90f288873cb081141caa
 - asyncapi_optimizer-1.0.6.tgz
b67ec36240ba58957dc3bfe05bf3013294ddd5c19702557c5a4da8f06776911c
 - asyncapi_parser-3.4.2.tgz
a1e7b8d26a662d3d3f3ed46fd79031720999f26f8e83b17f33242d8acdda09f6
 - asyncapi_protobuf-schema-parser-3.5.3.tgz
3ba7df46af6111d0174af7f2fba0fb97007f1db3cc5c1e48c2f9146c0a6a0d19
 - asyncapi_react-component-2.6.7.tgz
f816c74782908a2b1907360a349d1366651c4efa0dbc5abad4c43257e906f404
 - asyncapi_specs-6.8.3.tgz
8ac9daa9c55b6bacf18fa46d68e6605b310acaa6c8f6b18d8b09cafb9bbb1cd7
 - asyncapi_studio-1.0.3.tgz
8f31913b0432bfe36980a975db587842ef2eb4c617c991c38beae9c5d9d6fa40
 - clausehq_flows-step-mqtt-0.1.14.tgz
7b2b411479485365cec59b562b2a7615d4f4494f0644f98391a4e282d8a8f6d7
 - clausehq_flows-step-sendgridemail-0.1.14.tgz
aa7f8bf4c8bdf362b3949b97b90d14c8655b7418c4863d4776116a09099e8f52
 - clausehq_flows-step-taskscreateurl-0.1.14.tgz
f64f169369b062ac630e28b361fa51daffcf37434a114236aa52388c9201f94b
 - dev-blinq_cucumber-js-1.0.131.tgz
e9ffa710b785c5925b08bc51b5b982eb307dbec3b81cdd4f3423342da47fef87
 - dev-blinq_cucumber_client-1.0.738.tgz
e57639e8ee131df9154792cac4b80dd6a95bd6421db734f2e4c6fc2b41af02bd
 - ensdomains_address-encoder-1.1.5.tgz
2092fb9772f00aa14ad6f4491afb1ba1393837db0a7f92671b4b8c9a6336c758
 - ensdomains_blacklist-1.0.1.tgz
f4490c269c7acbce1b7f038475f3e4efd3cf5ad6727cc40e4f118aa5981b7dc3
 - ensdomains_ccip-read-dns-gateway-0.1.1.tgz
25460c9078a6ca44b2b690a4dea02ef4c2bfbef8a23eb3541845431195dbae8d
 - ensdomains_ccip-read-worker-viem-0.0.4.tgz
9f6981d275efbf71e663d0130e9165a1d52d989d53a5d8377b8a4fedc7fe91f4
 - ensdomains_curvearithmetics-1.0.1.tgz
eb946d09ff2b6c73e838926c469ee92f0b3c679b45ca39187975bc9b2c2b98aa
 - ensdomains_cypress-metamask-1.2.1.tgz
d62e01697195c09ee0eea40d5f081ff705971f0672ee791bf0a3748fddc7914e
 - ensdomains_hardhat-chai-matchers-viem-0.1.15.tgz
247b3c5490abd2279daeb88b6feb82b11b6cf90cb7f7b5529114500d0a114f9c
 - ensdomains_hardhat-toolbox-viem-extended-0.0.6.tgz
954236d40e3b77cdb4c1368e347c4d1425d2bd8fc6e74b59e17f15d4ae94cdfa
 - ensdomains_renewal-0.0.13.tgz
7ecd08a7f8bf2b4a5de197f8348c49eb680087f4d41dff7ee2d13bcb1bc67889
 - ensdomains_server-analytics-0.0.2.tgz
cfab9001ecaadc20155b87b98e634736e4618070f7e7e3a4860e6ffb2b991af1
 - ensdomains_subdomain-registrar-0.2.4.tgz
932d20c634049323e60d7137c91883426cfba638736345ffe260d9f7e4fc81cc
 - ensdomains_test-utils-1.3.1.tgz
96ac8b468695d1d782801a84f4203cbcd36db84cd68fd77165b2b3914c15c28d
 - ensdomains_thorin-0.6.51.tgz
d27f078c3394e32aca81cec95e942c8480a296c4b3ef72a8226a09e18459202d
 - ensdomains_ui-3.4.6.tgz
e218d68fb95751bf73f245a39b6b8cc6056f12f9d4c233220d2151bf4d6db270
 - ensdomains_vite-plugin-i18next-loader-4.0.4.tgz
bba886ee0c0c311e8ceaa7a120b831f5f4aa02f904e1280a040dfeddefef668e
 - ensdomains_web3modal-1.10.2.tgz
a8b0564e1e63f9dcc7f8322fb6c3715682878fe70ad3d3221fb14679b0e38354
 - everreal_validate-esmoduleinterop-imports-1.4.4.tgz
fc920356ae54bb3ae124abd1bf3ca3636128c2bbb869176c75fdd4fc436f35da
 - everreal_validate-esmoduleinterop-imports-1.4.5.tgz
d4b91cd592dde77f93e245483237353b723a69a2ed8329924601b03856d0e19c
 - everreal_web-analytics-0.0.1.tgz
c00555a8887871e5da52a30590b269916857e9945b53e0e9e1d64dfcb3b453f9
 - everreal_web-analytics-0.0.2.tgz
769d0685583b31b7010f40a64904373c737115dcb01bf3d0cdd2c369538ab934
 - faq-component_core-0.0.4.tgz
82025a99c9f396c87b71711020e55f6cc28a9d0eb0d5e5e1a9ba305bdda4a832
 - faq-component_react-1.0.1.tgz
d42b26443e73218a3a48c91200a46bc13e44bfb20e90be49b61fbab4cca0c1f4
 - hapheus_n8n-nodes-pgp-1.5.1.tgz
e0653527e05efb6c8134a95ddc9ad2f0e7fa7cc8de0833637d7e6f5ed6a2944e
 - hover-design_core-0.0.1.tgz
e4f6717ef06e9be0a0bcb5ad6c46939981ff6e8e85fc7c02042ac2169a882b58
 - ifelsedeveloper_protocol-contracts-svm-idl-0.1.2.tgz
67a2f000b9c3f0f35702627b140591a05678c837fdc43c5316563410b82a5ffe
 - kvytech_cli-0.0.7.tgz
15cd5db680c6ff6b8616d22093478d29d22c96f796297245cbf12fb3279da28d
 - kvytech_components-0.0.2.tgz
e831e280a6c7e38f73cbf98ce1447db4a03f0280637721402cbf990a5a15a220
 - kvytech_habbit-e2e-test-0.0.2.tgz
6f914b50e8bcee5ffe5a7166f35788d5309b850b5f19a6c9830fd06d2796aaaf
 - kvytech_medusa-plugin-announcement-0.0.8.tgz
4995b6f58dd75d4cf59bdbd6a673f32ee5f1a792709a2e8cc682e8d80278f070
 - kvytech_medusa-plugin-management-0.0.5.tgz
529e8b28c445d69efdf6466cdf30cae7852e661b0190234e2d385761a763c646
 - kvytech_medusa-plugin-newsletter-0.0.5.tgz
4835a282e3969fde325d7aea0d7c69667ee3983596a737f0fea2487ce3ab717d
 - kvytech_medusa-plugin-product-reviews-0.0.9.tgz
6a6c1060ea6825daaa8b98724e036455495e1f671326cc326f152c3876e92e94
 - kvytech_medusa-plugin-promotion-0.0.2.tgz
622a1466c70da9101d41cac75e1911a8335e255b67753511345bb86e845d5a5f
 - kvytech_web-0.0.2.tgz
3cfca0c054de903578096f0e4dc142a03a83d85503c430cb461ae818d1c783ec
 - lessondesk_schoolbus-5.2.3.tgz
6af8bf886001cbb9a6ffbd9499bf615b90fc695ee293964b31c16b9641c6ed57
 - markvivanco_app-version-checker-1.0.1.tgz
e67c0956dc4f381be33d9d25ccd763382add255ee719699b06e209c3e033519a
 - markvivanco_app-version-checker-1.0.2.tgz
b4bcd8bb143d39da012f8733ff6658ed4990ca246a123030a514d0967bea323c
 - mcp-use_cli-2.2.6.tgz
a6f82b556a5fac3de7587bcff0d023d9a78eb7ddaee2fe748f28d1f26e94e479
 - mcp-use_cli-2.2.7.tgz
4b28eb378f9ec7ac495853243d6cec1060430ac6d11f40f0078f05344bebc67e
 - mcp-use_inspector-0.6.2.tgz
79c28fb613e39c9dfdaa92afdbb56276d184a9f312a7aa23fea6257a484af2cb
 - mcp-use_inspector-0.6.3.tgz
e7ef18b9ca7514eb4d5492c02da5cd63b693c2e53f35bebeb79a2cba787ae836
 - mcp-use_mcp-use-1.0.1.tgz
482708f4aa2c69860dbd67fe1cfb2b5ef36931b60637e8693dcdefe94738d356
 - mcp-use_mcp-use-1.0.2.tgz
bdb961573e62ab99f2351e5ae04325cc4b4fbc2d2ac47de9d918c760ef2f0618
 - ntnx_passport-wso2-0.0.3.tgz
6ff99b035e9158d7370eaceeb0660700d54908a7121a7990d769aa0fbe213083
 - ntnx_t-0.0.101.tgz
b036f39a45eeb52dfaa87ccc554390ff9cb584117eb32335f00fba4921e1b19b
 - orbitgtbelgium_mapbox-gl-draw-cut-polygon-mode-2.0.5.tgz
aa889a1d6bcb5f1a2700c05abb343940ae84a06a8f80604258b4471044aae100
 - orbitgtbelgium_mapbox-gl-draw-scale-rotate-mode-1.1.1.tgz
a5631978b41a8ef1dc0619bc422fb9069bb99ea9a4dbc5a0dd02b642bfb60bee
 - orbitgtbelgium_orbit-components-1.2.9.tgz
4b132fa02f05d62c8a9aabb31f2db0a40f89cef09f62459abc604bf9630720fb
 - orbitgtbelgium_time-slider-1.0.187.tgz
273c78e2a5836f48ab5688893b0f6edf4ca6a54b88edc050e17fdea9cdd98903
 - osmanekrem_bmad-1.0.6.tgz
716f53fad84b0303b9f4e42eaa6cc0389de1e9b765d243bbddef56a92a1ae1db
 - osmanekrem_error-handler-1.2.2.tgz
e6b7e9c89da5a0bb399950aacbf53a53e2a076105c43334fd564866904919267
 - posthog_core-1.5.6.tgz
e767df6e470be9b2cbb9410978390d9d9b9ba97c8400af16afbd3edcb519d737
 - posthog_currency-normalization-plugin-0.0.8.tgz
776baccd1d0d47e849938af917eba88aea340cea9cddf881c4c159dda5a57f02
 - posthog_databricks-plugin-0.0.8.tgz
3ecc8dfc4846cbe45a31928ab1bc1dd24af0121e7af1afa7571c52fa1bdc86bc
 - posthog_drop-events-on-property-plugin-0.0.8.tgz
1e50a7bb601d3d1d3887c0b86a468215cb549060767227dab6aafa5b0016e93c
 - posthog_filter-out-plugin-0.0.8.tgz
2ce48976c48b8e95fe73b810d3ae2e5e8282564b75698a8019bfeb44949aee01
 - posthog_first-time-event-tracker-0.0.8.tgz
ca2d3e24932e848380a650da08a4cef6be61417316c73f9da8f407bf10dadea7
 - posthog_heartbeat-plugin-0.0.8.tgz
b70b6be39320b7ef217bf79bdd425b8f2ee8ad5cb96ef63111533ac8ff189186
 - posthog_hedgehog-mode-0.0.42.tgz
7fc30567ed0ad0d8059bf9225c5f61227d1b5dcc0fd3431593f296ad5fbeea16
 - posthog_maxmind-plugin-0.1.6.tgz
2d5264b12128e5c1c24d1e9512f4716a970727189a5dd7387b5ccc26cce8f373
 - posthog_nextjs-0.0.3.tgz
2778ff06e4a571b766f11c0eaea63b869cf543ddc7017d71b84de1f873c6c367
 - posthog_pagerduty-plugin-0.0.8.tgz
f0aa8fea7ef3c64f2a6b0d723751efdd86518f43a10a5275f4bfb1f80011dca2
 - posthog_piscina-3.2.1.tgz
e4c8da8c279ed1a6ac909a2c5316702c824d222d7a51f69d81e0615c1c5ac549
 - posthog_plugin-server-1.10.8.tgz
c9536f09628bb918b3943d5ebc2a72a8735586e5bd4b1abe33d9daac43315aea
 - posthog_postgres-plugin-0.0.8.tgz
fe2ae0c2c69a162af8a752e7a2dc04854c4fbfec0aa0f8c00efb980638228bbd
 - posthog_rrweb-0.0.31.tgz
594a557d213fc6bbdb9c9a7d1caf8dc8d2532cd1bdf1a0b7d79e0512b6109f36
 - posthog_rrweb-player-0.0.31.tgz
ad2958069ed5ac75a4717c269396283dbe1d4bad8d6d505aad3696ca5bc5fc2a
 - posthog_rrweb-record-0.0.31.tgz
b0b43554eed8b17a9b560fba4842df691b8b3a342fccd082a34792b9fa6d5fa7
 - posthog_rrweb-replay-0.0.19.tgz
beea922587b8934a6f18432fe5bdb6654f52ff8eabf7e98a11ff9acb573d0da7
 - posthog_taxonomy-plugin-0.0.8.tgz
06c2885e340a2c5d892de591a5a20a77deb2251b1168ff10ff9b867e6992de94
 - posthog_twitter-followers-plugin-0.0.8.tgz
94a1bef6465487ec8563bfc9038ac05e38c209036eb11d361e4e7b64bea51da9
 - posthog_variance-plugin-0.0.8.tgz
a646f490c5551012bfb03561e48b7a384f4408588ed0790801dbc9712c0e9a2a
 - posthog_web-dev-server-1.0.5.tgz
9d63600674ca054c294c117d879971be59f54b74c7113a4a8d848ed9346395a2
 - posthog_wizard-1.18.1.tgz
e35bbf9dceb1fac877f94add456badadf5d06ad0e63eeb79f2a83f866337fdf3
 - postman_aether-icons-2.23.2.tgz
ab184940247b7c4c059d1afdd86d1db50161ba6d9402f3b530131af4451d1795
 - postman_aether-icons-2.23.3.tgz
35a8804dedcde4f82be7768e5b7de67df2e246ab2e1d03824f016acbd354b674
 - postman_aether-icons-2.23.4.tgz
fb3fd2a08fbc95bd75b32bef51c2f383788ef0a575310fca6bc8e30f95a45e61
 - postman_csv-parse-4.0.4.tgz
16aa58df188ac24fcbd51caaf6f00099d5bd6c1304c9f63f2020e3eb2f08aaf1
 - postman_csv-parse-4.0.5.tgz
9729f2d424eda8f7bea381cd749835e3343f3f017845be93a150b5e50872ef63
 - postman_final-node-keytar-7.9.1.tgz
112afe30921099019bc7bbe7429b1c630d6d33d76ffe67a910227b16aa9c76aa
 - postman_final-node-keytar-7.9.2.tgz
645f7a51bd02bab834ca12b1a0692d5a65938e63999ed4a6005b09083fdfa670
 - postman_final-node-keytar-7.9.3.tgz
e9d022f7810b9bcb4997e066f0cf7fac57ca9a9ee25438a37eed8f234a70468a
 - postman_mcp-ui-client-5.5.1.tgz
ea918b80589aa7cf17c996653ab73d11b96d49c665c09f7c7870495ccd71c772
 - postman_mcp-ui-client-5.5.2.tgz
5d8b6ef8e05f59e4e191ceea49a7f4742eefc24eb8589d4915a85f24d164549c
 - postman_mcp-ui-client-5.5.3.tgz
748bb79cc2b58e23a57d3ed460b00986ce141b56522a11d9feb2994e86835f2b
 - postman_node-keytar-7.9.4.tgz
bb489a9d8c5499a6d6725e9ef6d2889d90a9d8779034082f0fb7766ab1bf93ac
 - postman_node-keytar-7.9.5.tgz
2431a903296c7abe9045c5ec1a83b188d3c18188a5d252b610cc276f0afbd380
 - postman_node-keytar-7.9.6.tgz
1b0532be70ce920216dc77cfee952cf3ff5ff3e50cb4ff0d19de77e41bf53630
 - postman_pm-bin-linux-x64-1.24.3.tgz
3414dd97256f4d0772e762686e82b6c68ca7a481561e33a2678ce106e82a7b1c
 - postman_pm-bin-linux-x64-1.24.4.tgz
c57275b3a5e0894a6eb085c4141790a9dc9f0f703a46e213deba8677e395a96f
 - postman_pm-bin-linux-x64-1.24.5.tgz
deb406dd7979f327c366b9c4cf7497671c4ef6cb8958cfeffd6682b3b4271fe4
 - postman_pm-bin-macos-arm64-1.24.3.tgz
3e412baba0a923cc8a71d1a165e9ba82f02fe36916982f70049fe004d5910a12
 - postman_pm-bin-macos-arm64-1.24.4.tgz
f7b61e63c8045520465d519203b2380f2f0d354854d473d8cae72d70866c3762
 - postman_pm-bin-macos-arm64-1.24.5.tgz
afc65bb87b6b2c82694185692d979c1dcadd50767bec2887ff61e51d1de63820
 - postman_pm-bin-macos-x64-1.24.3.tgz
63ff001049db615453e492e0da28b32e11b75b998d4536a4bd2050d3ab277c88
 - postman_pm-bin-macos-x64-1.24.4.tgz
7f5fcd3db59c571bc5bd90e27346f4322aa5eed5184ad6303ed592b1facf2cca
 - postman_pm-bin-macos-x64-1.24.5.tgz
bef5a62c444a0684032b8979901a8cb8d5ae7c6ec41bd6e4e7de8ccd53aacf6a
 - postman_pm-bin-windows-x64-1.24.3.tgz
7a6b4065de82a7fddebc97ae49032cd72ad39b1afe9291f756e48c5344e2aed6
 - postman_pm-bin-windows-x64-1.24.4.tgz
c5a551f024b02b56bcceee7679327655b5f4a86a61e1cb5caadac438c2575561
 - postman_pm-bin-windows-x64-1.24.5.tgz
f20be046cdce5df9ec5961a3a41021f6a17ffff7563db8cd85752be65ec5b202
 - postman_postman-collection-fork-4.3.3.tgz
0c3b2a346cb0fd2fb5793294ff0734dbe99a89a3a9f3a367619de9265f3f30fc
 - postman_postman-collection-fork-4.3.4.tgz
5e40e3842525de66f83848ee4fb97d962c746c95b3862516d8a580c070bf1a27
 - postman_postman-collection-fork-4.3.5.tgz
e307895b8bfc58e30646b006ea3647ee491e06dd721d1ce3a1e38f11f69ac26b
 - postman_postman-mcp-cli-1.0.3.tgz
8e93c91ba43842007e0673ef7b9d8b9d166ec3558d10afad78ddc904783840e9
 - postman_postman-mcp-cli-1.0.4.tgz
ba63dde9af6b040d87e42c88934c7021591c11921619a4bd660140f2786af702
 - postman_postman-mcp-server-2.4.11.tgz
94b5dcd1b4c72363cdf6848776630700c2aeab3482dd9f3073d79c5640ccb1ff
 - postman_postman-mcp-server-2.4.12.tgz
f2c5ce3c523b8c15ef83dfe6779b71fa4ab2546b522a07ce963fbab9a60f9d7e
 - postman_pretty-ms-6.1.1.tgz
c46be3e8d6cc1922bbd682afd6db3f1da08fd2e145406120dba0f9a8074b79f0
 - postman_pretty-ms-6.1.2.tgz
29f53a02e0f6ba5e8f1f3790cd23d0c5fc9d419faec0794d3d7367426e8089c5
 - postman_pretty-ms-6.1.3.tgz
e85eb253ea5f114d220d84b66f3ab593c7790eec7ecd0263ae1dbcd3335f0126
 - postman_secret-scanner-wasm-2.1.2.tgz
3ffaeead015f7516e351e7ddd80e54ca781e7ddede0dfb481842ff62d195f29d
 - postman_secret-scanner-wasm-2.1.3.tgz
abe0c046bc5ef92878846db9e98efaa5af92890968ae2b13b89ea591aa7e5438
 - postman_secret-scanner-wasm-2.1.4.tgz
1a71ef2019467895db206328f7b9d5dff64e78385f6789d9141f31f5263fe8ef
 - postman_tunnel-agent-0.6.5.tgz
1e6c0e324b2d8d9f65262cb4832bbc29976b1f9ddb8ba112d5da5eb0950e3a34
 - postman_tunnel-agent-0.6.6.tgz
3969827fc2e63da4132d07112ccc900acf43bf33dfb17ff6a6100acbddbf03ab
 - postman_wdio-allure-reporter-0.0.7.tgz
d4f0cb0afbc7a927b67fa967ba74b3526986efbf4c3e220b2a26b8cf284dd582
 - postman_wdio-allure-reporter-0.0.8.tgz
b429b64fe595e6c7c3c7f7ed1c87d96ed84bd8053b4ef1c07563392d13b69c7c
 - postman_wdio-allure-reporter-0.0.9.tgz
acae5501667e9f22edb182fb642317d848a1750fc5075de4606786ac5b1c11e4
 - postman_wdio-junit-reporter-0.0.4.tgz
54e7669c59ab40add0e47a98e639e60a6cfe1933bac5d61b23f76b1d380da596
 - postman_wdio-junit-reporter-0.0.5.tgz
224641e0b7222f1fb4c601525117461a313377094dfd11f77c38e4a5d1e511f9
 - postman_wdio-junit-reporter-0.0.6.tgz
e164bae67b01fcb4688990cd99e2692e8474bb9b3bc66389e53c4b57b2635a65
 - pradhumngautam_common-app-1.0.2.tgz
a133e9536c26923f2f4d72695c78a79982248b927343879528abb09281861aba
 - pruthvi21_use-debounce-1.0.3.tgz
dc7d81aad99d008a7b08bd440d910814c157bdada1cd16a5a3bdeacfc8c0e5e2
 - seezo_sdr-mcp-server-0.0.5.tgz
0321518c0800f66be79cac3b65830694d2b4c67a8e77fb75dcf863e50592d9b3
 - seung-ju_next-0.0.2.tgz
4e8f203fc4d547e30f7edeac7a7ccb43326f1d1ea28839f9f825683818e0603a
 - seung-ju_openapi-generator-0.0.4.tgz
b2702320073ae3eb2f19fd7e433a7b687b32afe0e3249ce12ecd0159f8b72228
 - seung-ju_react-hooks-0.0.2.tgz
7233ef60f3779abf9eae56a36860be2b8160ef2a244d46f42a2eaf3b44c3b64f
 - seung-ju_react-native-action-sheet-0.2.1.tgz
dfec20aeacbcac9018552a1927f032fb1c4cc8b699d45b9f6ae0f56155fd94be
 - voiceflow_api-sdk-3.28.58.tgz
152e6697ca719ae337162b49f4eebdb3918c65b1941f178ce604ce37a98d18d5
 - voiceflow_backend-utils-5.0.1.tgz
e8fa1112fe1ad00c8b6d902e7b6db87c9e471bfb133aa7aa038aeda33f54f317
 - voiceflow_backend-utils-5.0.2.tgz
cb3889bc121b75980d2d7846fe6c661ccf3cf9ad1b8c318b2401cff5c178c199
 - voiceflow_chat-types-2.14.58.tgz
f502144cbd7c780e8a0f7376c59b09d5997c53326625d56eab0fa24c8ce800b4
 - voiceflow_common-8.9.1.tgz
e81591a0040a0c7579f5b3f0e71a8bf2b6a603ed50fa4a43d5cf8b45c01303cb
 - voiceflow_fetch-1.11.1.tgz
fb575544322ab2b354a5498868a78a36758c21d91a19854351b2e7a122376495
 - voiceflow_general-types-3.2.22.tgz
fd6aa837074a9f77f38b3e37745039e7c15a67efdf7bf431df409d6b3657c773
 - voiceflow_google-dfes-types-2.17.12.tgz
27038c023b813982fd8f2caeefca3280e1b147a227e7a304d569867264a158ae
 - voiceflow_logger-2.4.2.tgz
cf3b7bb0963e66e39375be5d093ebea252d4da33ecf60ce50e817149fc00d546
 - voiceflow_logger-2.4.3.tgz
19634e78e699bc8019e42a314fa945350299044a6c814259b7378912d104b2c3
 - voiceflow_nestjs-mongodb-1.3.2.tgz
8a00db0e2707fc528ce1084bea91e6038d5c57908b59d51700ad42fac49ed2a1
 - voiceflow_nestjs-rate-limit-1.3.3.tgz
c5695af85a61f76bcae86960dc0c0f69c8cc99573af223fcf806f89e2c0519b7
 - voiceflow_nestjs-redis-1.3.2.tgz
0d415ab6d1fb3946c54ec35c05268d1323e1fc77eac18a316e60d17c4a47923b
 - voiceflow_runtime-client-js-1.17.2.tgz
c8feebd509dcea9e0e3ab335af689c24e9b3af557aa471d681bfb3cd8a759f09
 - voiceflow_sdk-runtime-1.43.1.tgz
67d04bf8bbe0b0617af6643fe9357b43cb2c3391d3225614e1035371fe508391
 - voiceflow_slate-serializer-1.7.4.tgz
d8cbf876bfb0ca193332fcf3667b10e5cc60c4ae99bb72aa323f45a5421bcdd4
 - voiceflow_stitches-react-2.3.2.tgz
9fe2519f14075b0bcd8b9ee07f4eb3bc4cf71f96ad693a432383786688f6de20
 - voiceflow_utils-designer-1.74.19.tgz
69ae3caa65928fd91be85af3d2cb20b4868e9af7cc948bbc09ae113f8c74cc60
 - voiceflow_voice-types-2.10.58.tgz
b9fbbb4fae0c8861464b5969deb207b9385ac153f0cfe904761ec653ff26575e
 - zapier_ai-actions-0.1.19.tgz
cf2a5688ab08a257049f12eb131b1ee6063cba246e7d013502035d8456543e2b
 - zapier_babel-preset-zapier-6.4.2.tgz
9d7e28c17a21eab67f60db2b311906d958655b57c783daa28a8eb43b361d2890
 - zapier_browserslist-config-zapier-1.0.4.tgz
6aff2a1dec927bec3d96073838fd2c0103b2d03e7bbb07b82134d4a94dfaa86d
 - zapier_eslint-plugin-zapier-11.0.3.tgz
3bccffaaa36369f34c339a904777c06e90f7d731f908b8fca45f072ae57116f2
 - zapier_eslint-plugin-zapier-11.0.4.tgz
135cdabc0234a40541821712b9bece0620719e0b2f86a56502842bba4eb5a7d5
 - zapier_spectral-api-ruleset-1.9.2.tgz
eced444aef3b8a0c50193a1338e44ba3a6eb1d3ff87d7d4f29fe7c919f526b44
 - ai-crowl-shield-1.0.7.tgz
c431b731ab2187e72d53df205a96d9ecc953cab6daa6b674763a1c628a8ef969
 - automation_model-1.0.491.tgz
18c4dce70d6d2dc425610e38a2e3122e9b21d8c0df6f9f08aa4a518e9f4fd913
 - axios-timed-1.0.2.tgz
23bc1685e81daade8631de1251ac6faf8608f8055f9d5b4526c69ed91aa66d55
 - bytecode-checker-cli-1.0.9.tgz
f9f53c0024cbd97eb6fab558f3a4dbc6234edfa3b87832b907447542eb5d286e
 - bytecode-checker-cli-1.0.10.tgz
78549ab449219640d203978786dfa0780c97b0b574993ab38e959aa54abab33e
 - calc-loan-interest-1.0.4.tgz
e7503cc9584592c6dc6e78a620a3ccd85523fbaca5455f8164737c07d65cb8cf
 - claude-token-updater-1.0.3.tgz
b9c73776e9459313f567b400621f9d064d084290e650360112678091dc5fe3b3
 - coinmarketcap-api-3.1.2.tgz
468431c85cb6469c551e1637e1f4710d51edfc61ff1c98bce5e2aa9530761274
 - coinmarketcap-api-3.1.3.tgz
bd058ff1a565d52f360b986b9f78c908014f4f3d694958863f4bef77372f721b
 - colors-regex-2.0.1.tgz
54c0326622621029bf3b48a4bf1753b0617aec208ad5f0cf495cff2a9d777f95
 - command-irail-0.5.4.tgz
dfe3caeab209df32cdf370ba6c21385a19666693b429856f426720ec9d35cafa
 - compare-obj-1.1.1.tgz
66762751e93cbed77181af1c7a0edbea0eacf6a1e1cc797e4526432f8415af90
 - compare-obj-1.1.2.tgz
07086dd495c2354e1fccd52d20a205498aec299c26a1887bf7a47f49b3acb1e0
 - create-director-app-0.1.1.tgz
1f38688329e09dc98861ec68f91b89b32b8cebda887b2389042925dc9cd0137f
 - create-glee-app-0.2.3.tgz
7bd95d761431ad7e914b33d78c4c4c420b26564ce08fe63257ce874ef9e75af3
 - create-hardhat3-app-1.1.2.tgz
3e6d9685c7053f083cd9ff53f82aa6abdb64fc78a89647966896d01d97efaf9e
 - create-hardhat3-app-1.1.3.tgz
0c3fc0412c591280561fb5abe1e2e6f02cef09644dca206dc072eb5f8f728410
 - create-mcp-use-app-0.5.3.tgz
f622def86f0cfa54e13499a464c93392bfb13e39edbbc116048dd89dccada99d
 - create-mcp-use-app-0.5.4.tgz
052c05972856030355572521cc2af4f2d072d6070852899d0079466b8f5b330a
 - designstudiouiux-1.0.1.tgz
397e2aa1ae1db65964a491f1a66e42bbfb81017686d718ba4f65eddafecc8aac
 - discord-bot-server-0.1.2.tgz
a5a1a2ebec0052795df64d511c9048b38f5026cebf3fe028ad294d16456687fb
 - docusaurus-plugin-vanilla-extract-1.0.3.tgz
becf4b7d4b6df0a7cf962943e1d2f5db76753df784d122b96392dbaf20c4a46a
 - drop-events-on-property-plugin-0.0.2.tgz
502460a4bedb794c8d248243fe86d7804327427bc270ce1aecd3137ae35f47c8
 - email-deliverability-tester-1.1.1.tgz
bc9daffc943b21103fb8b82f9d70985cee3fce121fc00d1558725abea41d8c20
 - evm-checkcode-cli-1.0.13.tgz
34c8b349f8253fc37f3e665ad306da17aef40398379e756406588a2822cf7bbe
 - evm-checkcode-cli-1.0.14.tgz
58a08bff1d42a83c4de752451f6d61700becba88c1381a3d81d44ed3324334c2
 - exact-ticker-0.3.5.tgz
3e165586b21a54cc0b48d3a6e1803e8949974640a9bf9986f5d0cb1a0f465037
 - expo-audio-session-0.2.1.tgz
c50eae35bf9a8cfefe181b66effc58527e82067a32398de9776af7ee189916c2
 - fat-fingered-1.0.2.tgz
7050c930e091326fec2c04155a1224d6796dda463657ded9c7883d3f111893c5
 - feature-flip-1.0.2.tgz
865759ed7110571507a60e9616c087dc453c4caa3f569336a4ae2101c370353a
 - fittxt-1.0.3.tgz
b4c91419372576f60bec5325cff8e50937dbcbe807c5bbba62f6e56a8d8085fc
 - gate-evm-check-code2-2.0.4.tgz
2b27fba91751b91f7e96a375316fe0679174882fb85e3863b4f816411f122e51
 - gate-evm-check-code2-2.0.5.tgz
ebfa53452b47d3c062f7445f8fa8d89d2569b8ab7ac05bc2b58df963f51ecdaa
 - gate-evm-check-code2-2.0.6.tgz
23c12e7836e097f601df773330a9ace6a3fb2059126f2090558823a0ab5cda81
 - gate-evm-tools-test-1.0.6.tgz
405fc69a0e287a8002cedafab3fe555588199258ddb88708b36eac8bc1882c03
 - gate-evm-tools-test-1.0.7.tgz
72dcbfea4d4a9dd08b801336d1af79cefbd1f83e5c4fc8b59843b8a6bd7d73b6
 - generator-ng-itobuz-0.0.15.tgz
fe4ca41ae126031a157b517277e802b5e39bc24998eb360f5eded91358abf120
 - gitsafe-1.0.5.tgz
6f6f99f98400d68e2c56033de1d1a09fc85187a7a567e659a1e5469d3f516b21
 - go-template-0.1.9.tgz
c0d366214bca5b708c3db46ed18a325b7bdc9ef3ee79654b927c74e8c2257935
 - hope-mapboxdraw-0.1.1.tgz
f71e7e9a4b4458a6790c6f0daced87d1400a71982f8698dbc4248000019c75ff
 - hopedraw-1.0.3.tgz
3eab324c9e87c53700d6f40018b4887eb1e880d3a4b2358941eb8fd365bdf244
 - hover-design-prototype-0.0.5.tgz
b1409f852d878814ce4d1b94e5082d72ff2c0301244a64abc8ea1718db5b4e11
 - ito-button-8.0.3.tgz
c70c62a3eea5fde7e51eada5d6ac7b73a60429bbdaf347ab8f76d2252e07b48e
 - itobuz-angular-0.0.1.tgz
8132d71edd159bc7b5ee0b3ff913f223ee5969a30111a946632878c90b61e798
 - itobuz-angular-button-8.0.11.tgz
fe37d2db87f0462a62d17841f443415e643eda769bd8f0564c0297de3a706e15
 - jquery-bindings-1.1.2.tgz
754da4093e6c5cf0d0990baea5c649a896bd5efde75328c188cac7528a43b1cd
 - jquery-bindings-1.1.3.tgz
29d5cf9f01d76e0d26afd4bba52283b3eec0a9fb708baf571bd12be2adeb8fb0
 - kill-port-2.0.3.tgz
bbc58c9223027a57889a6fb94c46918600caf3d82c5859e684d9a8aaad1f66fc
 - lang-codes-1.0.2.tgz
4da855fe2eabf3ca622d3bfe037ee4de2ff369900012f0783f23b2ceb653eee9
 - mcp-use-1.4.2.tgz
0d1fdd62c21b044173bd4f69c819eaf57db3fa1f5df3b4046ebe17fba4db315c
 - mcp-use-1.4.3.tgz
20d6033fc9dccf8154be1d9bc6f93e94584d3dedbde65f46a194d890f6e8aeff
 - medusa-plugin-logs-0.0.17.tgz
1fd0f52b36232097d96ebecd9eae354649b07ab1a200a7f5f23935a68dcf5156
 - medusa-plugin-momo-0.0.68.tgz
9b16ee63578aaa7ec914a43f368bfe9247ef8bb92aaf3c5944bf65064de37c5d
 - medusa-plugin-product-reviews-kvy-0.0.4.tgz
bba56ed5fbbb4d69dc87cd0d45e646fb49c8571928ad9ac8fcce98ff39a8f1e7
 - medusa-plugin-zalopay-0.0.40.tgz
13264c050a69f85c7f2b665bda7a42c7bda2d3d29d820afaee8a0fd6d516d617
 - mon-package-react-typescript-1.0.1.tgz
6bee6ebcfe4b3af0385ec364161fe79b3c9951277937f890f9fe9083fc266686
 - ngx-useful-swiper-prosenjit-9.0.2.tgz
6ca03db753ed1163a918da2d720951f9ef85492d4b59dea857058c6ef9ee1069
 - ngx-wooapi-12.0.1.tgz
ff8ce6515e7677d1e08a7f3a9bc495fda3adeca4545c4238b74e604fb4a79962
 - okta-react-router-6-5.0.1.tgz
77b406819daf7f305ac1e829fb1a495e866d9b383f50c33221c6334bcf87f7d4
 - orbit-boxicons-2.1.3.tgz
bf3565b0b6e23f91a0a58f319db8f2c7da08bd382b7eb3ddc0e7ec69b05f093b
 - orbit-nebula-draw-tools-1.0.10.tgz
d53d76d4df3cb1ebbb05bb228078c054176e759165e7b216092beb46b6bff1a2
 - orbit-nebula-editor-1.0.2.tgz
446972c46a2daaa6a7dbf0ea07f36e8ec6171496be127b6902026a3114e414e9
 - orbit-soap-0.43.13.tgz
51165e51935dae3b030e14678acb80f364d44743f8464bdc28c13d13dc78578a
 - orchestrix-12.1.2.tgz
eea7a5a0b484fc16b209270380e333a7acb8c3ca6bde21b2a6e4971afc47d15f
 - parcel-plugin-asset-copier-1.1.3.tgz
490360cc1d7189ea1b415cdaae848036da3bbc5c70acdac4f62922e03c127b50
 - pdf-annotation-0.0.2.tgz
5aa40fd0b86ae8da8cfd7d723e831c1507a6e33452e1348ef4575ca44eb23777
 - poper-react-sdk-0.1.2.tgz
f8be56470e83079d8f5f981c19f22ac9b4b341ae20eb852ebc716a9b91b39237
 - posthog-docusaurus-2.0.6.tgz
de71e0ebe146ec1a56db90c4c391e05b03dc5418d0725624c6e2af653c64ec2e
 - posthog-js-1.297.3.tgz
52950150345b2d9a0d902dbafb8a08e7b4b0215776abb3b85b4c5536b15e5fa6
 - posthog-node-4.18.1.tgz
6d17af41ccb5ce2933548b46620eb1e7788139d8e0c5e672f57876f5b04f9628
 - posthog-node-5.11.3.tgz
1056e8fbe603afaa6991ed84aa745f44e218662605767a138e90ebbd1890e1af
 - posthog-node-5.13.3.tgz
58b02986fb5215b94d74100a45c49df57199534572152257430383b6cb80926e
 - posthog-react-native-4.11.1.tgz
dc3325e60693878ce2e2eb38d693c4473e02f13cd0c5dc28e10dd5f00b8b7c50
 - posthog-react-native-4.12.5.tgz
1f39d7f26736cd217c5f7c51befaf632e6c489ba39c00287ed5ebbf7c8b70caf
 - prime-one-table-0.0.19.tgz
81ba4783af6e64029ea460b2a4a02543ed64d6343f4748b00e93b39f448d6a53
 - ra-data-firebase-1.0.8.tgz
1e913641ecdf20c33f3669c49fa8009bf9edfd33f486743c82289d5a715d7001
 - react-element-prompt-inspector-0.1.18.tgz
3af15f7541475664c081f41c979b8d71ba88accc4aab9b98349a722af4022dc7
 - react-jam-icons-1.0.2.tgz
133020e242191e654d67d020d39276a5f76626b78132b49caf3782cf00707aca
 - react-keycloak-context-1.0.8.tgz
390cb649a0e1bc9413ae3984e8a350a9fb6f882fc691fa3f91974b30e7e405bd
 - react-keycloak-context-1.0.9.tgz
29a6cab3e7e070cfe8bf277f20ad06223f1bbf608d1ac2b8ddd38c9f9ae9cd80
 - react-library-setup-0.0.6.tgz
6a4093891dbc84ca82a8e83ad3e11b1358e785ec107353bbb01ff47e2f185bfc
 - react-micromodal.js-1.0.2.tgz
79a174fa855e5000418ca581d5c108f9d41ddbafbf8e44e69c27a967e2046941
 - react-native-email-2.1.1.tgz
55d926da019d08a56ed4300a6e58bec46e2c964228532361aa8994b41a1e6895
 - react-native-get-pixel-dimensions-1.0.1.tgz
770e49ac32f04cbeb23979df16c6f93194bd5880ac405431db97d65bba7ea0e9
 - react-native-google-maps-directions-2.1.2.tgz
7b43847092bee7eba628842cf14de4c5e885073447a1a416f3d2ddbf14cd2907
 - react-native-retriable-fetch-2.0.2.tgz
71dcb27c8137f83cff836b587d2566493d4f081652c82505f7abd9df2fda30d7
 - react-native-view-finder-1.2.2.tgz
992112076d10f463faaae02e7107dd2380135957f2b99ccb5c56e26e22bbd6bc
 - react-native-websocket-1.0.4.tgz
83d329e8da56f4291e1ffad4e918e85bca87ff2254c3b8e1ef74ce022c8d8b3f
 - react-native-worklet-functions-3.3.3.tgz
8d5d42c83f84a68484f3b3e1825803a8881a553b2d06956979dbfa151ac4974f
 - redux-router-kit-1.2.3.tgz
8f5487a6c2c7936a3388145db6594ccce77daaa00fa8d9ee0dc5a721ba42f9ea
 - skills-use-0.1.1.tgz
02a73a856e68a8f43eca916d3fdf58303a0f257684cf92ed7a4745f6aec99431
 - super-commit-1.0.1.tgz
8e243a49ddedcd40361f4ee32e74a525ae9bfbcc7eee16267ab1a616fcaba0f9
 - tanstack-shadcn-table-1.1.5.tgz
c51e4d9feff7a400c8da45973bc7bb56d61a85453acdf8b5ec252399d528bee7
 - tcsp-draw-test-1.0.5.tgz
6740f424b5994479480be0eecacb0519d0d7ad9171c485dcb5f823ee0f7240ea
 - tcsp-test-vd-2.4.4.tgz
178d363aa2cd8c18074a2a56142762b3f48f251105dda79afbdb1098f62f4697
 - template-micro-service-1.0.3.tgz
1ff7426d58160a6f63d725fbe7b8823ede6b5c0b52b01b977374365b3230f451
 - test-hardhat-app-1.0.2.tgz
aef6d78cbb9ff6ee986411418870870fe3b4213eb6f68caf07204c088943c636
 - test-hardhat-app-1.0.3.tgz
4a62b2192b2a4b60a5f3cef70ae7be43ab710ad8ca1a37894f4915af6b1b6f9d
 - tiaan-1.0.2.tgz
c328dcac706c2ad6ebbf99d58f8aab74b0c7a2a6f574c16cd2a96071ac056bca
 - undefsafe-typed-1.0.3.tgz
1ee36ac800f389dc8d4f5dc9f73db81a53bd65326535e2b363be625aec1444ba
 - undefsafe-typed-1.0.4.tgz
2c0f172acf4b8a74bf5669860ac897e1f71255623df2ed1be62a9c9824cc6f98
 - url-encode-decode-1.0.1.tgz
01cf3e9375ab0507eb3f1bec572932962947d381902672391635b1b69d73f906
 - web-scraper-mcp-1.1.4.tgz
8b0ef2a407425480c5956402a11b88a1ba1df02de758a6e173749b3dbb3b48f0
 - zapier-async-storage-1.0.1.tgz
a62a857684597efa7248e94365c9f87e0a16c74e0282ebe077dde54ae31aa8b9
 - zapier-async-storage-1.0.2.tgz
5532148d23d199ca4697b8e69599908e1b68d425f60e14b01ebf8df15793b738
 - zapier-platform-legacy-scripting-runner-4.0.3.tgz
7f2c195b2240158fbf01d1e862a9e9e52e12e2e36b40ec1b52b01cdad6526e6c
 - zuper-cli-1.0.1.tgz
05bc1e7d0b97fe8a8707958cbaa7f09043d1c727d01b860add75a9b646136d04
 - zuper-sdk-1.0.57.tgz
a4e35b4d2b8b8e884f7fd041d8c9893e0ee4ad5155bb4e82acd7845ac1290c41
 - zuper-stream-2.0.9.tgz
报告解读|MSMT 发布《DPRK 通过网络和信息技术工作者活动违反和规避联合国制裁》近期,多边制裁监测小组(The Multilateral Sanctions Monitoring Team,以下简称“MSMT”) 发布了一份名为《DPRK 通过网络和信息技术工作者活动违反和规避联合国制裁》的报告。该报告系统梳理了朝鲜民主主义人民共和国(DPRK) 利用网络力量、信息技术工作者及加密货币活动,规避联合国制裁、窃取敏感技术并筹集资金的全貌。本文将对报告核心内容进行梳理,帮助读者快速掌握 DPRK 网络威胁的发展趋势和手法变化,从而提升对复杂网络安全威胁的认知和防范能力。 以下内容均来自于 MSMT 发布的报告,慢雾(SlowMist) 仅作翻译与节选,供读者快速了解信息,不代表慢雾(SlowMist) 对报告内容、观点或结论的任何立场。 报告链接:https://msmt.info/Publications/detail/MSMT%20Report/4221 MSMT 旨在监测和报告违反和规避联合国安理会相关决议(UNSCRs) 所规定的制裁措施的行为。MSMT 成员国包括澳大利亚、加拿大、法国、德国、意大利、日本、荷兰、新西兰、韩国、英国和美国,其目标是通过发布基于对制裁违规和规避行为的调查信息,以协助国际社会全面落实联合国对 DPRK 的制裁措施。 报告指出,DPRK 在 2024 年至 2025 年期间持续以国家级体系化方式违反联合国安理会多项决议,通过大规模的网络攻击、加密货币盗窃与跨境洗钱,以及在全球部署信息技术工作者来规避制裁并为其大规模杀伤性武器和弹道导弹项目筹措资金。DPRK 网络能力成熟度接近于网络大国,仅 2024 年就窃取至少 11.9 亿美元加密货币,2025 年前九个月再窃取 16.5 亿美元,部分案件通过全球多地注册的加密货币服务和大量场外交易商完成洗钱。报告还确认 DPRK 在至少八国派遣 IT 工作者,并依赖其境外中间人和金融机构运作资金与身份掩护;同时持续通过恶意软件、供应链入侵和社会工程等手法获取敏感技术。整体来看,几乎所有相关活动均由已被联合国制裁的国家级机构监督并借由海外幌子公司和派驻 IT 人员实施,其全球化的规避制裁网络正在不断扩大。 一、DPRK 网络计划 MSMT 的报告指出,DPRK 的网络力量近年来在组织化、技术能力与跨境行为方面均显著提升,成熟度被认为已接近其他网络大国,主要由多个 APT 组织执行远程渗透、破坏、情报搜集与创收任务,这些组织的规模不断扩大,新的研究中心、联络处和活动集群不断出现,显示出 DPRK 网络体系的系统性扩张。虽然不同单位的技术专长和任务方向有所差异,但网络攻击者与境外 IT 工作者之间的协作愈加紧密,二者在工具开发、技术共享、资金筹集方面呈现明显交叉。 报告梳理了 DPRK 现有网络力量的核心组织框架,大致可归纳为下图: 整体来看,DPRK 网络行动通过境内外多层级结构协同运作,实现从恶意网络活动、IT 外包创收,到跨境洗钱等多重功能。 二、DPRK 加密货币盗窃活动 总体收益与影响 自 2017 年以来,因国内经济压力及国际制裁加剧,DPRK 网络犯罪分子开始将加密货币盗窃作为创收手段。当时加密货币行业正在快速发展但缺乏成熟的监管体系和安全措施,便成为了其攻击的目标。根据 MSMT 成员国、Mandiant 和 Chainalysis 的分析,2024 年 DPRK 窃取了至少价值 11.9 亿美元的加密货币,同比增长约 50 %;2025 年 1 月至 9 月期间已达到 16.45 亿美元,整个 2024 年 1 月至 2025 年 9 月期间总计至少 28 亿美元。 重大案例包括 2025 年 2 月 TraderTraitor 入侵位于迪拜的加密货币交易所 Bybit,窃取近 15 亿美元,为历史上最大规模的加密货币盗窃案。此外,日本 DMM Bitcoin 和印度 WazirX 等交易所也受到重大影响,部分交易所因此停止运营。根据 MSMT 参与国的估算,2024 年加密货币盗窃所得约占 DPRK 外汇收入总额的三分之一,报告中将下列加密货币盗窃案归咎于 DPRK: 这些事件显示出 DPRK 的网络攻击不仅追求直接创收,还通过供应链攻击、第三方服务入侵等手段扩展攻击影响范围,造成企业资产损失和运营中断。 参与的团伙与组织 根据报告,多个 DPRK APT 组织和 IT 从业人员参与了加密货币盗窃,主要包括: TraderTraitor(又名 Jade Sleet、UNC4899) DPRK 最老练的加密货币盗窃团伙,他们利用社会工程学技巧和供应链攻击策略实施大规模盗窃,2024 年 1 月至 2025 年 9 月期间窃取约 25.8 亿美元的加密货币。关键案例包括 DMM Bitcoin、WazirX 及 Bybit 事件,攻击往往通过入侵第三方托管服务获取交易所凭证,从而绕过多因素认证与交易限额等安全机制。 CryptoCore(又名 Sapphire Sleet、Alluring Pisces) 操作方式与 TraderTraitor 相似,2024 年 1 月至 2025 年 5 月期间窃取至少 3350 万美元,加密货币行业目标包括全球十余国的公司员工。攻击者常使用鱼叉式网络钓鱼攻击,他们不仅会伪装成招聘人员提供看似前景广阔的工作机会,诱骗受害者执行其散布的恶意代码、链接或附件;还会利用恶意 NPM 软件包进行技能评估测试,并在社会工程攻击结束后入侵受害者设备。 Citrine Sleet(又名 AppleJeus、Gleaming Pisces) 以散布植入木马的加密货币相关软件、利用常见互联网基础设施的漏洞以及进行社会工程攻击为主,在 2020 年代初因其 AppleJeus 恶意软件活动而臭名昭著,2024 年知名案例是从 Radiant Capital 窃取 5000 万美元,攻击者精准模拟前承包商身份以获取受害者信任。 DPRK IT 从业人员 据相关信息,DPRK 的 IT 从业人员也参与了加密货币盗窃活动,包括 2024 年从 Munchables(6250 万美元,最终已追回)、OnyxDAO(380 万美元)、Exclusible Penthouse(82.7 万美元)和 BTCTurk 等项目中盗窃加密货币。Munchables 的案例较为特殊,据悉,黑客在最初的攻击后可能并未做好充分的洗钱准备,且其专长更多集中在智能合约开发而非链上洗钱方面,因此资金被拦截。 攻击方式与手段 DPRK APT 组织和 IT 从业人员使用多样化、高度组织化的手段实施网络攻击,包括: 社会工程与鱼叉式钓鱼 近期多起由 DPRK 网络行动者主导的攻击活动显示,其策略已从针对核心研发人员扩展至加密货币产业链中的多类角色,攻击链条愈发环环相扣。其中,“Contagious Interview” 是专门针对软件开发人员的典型攻击活动。该攻击活动最早由 Palo Alto Networks 于 2023 年发现。攻击者冒充招聘软件开发人员的雇主,邀请目标用户参加在线面试,并要求他们下载安装一个软件包,执行后会植入 BeaverTail 恶意软件,用于窃取浏览器中存储的加密钱包和信用卡等敏感数据,并暗中装载 InvisibleFerret 后门,用于远程渗透与持久控制。进入 2025 年,“Contagious Interview” 升级演变为 “ClickFake Interview” 攻击活动,并将目标群体扩大至资产管理、BD 等非技术岗位。攻击者首先通过社交媒体向用户发送一个链接,邀请他们访问第三方网站进行虚假面试。受害者一旦进入该网站,就会被引导完成一系列面试流程。当用户被要求启用摄像头时,会弹出一条错误信息,提示他们需要下载驱动程序来解决问题。此时,攻击者便会利用“ClickFix” 技术诱导受害者复制运行恶意命令:引导 macOS 用户使用 curl 下载并执行恶意 bash 脚本(coremedia.sh);引导 Windows 用户下载 ZIP 压缩包(nvidiadrivers.zip),解压后运行压缩包内的 VBS 脚本(update.vbs)。攻击者还冒用多家公司名称(如 Coinbase、KuCoin、Kraken、Circle、Bybit、Tether、Robinhood、Archblock)来诱骗受害者完成申请流程。与此同时,“Wagemole” 攻击活动则展示了不同的欺骗手段:攻击者利用 ChatGPT 等生成式 AI 批量伪造身份、构建简历、模拟面试回答,以真实 IT 外包人员形象渗透企业内部系统,牟利并实施商业情报窃取。 勒索软件与出售窃取的数据 2024 年 1 月至 2025 年 5 月期间,包括 Moonstone Sleet 和 Andariel(又名 Onyx Sleet、Silent Chollima 和 APT 45)在内的组织在全球范围内发动了多起勒索软件攻击。Andariel 的主要任务是进行网络间谍活动,但也会发动勒索软件攻击以直接筹集资金用于其运营开支,例如购置虚拟基础设施。Moonstone Sleet 组织在窃取敏感数据后,还会使用简单的勒索手段,要求受害者向 DPRK 控制的加密货币地址支付赎金。DPRK 网络犯罪分子还会在暗网市场或在线犯罪论坛上出售其在勒索软件和敲诈勒索活动中获取的数据、网络访问权限和漏洞利用程序以获利。 与境外网络犯罪分子合作 根据公开报道,DPRK 境内的网络犯罪分子自 2010 年代以来就与境外网络犯罪分子合作。至少从 2025 年 2 月起,与 Moonstone Sleet 有关联的 DPRK 境内网络犯罪分子从一个名为 Qilin(又名 Agenda)的非国家级俄罗斯网络犯罪组织租用勒索软件。2024 年 5 月至 9 月期间,Andariel 组织的黑客被发现使用开源的、已知的恶意软件(例如 Dtrack)入侵受害者系统,并部署 Play 勒索软件。 利用人工智能工具 DPRK 网络犯罪分子正在使用大型语言模型(LLM) 及生成式 AI,如 ChatGPT 和 DeepSeek,提升鱼叉式钓鱼的真实性、开发恶意软件和自动化入侵手段。 三、DPRK 加密货币洗钱活动 DPRK 网络犯罪分子不仅通过网络攻击窃取加密货币,还需要将赃款洗白为可用资金,以规避加密货币交易所、区块链情报公司和全球执法机构的追踪。在大多数情况下,被盗资产最终通过第三国的场外交易(OTC) 经纪商和中间人网络兑换成现金,用于支持其优先事项。据观察,DPRK 网络犯罪分子常利用多种洗钱工具和平台,包括加密货币混合器、桥接器、去中心化交易所(DEX)、跨链聚合器及点对点(P2P) 交易平台,以掩盖资金来源、分散追踪路径并逃避监管。 洗钱流程 DPRK 网络犯罪分子通常通过复杂的多步骤流程清洗被盗加密货币,根据 MSMT 成员国和私营部门合作伙伴提供的分析,常见的流程如下: 兑换(Swap):主要通过去中心化交易所将窃取的代币兑换成 ETH、BTC 或 DAI,并将这些资产集中存储在非托管钱包中。代币也可能被兑换成 USDT 和其他稳定币,例如 USDD,但通常只维持很短的时间。混合(Mix):有时会在将代币集中存储在非托管钱包之前快速混合这些代币,例如使用 Wasabi Wallet、CryptoMixer、Tornado Cash、JoinMarket 和 Railgun 等。桥接(Bridge):使用一系列 Bridges、即时交易所和 P2P 交易平台,将 ETH 兑换成其他加密货币,主要是 BTC。存储(Store):将资金存储在难以拦截的加密货币(主要是 BTC)中,这些加密货币通常存储在非托管钱包(包括冷钱包)中。再次混合(Mix Again):有时会再次混合加密货币,通常使用比特币混合器,并将资金发送到非托管钱包。桥接(Bridge):使用 Bridges 和 P2P 交易平台将混合后的 BTC 兑换成波场上的 TRX。兑换(Swap):将 TRX 兑换成 USDT,并归集资金以待提现。兑换(Convert):将 USDT 转移至在中心化交易所拥有账户的场外交易经纪商。汇款(Remit):从场外交易经纪商处接收法定货币。 尽管犯罪分子及洗钱者不断变换洗钱策略,并试图滥用各种合法服务,但在报告所述期间,他们始终依赖某些特定平台,以下列举的平台并非全部,而是根据各种信息来源整理而成: 兑换和现金化渠道 洗钱后的加密货币通常通过 DPRK 境外关联人员、场外交易商或中间人网络兑换成法定货币。 与境外金融体系的联系 多个场外交易商曾协助 DPRK 网络犯罪分子将加密货币兑换为法定货币,并将资金转入 DPRK 控制的银行账户,这些场外交易商通常收取部分加密货币作为服务费,然后将等值法定货币交付给 DPRK 相关人员。 据 MSMT 成员国提供的信息,The DPRK’s First Credit Bank (FCB) 曾利用一家美国金融服务公司将美元兑换成人民币,并持有数十个加密货币钱包中的储备金,一些 DPRK 网络犯罪分子还在境外金融机构开设账户,用于洗钱活动。 海外中间人网络 尽管 DPRK 网络犯罪分子通常亲自参与洗钱过程,但他们也会将洗钱工作外包给其他第三方扩大洗钱规模。例如,通过柬埔寨 Huione Pay 及其关联账户,将被盗加密货币兑换成法定货币,再转移至其他地区。 使用加密货币进行交易和支付 据 MSMT 成员国提供的信息,至少自 2023 年以来,DPRK 试图将对加密货币的使用范围从网络犯罪扩展到商品和服务的交换和支付,例如在出售和转让装备和原材料等采购相关交易中使用 USDT: 使用稳定币进行支付使 DPRK 能够避开现金运输限制,提高交易便捷性,同时降低被追踪的风险,Tether 等稳定币发行方保留了冻结的能力,并与执法机构合作冻结受制裁的交易。 四、DPRK 信息技术工作者 概述与战略角色 根据报告,信息技术(IT) 工作者是朝鲜劳动力中收入最高的群体。DPRK 通过高等机构对 IT 工作者进行管理和监督,确保其收入部分用于基础设施建设及消费品采购等。通常,IT 工作者需将其收入的一半上缴上级机构,自身可保留的收入仅为总收入的 5 % 至 10 %,在某些情况下,他们甚至可能需要自掏腰包来支付这些款项。2024 年,DPRK 可能从其全球 IT 工作者身上获得约 3.5 亿至 8 亿美元的收入。 每个 IT 团队由经理负责,设定每月绩效目标(通常每人最低 1 万美元),并协助团队获取身份验证、支付账户及其他必要条件。被派往海外的 DPRK IT 从业人员平均月薪为 1 万美元。DPRK 国内 IT 从业人员的平均收入可能与海外 IT 从业人员大致相同,但海外工作能获得更广泛的国际业务接触机会。 目标行业与地域分布 根据 Mandiant 为 MSMT 报告收集的信息,DPRK IT 工作者的业务范围覆盖全球,其目标行业包括人工智能、区块链技术、网站开发、国防工业、政府部门及相关科研机构。一些被解雇的 IT 从业人员还威胁要泄露其前雇主的敏感数据,或将其提供给竞争对手。这些数据包括专有数据和内部项目的源代码。 地域分布(2024 - 2025 年): 中国:约 1000 至 1500 人;朝鲜境内:约 450 至 1200 人;俄罗斯:约 150 至 300 人;老挝:约 20 至 40 人;赤道几内亚:约 5 至 15183 人;几内亚:约 5 至 10 人;尼日利亚:不足 10 人;坦桑尼亚:不足 10 人;柬埔寨:未知。 IT 工作者通常通过自由职业平台(如 Upwork、Freelancer、Fiverr)、社交媒体及专业网络(如 LinkedIn、Discord)获取海外职位。他们经常使用多重身份及伪造文件以规避背景调查,并通过加密货币、Wise 和 Payoneer 等方式收取收入。 操作策略、技巧和流程 DPRK IT 工作者的惯用伎俩可分为三个阶段:建立身份、申请工作、接收资金。 第一阶段:建立用户画像 使用伪造或盗用的个人信息(例如姓名、照片和职业证书)创建个人资料;使用 AI(如 Thispersondoesntexist.com、generated.photos)合成人脸来美化其个人资料。使用代理服务创建临时的虚拟电话号码通过 KYC 审核;使用合成的 KYC 文件、提交伪造的密钥验证照片绕过持续或定期的身份验证。使用虚拟专用网络(VPN) 服务掩盖真实位置;借助筛选别名功能、Gmail 的点过滤功能创建多个电子邮件变体。从已验证账户买卖平台购买账户或通过远程访问账户来维持对已购买账户的控制。 第二阶段:申请工作 传统求职:直接向公司投递简历,尤其是远程办公岗位。线上工作平台:在 Upwork、Freelancer、Fiverr 等平台建立详细个人资料,突出热门技能(如区块链和人工智能),并尝试将沟通转移至 Telegram 等“外部”平台。替代平台:通过 LinkedIn、Discord 及专业论坛联系潜在客户和招聘人员,绕过结构化的审查流程。 第三阶段:接收资金 传统金融渠道:利用银行账户及支付平台(如 PayPal、Payoneer、Wise)收取报酬,并迅速转移给看似无关的第三方司法管辖区的个人账户。加密货币:首选的支付方式,通过混币服务或离岸交易所兑换成法定货币,降低追踪风险。 此外,据 MSMT 成员国提供的信息显示:一些 DPRK IT 工作者采用了不同的方法将法定货币兑换成加密货币,例如通过第三方购买 PayPal 美元(PYUSD),然后兑换成与美元挂钩的稳定币 USDC 或 USDT 并将此类交易的金额限制在每天约 5000 至 6000 美元以内;2025 年 DPRK IT 从业人员开始利用外国中介或伪造身份证明文件来获取支持自动清算系统(ACH) 的银行账户,以便更快地将资金存入 DPRK 控制的西方金融机构账户;DPRK IT 从业人员还开始通过注册美国实体来设立空壳公司,这使他们能够在面试时减少审查并从美国公司获得收入;这些策略的实施伴随一定风险,包括数据泄露、知识产权侵权及潜在的法律责任。 五、DPRK 恶意网络活动 针对韩国(ROK) 的网络攻击 Temp.Hermit 针对韩国关键网络基础设施的渗透行动 在 2023 年至 2024 年间,Temp.Hermit 利用韩国常用身份验证软件中的漏洞传播恶意代码,通过“水坑攻击”入侵多家韩国新闻网站,植入恶意代码,感染访问这些网站的用户的计算机。该代码针对已安装在受感染计算机上的身份验证软件中的漏洞,并进一步扩散,形成可被远程操控的访问点。Temp.Hermit 还入侵了某些韩国机构的 IT 资产管理服务器,以识别全网潜在弱点。 Kimsuky 针对韩国建筑行业的信息窃取行动 2024 年 1 月,Kimsuky 在韩国建筑行业协会网站植入“TrollAgent”恶意软件,并将其伪装为合法的安全认证工具,使用窃取的数字证书绕过检测。通过被篡改的文件,Kimsuky 获取了用户系统信息、浏览器数据、截屏记录及登录凭据。这些数据被认为可能用于进一步针对韩国公职人员及重大建筑项目的后续定向攻击。 国防工业基地(DIB) 目标 DPRK 长期依赖网络能力推动武器系统现代化并获取相关研究数据。多个 DPRK APT 组织持续将航空航天、造船、卫星制造和军工企业作为主要攻击对象,并结合社会工程学诱导员工执行含恶意代码的“入职评估测试”,以窃取敏感技术资料。 2024 年 12 月,TraderTraitor 入侵中国无人机制造商大疆创新(DJI),窃取其无人机研发相关材料。 2024 年 5 月,Andariel 利用一家安全公司开发的 DLP 软件供应链漏洞,对多家韩国国防科技企业发动攻击。攻击者控制其中央更新服务器,向下游客户分发伪装成合法模块的恶意软件,并从多家企业窃取包括武器设计蓝图在内的大量敏感数据。 MSMT 报告还指出,DPRK IT 工作者与 APT 组织之间的界限正在进一步模糊。一些 IT 从业者曾协助 DPRK 网络组织识别目标行业漏洞、管理求职数据库,甚至参与恶意软件部署(如 BEAVETAIL 与 INVISIBLE FERRET)。部分 IT 人员申请军工或 AI 相关职位,以积累技术经验用于后续网络行动,进一步加强了两者之间的协作关系。 针对民众与政府机构的网络攻击 2024 年 5 月,APT37 利用韩国自由软件中常见的“Toast 广告”投放机制的漏洞发动大规模攻击,以韩国国家安全官员和 DPRK 相关 NGO 成员为主要目标。APT37 首先攻破提供广告内容的服务器,再通过 Internet Explorer 引擎中的零日漏洞向用户投递恶意代码。该行动最终在受害设备上安装“RokRAT”远程访问木马,使攻击者能够进行长期监视和数据窃取。 六、总结 面对 MSMT 报告揭示的体系化网络威胁,Web3 行业需要整体感知自己所处的安全处境。DPRK 相关攻击已不仅是外部黑客入侵,而是将 IT Worker 渗透、供应链控制、链上资金盗取与跨境洗钱网络深度结合的一体化攻击。对交易所、钱包、基础设施和开发团队而言,风险不再局限于技术漏洞,更来自人、流程和资产全链路的薄弱环节,特别是远程协作和外包开发场景,背景核查、身份验证、代码来源审查和面试流程安全都必须成为安全体系的一部分。 与此同时,加密资产已成为 DPRK 规避制裁与资金结算的重要通道,洗钱行为呈现跨链、高跳转和高度伪装化特征,这意味着链上监控与自动化风控成为必需能力:SlowMist 和 MistTrack 在长期追踪 Lazarus、TraderTraitor 等组织活动中积累了大量恶意地址集群、洗钱路径和相关情报,可协助企业降低风险。 更重要的是,行业需要从“点状防御”升级为“体系联防”。高价值目标如交易所、跨链桥、托管机构与涉及关键基础设施的企业,应在网络、供应链、终端与链上层面同步强化纵深防御,引入零信任架构、安全监测、安全审计和威胁情报订阅等机制。 简而言之,这份报告呈现的不是单一攻击案例,而是针对加密金融体系的全面升级。面对这样成熟且不断演进的对手,整个 Web3 生态都需要以更强的协同、更敏锐的监测和更完整的防御策略来应对。唯有建立覆盖人员、供应链、资产与资金流的连续安全能力,行业才能在这种长期博弈中保持安全韧性。

报告解读|MSMT 发布《DPRK 通过网络和信息技术工作者活动违反和规避联合国制裁》

近期,多边制裁监测小组(The Multilateral Sanctions Monitoring Team,以下简称“MSMT”) 发布了一份名为《DPRK 通过网络和信息技术工作者活动违反和规避联合国制裁》的报告。该报告系统梳理了朝鲜民主主义人民共和国(DPRK) 利用网络力量、信息技术工作者及加密货币活动,规避联合国制裁、窃取敏感技术并筹集资金的全貌。本文将对报告核心内容进行梳理,帮助读者快速掌握 DPRK 网络威胁的发展趋势和手法变化,从而提升对复杂网络安全威胁的认知和防范能力。
以下内容均来自于 MSMT 发布的报告,慢雾(SlowMist) 仅作翻译与节选,供读者快速了解信息,不代表慢雾(SlowMist) 对报告内容、观点或结论的任何立场。
报告链接:https://msmt.info/Publications/detail/MSMT%20Report/4221

MSMT 旨在监测和报告违反和规避联合国安理会相关决议(UNSCRs) 所规定的制裁措施的行为。MSMT 成员国包括澳大利亚、加拿大、法国、德国、意大利、日本、荷兰、新西兰、韩国、英国和美国,其目标是通过发布基于对制裁违规和规避行为的调查信息,以协助国际社会全面落实联合国对 DPRK 的制裁措施。
报告指出,DPRK 在 2024 年至 2025 年期间持续以国家级体系化方式违反联合国安理会多项决议,通过大规模的网络攻击、加密货币盗窃与跨境洗钱,以及在全球部署信息技术工作者来规避制裁并为其大规模杀伤性武器和弹道导弹项目筹措资金。DPRK 网络能力成熟度接近于网络大国,仅 2024 年就窃取至少 11.9 亿美元加密货币,2025 年前九个月再窃取 16.5 亿美元,部分案件通过全球多地注册的加密货币服务和大量场外交易商完成洗钱。报告还确认 DPRK 在至少八国派遣 IT 工作者,并依赖其境外中间人和金融机构运作资金与身份掩护;同时持续通过恶意软件、供应链入侵和社会工程等手法获取敏感技术。整体来看,几乎所有相关活动均由已被联合国制裁的国家级机构监督并借由海外幌子公司和派驻 IT 人员实施,其全球化的规避制裁网络正在不断扩大。
一、DPRK 网络计划
MSMT 的报告指出,DPRK 的网络力量近年来在组织化、技术能力与跨境行为方面均显著提升,成熟度被认为已接近其他网络大国,主要由多个 APT 组织执行远程渗透、破坏、情报搜集与创收任务,这些组织的规模不断扩大,新的研究中心、联络处和活动集群不断出现,显示出 DPRK 网络体系的系统性扩张。虽然不同单位的技术专长和任务方向有所差异,但网络攻击者与境外 IT 工作者之间的协作愈加紧密,二者在工具开发、技术共享、资金筹集方面呈现明显交叉。
报告梳理了 DPRK 现有网络力量的核心组织框架,大致可归纳为下图:

整体来看,DPRK 网络行动通过境内外多层级结构协同运作,实现从恶意网络活动、IT 外包创收,到跨境洗钱等多重功能。
二、DPRK 加密货币盗窃活动
总体收益与影响
自 2017 年以来,因国内经济压力及国际制裁加剧,DPRK 网络犯罪分子开始将加密货币盗窃作为创收手段。当时加密货币行业正在快速发展但缺乏成熟的监管体系和安全措施,便成为了其攻击的目标。根据 MSMT 成员国、Mandiant 和 Chainalysis 的分析,2024 年 DPRK 窃取了至少价值 11.9 亿美元的加密货币,同比增长约 50 %;2025 年 1 月至 9 月期间已达到 16.45 亿美元,整个 2024 年 1 月至 2025 年 9 月期间总计至少 28 亿美元。

重大案例包括 2025 年 2 月 TraderTraitor 入侵位于迪拜的加密货币交易所 Bybit,窃取近 15 亿美元,为历史上最大规模的加密货币盗窃案。此外,日本 DMM Bitcoin 和印度 WazirX 等交易所也受到重大影响,部分交易所因此停止运营。根据 MSMT 参与国的估算,2024 年加密货币盗窃所得约占 DPRK 外汇收入总额的三分之一,报告中将下列加密货币盗窃案归咎于 DPRK:

这些事件显示出 DPRK 的网络攻击不仅追求直接创收,还通过供应链攻击、第三方服务入侵等手段扩展攻击影响范围,造成企业资产损失和运营中断。
参与的团伙与组织
根据报告,多个 DPRK APT 组织和 IT 从业人员参与了加密货币盗窃,主要包括:
TraderTraitor(又名 Jade Sleet、UNC4899)
DPRK 最老练的加密货币盗窃团伙,他们利用社会工程学技巧和供应链攻击策略实施大规模盗窃,2024 年 1 月至 2025 年 9 月期间窃取约 25.8 亿美元的加密货币。关键案例包括 DMM Bitcoin、WazirX 及 Bybit 事件,攻击往往通过入侵第三方托管服务获取交易所凭证,从而绕过多因素认证与交易限额等安全机制。
CryptoCore(又名 Sapphire Sleet、Alluring Pisces)
操作方式与 TraderTraitor 相似,2024 年 1 月至 2025 年 5 月期间窃取至少 3350 万美元,加密货币行业目标包括全球十余国的公司员工。攻击者常使用鱼叉式网络钓鱼攻击,他们不仅会伪装成招聘人员提供看似前景广阔的工作机会,诱骗受害者执行其散布的恶意代码、链接或附件;还会利用恶意 NPM 软件包进行技能评估测试,并在社会工程攻击结束后入侵受害者设备。

Citrine Sleet(又名 AppleJeus、Gleaming Pisces)
以散布植入木马的加密货币相关软件、利用常见互联网基础设施的漏洞以及进行社会工程攻击为主,在 2020 年代初因其 AppleJeus 恶意软件活动而臭名昭著,2024 年知名案例是从 Radiant Capital 窃取 5000 万美元,攻击者精准模拟前承包商身份以获取受害者信任。
DPRK IT 从业人员
据相关信息,DPRK 的 IT 从业人员也参与了加密货币盗窃活动,包括 2024 年从 Munchables(6250 万美元,最终已追回)、OnyxDAO(380 万美元)、Exclusible Penthouse(82.7 万美元)和 BTCTurk 等项目中盗窃加密货币。Munchables 的案例较为特殊,据悉,黑客在最初的攻击后可能并未做好充分的洗钱准备,且其专长更多集中在智能合约开发而非链上洗钱方面,因此资金被拦截。
攻击方式与手段
DPRK APT 组织和 IT 从业人员使用多样化、高度组织化的手段实施网络攻击,包括:
社会工程与鱼叉式钓鱼
近期多起由 DPRK 网络行动者主导的攻击活动显示,其策略已从针对核心研发人员扩展至加密货币产业链中的多类角色,攻击链条愈发环环相扣。其中,“Contagious Interview” 是专门针对软件开发人员的典型攻击活动。该攻击活动最早由 Palo Alto Networks 于 2023 年发现。攻击者冒充招聘软件开发人员的雇主,邀请目标用户参加在线面试,并要求他们下载安装一个软件包,执行后会植入 BeaverTail 恶意软件,用于窃取浏览器中存储的加密钱包和信用卡等敏感数据,并暗中装载 InvisibleFerret 后门,用于远程渗透与持久控制。进入 2025 年,“Contagious Interview” 升级演变为 “ClickFake Interview” 攻击活动,并将目标群体扩大至资产管理、BD 等非技术岗位。攻击者首先通过社交媒体向用户发送一个链接,邀请他们访问第三方网站进行虚假面试。受害者一旦进入该网站,就会被引导完成一系列面试流程。当用户被要求启用摄像头时,会弹出一条错误信息,提示他们需要下载驱动程序来解决问题。此时,攻击者便会利用“ClickFix” 技术诱导受害者复制运行恶意命令:引导 macOS 用户使用 curl 下载并执行恶意 bash 脚本(coremedia.sh);引导 Windows 用户下载 ZIP 压缩包(nvidiadrivers.zip),解压后运行压缩包内的 VBS 脚本(update.vbs)。攻击者还冒用多家公司名称(如 Coinbase、KuCoin、Kraken、Circle、Bybit、Tether、Robinhood、Archblock)来诱骗受害者完成申请流程。与此同时,“Wagemole” 攻击活动则展示了不同的欺骗手段:攻击者利用 ChatGPT 等生成式 AI 批量伪造身份、构建简历、模拟面试回答,以真实 IT 外包人员形象渗透企业内部系统,牟利并实施商业情报窃取。

勒索软件与出售窃取的数据
2024 年 1 月至 2025 年 5 月期间,包括 Moonstone Sleet 和 Andariel(又名 Onyx Sleet、Silent Chollima 和 APT 45)在内的组织在全球范围内发动了多起勒索软件攻击。Andariel 的主要任务是进行网络间谍活动,但也会发动勒索软件攻击以直接筹集资金用于其运营开支,例如购置虚拟基础设施。Moonstone Sleet 组织在窃取敏感数据后,还会使用简单的勒索手段,要求受害者向 DPRK 控制的加密货币地址支付赎金。DPRK 网络犯罪分子还会在暗网市场或在线犯罪论坛上出售其在勒索软件和敲诈勒索活动中获取的数据、网络访问权限和漏洞利用程序以获利。
与境外网络犯罪分子合作
根据公开报道,DPRK 境内的网络犯罪分子自 2010 年代以来就与境外网络犯罪分子合作。至少从 2025 年 2 月起,与 Moonstone Sleet 有关联的 DPRK 境内网络犯罪分子从一个名为 Qilin(又名 Agenda)的非国家级俄罗斯网络犯罪组织租用勒索软件。2024 年 5 月至 9 月期间,Andariel 组织的黑客被发现使用开源的、已知的恶意软件(例如 Dtrack)入侵受害者系统,并部署 Play 勒索软件。
利用人工智能工具
DPRK 网络犯罪分子正在使用大型语言模型(LLM) 及生成式 AI,如 ChatGPT 和 DeepSeek,提升鱼叉式钓鱼的真实性、开发恶意软件和自动化入侵手段。
三、DPRK 加密货币洗钱活动
DPRK 网络犯罪分子不仅通过网络攻击窃取加密货币,还需要将赃款洗白为可用资金,以规避加密货币交易所、区块链情报公司和全球执法机构的追踪。在大多数情况下,被盗资产最终通过第三国的场外交易(OTC) 经纪商和中间人网络兑换成现金,用于支持其优先事项。据观察,DPRK 网络犯罪分子常利用多种洗钱工具和平台,包括加密货币混合器、桥接器、去中心化交易所(DEX)、跨链聚合器及点对点(P2P) 交易平台,以掩盖资金来源、分散追踪路径并逃避监管。
洗钱流程
DPRK 网络犯罪分子通常通过复杂的多步骤流程清洗被盗加密货币,根据 MSMT 成员国和私营部门合作伙伴提供的分析,常见的流程如下:

兑换(Swap):主要通过去中心化交易所将窃取的代币兑换成 ETH、BTC 或 DAI,并将这些资产集中存储在非托管钱包中。代币也可能被兑换成 USDT 和其他稳定币,例如 USDD,但通常只维持很短的时间。混合(Mix):有时会在将代币集中存储在非托管钱包之前快速混合这些代币,例如使用 Wasabi Wallet、CryptoMixer、Tornado Cash、JoinMarket 和 Railgun 等。桥接(Bridge):使用一系列 Bridges、即时交易所和 P2P 交易平台,将 ETH 兑换成其他加密货币,主要是 BTC。存储(Store):将资金存储在难以拦截的加密货币(主要是 BTC)中,这些加密货币通常存储在非托管钱包(包括冷钱包)中。再次混合(Mix Again):有时会再次混合加密货币,通常使用比特币混合器,并将资金发送到非托管钱包。桥接(Bridge):使用 Bridges 和 P2P 交易平台将混合后的 BTC 兑换成波场上的 TRX。兑换(Swap):将 TRX 兑换成 USDT,并归集资金以待提现。兑换(Convert):将 USDT 转移至在中心化交易所拥有账户的场外交易经纪商。汇款(Remit):从场外交易经纪商处接收法定货币。

尽管犯罪分子及洗钱者不断变换洗钱策略,并试图滥用各种合法服务,但在报告所述期间,他们始终依赖某些特定平台,以下列举的平台并非全部,而是根据各种信息来源整理而成:

兑换和现金化渠道
洗钱后的加密货币通常通过 DPRK 境外关联人员、场外交易商或中间人网络兑换成法定货币。
与境外金融体系的联系
多个场外交易商曾协助 DPRK 网络犯罪分子将加密货币兑换为法定货币,并将资金转入 DPRK 控制的银行账户,这些场外交易商通常收取部分加密货币作为服务费,然后将等值法定货币交付给 DPRK 相关人员。
据 MSMT 成员国提供的信息,The DPRK’s First Credit Bank (FCB) 曾利用一家美国金融服务公司将美元兑换成人民币,并持有数十个加密货币钱包中的储备金,一些 DPRK 网络犯罪分子还在境外金融机构开设账户,用于洗钱活动。

海外中间人网络
尽管 DPRK 网络犯罪分子通常亲自参与洗钱过程,但他们也会将洗钱工作外包给其他第三方扩大洗钱规模。例如,通过柬埔寨 Huione Pay 及其关联账户,将被盗加密货币兑换成法定货币,再转移至其他地区。
使用加密货币进行交易和支付
据 MSMT 成员国提供的信息,至少自 2023 年以来,DPRK 试图将对加密货币的使用范围从网络犯罪扩展到商品和服务的交换和支付,例如在出售和转让装备和原材料等采购相关交易中使用 USDT:

使用稳定币进行支付使 DPRK 能够避开现金运输限制,提高交易便捷性,同时降低被追踪的风险,Tether 等稳定币发行方保留了冻结的能力,并与执法机构合作冻结受制裁的交易。
四、DPRK 信息技术工作者
概述与战略角色
根据报告,信息技术(IT) 工作者是朝鲜劳动力中收入最高的群体。DPRK 通过高等机构对 IT 工作者进行管理和监督,确保其收入部分用于基础设施建设及消费品采购等。通常,IT 工作者需将其收入的一半上缴上级机构,自身可保留的收入仅为总收入的 5 % 至 10 %,在某些情况下,他们甚至可能需要自掏腰包来支付这些款项。2024 年,DPRK 可能从其全球 IT 工作者身上获得约 3.5 亿至 8 亿美元的收入。
每个 IT 团队由经理负责,设定每月绩效目标(通常每人最低 1 万美元),并协助团队获取身份验证、支付账户及其他必要条件。被派往海外的 DPRK IT 从业人员平均月薪为 1 万美元。DPRK 国内 IT 从业人员的平均收入可能与海外 IT 从业人员大致相同,但海外工作能获得更广泛的国际业务接触机会。
目标行业与地域分布
根据 Mandiant 为 MSMT 报告收集的信息,DPRK IT 工作者的业务范围覆盖全球,其目标行业包括人工智能、区块链技术、网站开发、国防工业、政府部门及相关科研机构。一些被解雇的 IT 从业人员还威胁要泄露其前雇主的敏感数据,或将其提供给竞争对手。这些数据包括专有数据和内部项目的源代码。

地域分布(2024 - 2025 年):
中国:约 1000 至 1500 人;朝鲜境内:约 450 至 1200 人;俄罗斯:约 150 至 300 人;老挝:约 20 至 40 人;赤道几内亚:约 5 至 15183 人;几内亚:约 5 至 10 人;尼日利亚:不足 10 人;坦桑尼亚:不足 10 人;柬埔寨:未知。
IT 工作者通常通过自由职业平台(如 Upwork、Freelancer、Fiverr)、社交媒体及专业网络(如 LinkedIn、Discord)获取海外职位。他们经常使用多重身份及伪造文件以规避背景调查,并通过加密货币、Wise 和 Payoneer 等方式收取收入。

操作策略、技巧和流程
DPRK IT 工作者的惯用伎俩可分为三个阶段:建立身份、申请工作、接收资金。
第一阶段:建立用户画像
使用伪造或盗用的个人信息(例如姓名、照片和职业证书)创建个人资料;使用 AI(如 Thispersondoesntexist.com、generated.photos)合成人脸来美化其个人资料。使用代理服务创建临时的虚拟电话号码通过 KYC 审核;使用合成的 KYC 文件、提交伪造的密钥验证照片绕过持续或定期的身份验证。使用虚拟专用网络(VPN) 服务掩盖真实位置;借助筛选别名功能、Gmail 的点过滤功能创建多个电子邮件变体。从已验证账户买卖平台购买账户或通过远程访问账户来维持对已购买账户的控制。
第二阶段:申请工作
传统求职:直接向公司投递简历,尤其是远程办公岗位。线上工作平台:在 Upwork、Freelancer、Fiverr 等平台建立详细个人资料,突出热门技能(如区块链和人工智能),并尝试将沟通转移至 Telegram 等“外部”平台。替代平台:通过 LinkedIn、Discord 及专业论坛联系潜在客户和招聘人员,绕过结构化的审查流程。
第三阶段:接收资金
传统金融渠道:利用银行账户及支付平台(如 PayPal、Payoneer、Wise)收取报酬,并迅速转移给看似无关的第三方司法管辖区的个人账户。加密货币:首选的支付方式,通过混币服务或离岸交易所兑换成法定货币,降低追踪风险。
此外,据 MSMT 成员国提供的信息显示:一些 DPRK IT 工作者采用了不同的方法将法定货币兑换成加密货币,例如通过第三方购买 PayPal 美元(PYUSD),然后兑换成与美元挂钩的稳定币 USDC 或 USDT 并将此类交易的金额限制在每天约 5000 至 6000 美元以内;2025 年 DPRK IT 从业人员开始利用外国中介或伪造身份证明文件来获取支持自动清算系统(ACH) 的银行账户,以便更快地将资金存入 DPRK 控制的西方金融机构账户;DPRK IT 从业人员还开始通过注册美国实体来设立空壳公司,这使他们能够在面试时减少审查并从美国公司获得收入;这些策略的实施伴随一定风险,包括数据泄露、知识产权侵权及潜在的法律责任。
五、DPRK 恶意网络活动
针对韩国(ROK) 的网络攻击
Temp.Hermit 针对韩国关键网络基础设施的渗透行动
在 2023 年至 2024 年间,Temp.Hermit 利用韩国常用身份验证软件中的漏洞传播恶意代码,通过“水坑攻击”入侵多家韩国新闻网站,植入恶意代码,感染访问这些网站的用户的计算机。该代码针对已安装在受感染计算机上的身份验证软件中的漏洞,并进一步扩散,形成可被远程操控的访问点。Temp.Hermit 还入侵了某些韩国机构的 IT 资产管理服务器,以识别全网潜在弱点。

Kimsuky 针对韩国建筑行业的信息窃取行动
2024 年 1 月,Kimsuky 在韩国建筑行业协会网站植入“TrollAgent”恶意软件,并将其伪装为合法的安全认证工具,使用窃取的数字证书绕过检测。通过被篡改的文件,Kimsuky 获取了用户系统信息、浏览器数据、截屏记录及登录凭据。这些数据被认为可能用于进一步针对韩国公职人员及重大建筑项目的后续定向攻击。

国防工业基地(DIB) 目标
DPRK 长期依赖网络能力推动武器系统现代化并获取相关研究数据。多个 DPRK APT 组织持续将航空航天、造船、卫星制造和军工企业作为主要攻击对象,并结合社会工程学诱导员工执行含恶意代码的“入职评估测试”,以窃取敏感技术资料。
2024 年 12 月,TraderTraitor 入侵中国无人机制造商大疆创新(DJI),窃取其无人机研发相关材料。
2024 年 5 月,Andariel 利用一家安全公司开发的 DLP 软件供应链漏洞,对多家韩国国防科技企业发动攻击。攻击者控制其中央更新服务器,向下游客户分发伪装成合法模块的恶意软件,并从多家企业窃取包括武器设计蓝图在内的大量敏感数据。

MSMT 报告还指出,DPRK IT 工作者与 APT 组织之间的界限正在进一步模糊。一些 IT 从业者曾协助 DPRK 网络组织识别目标行业漏洞、管理求职数据库,甚至参与恶意软件部署(如 BEAVETAIL 与 INVISIBLE FERRET)。部分 IT 人员申请军工或 AI 相关职位,以积累技术经验用于后续网络行动,进一步加强了两者之间的协作关系。
针对民众与政府机构的网络攻击
2024 年 5 月,APT37 利用韩国自由软件中常见的“Toast 广告”投放机制的漏洞发动大规模攻击,以韩国国家安全官员和 DPRK 相关 NGO 成员为主要目标。APT37 首先攻破提供广告内容的服务器,再通过 Internet Explorer 引擎中的零日漏洞向用户投递恶意代码。该行动最终在受害设备上安装“RokRAT”远程访问木马,使攻击者能够进行长期监视和数据窃取。
六、总结
面对 MSMT 报告揭示的体系化网络威胁,Web3 行业需要整体感知自己所处的安全处境。DPRK 相关攻击已不仅是外部黑客入侵,而是将 IT Worker 渗透、供应链控制、链上资金盗取与跨境洗钱网络深度结合的一体化攻击。对交易所、钱包、基础设施和开发团队而言,风险不再局限于技术漏洞,更来自人、流程和资产全链路的薄弱环节,特别是远程协作和外包开发场景,背景核查、身份验证、代码来源审查和面试流程安全都必须成为安全体系的一部分。
与此同时,加密资产已成为 DPRK 规避制裁与资金结算的重要通道,洗钱行为呈现跨链、高跳转和高度伪装化特征,这意味着链上监控与自动化风控成为必需能力:SlowMist 和 MistTrack 在长期追踪 Lazarus、TraderTraitor 等组织活动中积累了大量恶意地址集群、洗钱路径和相关情报,可协助企业降低风险。
更重要的是,行业需要从“点状防御”升级为“体系联防”。高价值目标如交易所、跨链桥、托管机构与涉及关键基础设施的企业,应在网络、供应链、终端与链上层面同步强化纵深防御,引入零信任架构、安全监测、安全审计和威胁情报订阅等机制。
简而言之,这份报告呈现的不是单一攻击案例,而是针对加密金融体系的全面升级。面对这样成熟且不断演进的对手,整个 Web3 生态都需要以更强的协同、更敏锐的监测和更完整的防御策略来应对。唯有建立覆盖人员、供应链、资产与资金流的连续安全能力,行业才能在这种长期博弈中保持安全韧性。
MistTrack 荣获 HKICT Awards 2025 FinTech 金奖,推动链上合规新标杆11 月 21 日,由香港特别行政区政府数字政策办公室主办的 2025 年香港资讯及通讯科技奖(HKICT Awards 2025) 颁奖典礼在香港会议展览中心隆重举行,慢雾(SlowMist) 旗下区块链反洗钱追踪系统 MistTrack 荣获金融科技奖(监管科技:监管及风险管理)金奖。 慢雾(SlowMist) 合伙人 & CPO——Keywolf 受邀出席典礼并发表获奖感言,与来自政府、监管机构、金融行业的嘉宾共同见证了这一时刻。 此次获奖,不仅是对 MistTrack 技术能力与实际应用价值的肯定,也反映了慢雾多年深耕区块链安全与反洗钱领域的成果,同时为香港金融科技及数字资产行业合规发展提供了有力支持。 HKICT Awards:权威认可 香港一直是亚洲金融枢纽,而 HKICT Awards 自 2006 年设立以来,也一直被视为香港科技领域最具公信力的年度奖项之一。这项年度盛事由香港特别行政区政府数字政策办公室主办,并获八个筹办机构、督导委员会、标准保证小组委员会、最终评审委员会、市场推广小组委员会、各评审和支持机构及业界组织的协力支持,设有八个奖项类别:数码娱乐奖、资讯科技初创企业奖、商业方案奖、智慧生活奖、智慧出行奖、智慧市民奖、学生创新奖、金融科技奖,旨在表彰和推广在资讯及通讯科技领域取得卓越成果的企业和项目,并推动香港业界持续创新。 其中,金融科技奖由亚洲唯一的 CFT 认证机构——亚洲金融科技学会(IFTA) 筹办,其目标是通过新兴技术和合规方案提升银行、投资、保险及数字资产行业的风险管理能力。金融科技奖由三个组别组成:新兴解决方案(虚拟资产,支付,区块链,及人工智能应用)、金融科技(银行,投资,及保险)、监管科技(监管及风险管理)。回顾过去,监管科技:监管及风险管理组别的金奖情况反映了其严格标准:2023 年未颁发金奖,仅授予两家企业银奖,同时 MistTrack 是监管科技组别历来首款和区块链密切相关的获奖项,这一历史对比也让今年 MistTrack 获得 FinTech 金奖更显含金量和专业认可度。 为什么 MistTrack 能获得 FinTech 金奖? 过去两年里,香港持续推动 Web3 与虚拟资产生态的发展,其中一个趋势就是让“风险可见、资金可追、合规可执行”。随着相关持牌制度与监管框架逐步完善,各类机构、服务商与项目方对于链上风险识别与 AML/KYT 工具的需求显著提升。在这样的背景下,能够帮助企业与个人在链上理解风险和行为模式的监管科技产品,变得越来越关键。[MistTrack](https://www.binance.com/zh-CN/square/post/19048326225930) 能获得 FinTech 金奖,很大程度上来自它在实际合规、风控及调查场景中的成熟度,这些能力背后,依托的是几个核心模块: AML 风险评分(AML Risk Score) MistTrack 主要从地址所属实体、地址历史交易活动、慢雾恶意钱包地址库三方面为其计算 AML 风险评分。当地址所属实体为高风险主体(如混币平台)或地址与已知的风险主体存在资金来往时,系统会将该地址标记为风险地址。同时,结合慢雾(SlowMist) 恶意钱包地址库中的数据集,MistTrack 会对已核实的勒索、盗币、钓鱼欺诈等非法行为的涉案地址进行风险标记。您可以像专业合规官一样,对每个钱包地址进行风险分析,并判断该地址是否涉及非法资金。您还可以通过点击“风险报告”按钮,一键获取该地址的风险分析报告。 地址标签(Address Labels) MistTrack 不仅能够识别地址所属的实体,如 Coinbase 或 Binance,还可以定位多个链上和链下的标签,如 ENS、MEV Bots、DeFi Whales 等,以及该地址使用的具体钱包 App,如 imToken 或 MetaMask。通过 MistTrack 的地址标签功能,您将能够更全面地了解相关地址的背景信息。 交易对手分析/交易行为分析(Counterparty Analysis / Transaction Actions Analysis) MistTrack 为用户提供最需要关注的信息。与普通的区块链浏览器不同,后者可能操作复杂且不够直观,MistTrack 会评估地址的所有历史交易,并以易于理解的方式总结其行为,帮助用户更好地理解。另外,地址痕迹分析模块会收集目标地址的所有历史数据,并以易于理解的方式总结这些痕迹,包括使用平台、关联事件和关联信息三个方面,帮助用户创建目标地址的画像。 收藏夹/监控(Favorites / Monitorings) 用户可以使用 MistTrack 的收藏夹和监控功能,收藏特定钱包地址并收集所需的信息,所有信息都是私密的,只有您可以访问。您还可以添加 Whale 和 KOL 的地址,全面了解他们的链上活动,实时追踪最新交易,洞察并跟踪投资动态。 调查功能(Investigations) MistTrack 通过动态可视化展示查询地址的所有转入和转出交易关系,您可以直接筛选和排序图表中的数据,轻松监控选定的信息。无需担心案件调查的复杂性,MistTrack 支持您自由追踪、分析和记录信息,您还可以通过共享功能,与同事协作处理案件。 OpenAPI 为了提供更便捷的地址分析,我们开发了 MistTrack OpenAPI,供开发人员在其应用程序中使用。付费用户可以创建三个密钥,每个密钥每天可以调用 10,000 次(标准计划)。通过调用 OpenAPI,MistTrack 将返回给定地址的标签列表、地址概览、风险评分、风险详细信息列表、交易调查结果、交易行为分析结果、地址痕迹分析结果和交易对手分析结果。如需了解更多信息,请访问:https://docs.misttrack.io/openapi/introduction。 交易风险监测(AML Screening) 交易风险监测功能使您的项目无需编写任何代码即可实现反洗钱(AML) 功能,支持对合约和 EOA 进行自动反洗钱分析。MistTrack 将实时对已监控地址的每笔交易进行“了解您的交易”(KYT) 分析,即对已监控地址的交易对手进行“了解您的地址”(KYA) 分析。针对符合条件的风险交易,MistTrack 会进行邮件警告。而且,每个 KYT 分析结果都会存储并展示在 Risk Score 概览页面。 Risk Score 概览(Risk Analytics) 该模块显示交易风险监测模块的实时 KYT 分析记录数据和 OpenAPI Risk Score 接口的调用历史记录,可用来分析业务整体的资金风险态势。它提供指定区块链上交易扫描的全面视图,分析和记录链接到用户监控地址的每笔交易,显示每笔交易的风险级别。 为了满足不同类型用户的需求,MistTrack 也提供了以下核心站点: MistTrack 社区版:提供免费的基础区块链分析功能,适合个人用户和小型项目使用。(https://light.misttrack.io/)MistTrack 黑 U 查询:关注稳定币的风险分析,免费帮助广大用户识别风险资金。(https://misttrack.io/aml_risks/) MistTrack 专业版:为付费企业和专业用户提供全面的分析调查功能,适合专业调查员、合规交易平台、资产管理公司等项目团队使用。(https://dashboard.misttrack.io/)SlowMist Stablecoin AML:符合国际反洗钱标准的专注于稳定币反洗钱的平台(即将推出)。 展望未来 过去一年,MistTrack 在香港生态中的参与度逐步提升。今年 9 月,MistTrack 成功入选香港数码港“区块链与数字资产试点资助计划”,进一步推动其在监管科技场景的落地。此次获得 HKICT Awards FinTech 金奖,也意味着 MistTrack 在香港本地监管科技体系中的认可度再次提升,对我们而言既是鼓励,也是新的责任。也因此,我们正在将 MistTrack 的能力延伸到更多场景,其中包括一个专注稳定币的反洗钱系统(预计近期推出)。我们希望通过这一系统,在稳定币跨链流动日益频繁、风险结构更加复杂的背景下,为行业里的大型专业机构提供更精细、实时、且可配置的风险识别引擎。 自 2022 年上线以来,MistTrack 已服务超过十万用户,支持 18 条公链,积累 4 亿多个地址标签、一千多家实体、50 万+威胁情报数据及 9000 万+风险地址,为链上安全与反洗钱工作提供了有力支撑。2025 年第二季度,MistTrack 协助 11 起被盗案件成功冻结/追回约 1195 万美元资金,其调查成果也被联合国安理会、美国财政部及联合国毒品与犯罪问题办公室等机构采纳,推动国际反洗钱协作。此外,MistTrack 已通过国际权威认证机构 DNV 审核,获得 ISO/IEC 27001:2022 信息安全管理体系认证(CNAS & UKAS 双认可),进一步保障平台的安全性与可靠性。MistTrack 为全球用户识别了无数链上风险,并为多个行业提供了稳定且可落地的合规支持。 未来,慢雾(SlowMist) 将继续围绕监管实践、行业需求与合规标准,进一步完善 MistTrack 的全链路风险监控与合规服务,并与更多机构伙伴合作,共同推动区块链及数字资产行业的健康发展。如需了解更多信息或体验 MistTrack,可访问官网 https://misttrack.io 。 Ps. HKICT Awards 资料来源:https://www.hkictawards.hk/tc/

MistTrack 荣获 HKICT Awards 2025 FinTech 金奖,推动链上合规新标杆

11 月 21 日,由香港特别行政区政府数字政策办公室主办的 2025 年香港资讯及通讯科技奖(HKICT Awards 2025) 颁奖典礼在香港会议展览中心隆重举行,慢雾(SlowMist) 旗下区块链反洗钱追踪系统 MistTrack 荣获金融科技奖(监管科技:监管及风险管理)金奖。

慢雾(SlowMist) 合伙人 & CPO——Keywolf 受邀出席典礼并发表获奖感言,与来自政府、监管机构、金融行业的嘉宾共同见证了这一时刻。

此次获奖,不仅是对 MistTrack 技术能力与实际应用价值的肯定,也反映了慢雾多年深耕区块链安全与反洗钱领域的成果,同时为香港金融科技及数字资产行业合规发展提供了有力支持。

HKICT Awards:权威认可
香港一直是亚洲金融枢纽,而 HKICT Awards 自 2006 年设立以来,也一直被视为香港科技领域最具公信力的年度奖项之一。这项年度盛事由香港特别行政区政府数字政策办公室主办,并获八个筹办机构、督导委员会、标准保证小组委员会、最终评审委员会、市场推广小组委员会、各评审和支持机构及业界组织的协力支持,设有八个奖项类别:数码娱乐奖、资讯科技初创企业奖、商业方案奖、智慧生活奖、智慧出行奖、智慧市民奖、学生创新奖、金融科技奖,旨在表彰和推广在资讯及通讯科技领域取得卓越成果的企业和项目,并推动香港业界持续创新。

其中,金融科技奖由亚洲唯一的 CFT 认证机构——亚洲金融科技学会(IFTA) 筹办,其目标是通过新兴技术和合规方案提升银行、投资、保险及数字资产行业的风险管理能力。金融科技奖由三个组别组成:新兴解决方案(虚拟资产,支付,区块链,及人工智能应用)、金融科技(银行,投资,及保险)、监管科技(监管及风险管理)。回顾过去,监管科技:监管及风险管理组别的金奖情况反映了其严格标准:2023 年未颁发金奖,仅授予两家企业银奖,同时 MistTrack 是监管科技组别历来首款和区块链密切相关的获奖项,这一历史对比也让今年 MistTrack 获得 FinTech 金奖更显含金量和专业认可度。

为什么 MistTrack 能获得 FinTech 金奖?
过去两年里,香港持续推动 Web3 与虚拟资产生态的发展,其中一个趋势就是让“风险可见、资金可追、合规可执行”。随着相关持牌制度与监管框架逐步完善,各类机构、服务商与项目方对于链上风险识别与 AML/KYT 工具的需求显著提升。在这样的背景下,能够帮助企业与个人在链上理解风险和行为模式的监管科技产品,变得越来越关键。MistTrack 能获得 FinTech 金奖,很大程度上来自它在实际合规、风控及调查场景中的成熟度,这些能力背后,依托的是几个核心模块:

AML 风险评分(AML Risk Score)
MistTrack 主要从地址所属实体、地址历史交易活动、慢雾恶意钱包地址库三方面为其计算 AML 风险评分。当地址所属实体为高风险主体(如混币平台)或地址与已知的风险主体存在资金来往时,系统会将该地址标记为风险地址。同时,结合慢雾(SlowMist) 恶意钱包地址库中的数据集,MistTrack 会对已核实的勒索、盗币、钓鱼欺诈等非法行为的涉案地址进行风险标记。您可以像专业合规官一样,对每个钱包地址进行风险分析,并判断该地址是否涉及非法资金。您还可以通过点击“风险报告”按钮,一键获取该地址的风险分析报告。

地址标签(Address Labels)
MistTrack 不仅能够识别地址所属的实体,如 Coinbase 或 Binance,还可以定位多个链上和链下的标签,如 ENS、MEV Bots、DeFi Whales 等,以及该地址使用的具体钱包 App,如 imToken 或 MetaMask。通过 MistTrack 的地址标签功能,您将能够更全面地了解相关地址的背景信息。

交易对手分析/交易行为分析(Counterparty Analysis / Transaction Actions Analysis)
MistTrack 为用户提供最需要关注的信息。与普通的区块链浏览器不同,后者可能操作复杂且不够直观,MistTrack 会评估地址的所有历史交易,并以易于理解的方式总结其行为,帮助用户更好地理解。另外,地址痕迹分析模块会收集目标地址的所有历史数据,并以易于理解的方式总结这些痕迹,包括使用平台、关联事件和关联信息三个方面,帮助用户创建目标地址的画像。

收藏夹/监控(Favorites / Monitorings)
用户可以使用 MistTrack 的收藏夹和监控功能,收藏特定钱包地址并收集所需的信息,所有信息都是私密的,只有您可以访问。您还可以添加 Whale 和 KOL 的地址,全面了解他们的链上活动,实时追踪最新交易,洞察并跟踪投资动态。

调查功能(Investigations)
MistTrack 通过动态可视化展示查询地址的所有转入和转出交易关系,您可以直接筛选和排序图表中的数据,轻松监控选定的信息。无需担心案件调查的复杂性,MistTrack 支持您自由追踪、分析和记录信息,您还可以通过共享功能,与同事协作处理案件。

OpenAPI
为了提供更便捷的地址分析,我们开发了 MistTrack OpenAPI,供开发人员在其应用程序中使用。付费用户可以创建三个密钥,每个密钥每天可以调用 10,000 次(标准计划)。通过调用 OpenAPI,MistTrack 将返回给定地址的标签列表、地址概览、风险评分、风险详细信息列表、交易调查结果、交易行为分析结果、地址痕迹分析结果和交易对手分析结果。如需了解更多信息,请访问:https://docs.misttrack.io/openapi/introduction。

交易风险监测(AML Screening)
交易风险监测功能使您的项目无需编写任何代码即可实现反洗钱(AML) 功能,支持对合约和 EOA 进行自动反洗钱分析。MistTrack 将实时对已监控地址的每笔交易进行“了解您的交易”(KYT) 分析,即对已监控地址的交易对手进行“了解您的地址”(KYA) 分析。针对符合条件的风险交易,MistTrack 会进行邮件警告。而且,每个 KYT 分析结果都会存储并展示在 Risk Score 概览页面。

Risk Score 概览(Risk Analytics)
该模块显示交易风险监测模块的实时 KYT 分析记录数据和 OpenAPI Risk Score 接口的调用历史记录,可用来分析业务整体的资金风险态势。它提供指定区块链上交易扫描的全面视图,分析和记录链接到用户监控地址的每笔交易,显示每笔交易的风险级别。

为了满足不同类型用户的需求,MistTrack 也提供了以下核心站点:
MistTrack 社区版:提供免费的基础区块链分析功能,适合个人用户和小型项目使用。(https://light.misttrack.io/)MistTrack 黑 U 查询:关注稳定币的风险分析,免费帮助广大用户识别风险资金。(https://misttrack.io/aml_risks/)
MistTrack 专业版:为付费企业和专业用户提供全面的分析调查功能,适合专业调查员、合规交易平台、资产管理公司等项目团队使用。(https://dashboard.misttrack.io/)SlowMist Stablecoin AML:符合国际反洗钱标准的专注于稳定币反洗钱的平台(即将推出)。

展望未来
过去一年,MistTrack 在香港生态中的参与度逐步提升。今年 9 月,MistTrack 成功入选香港数码港“区块链与数字资产试点资助计划”,进一步推动其在监管科技场景的落地。此次获得 HKICT Awards FinTech 金奖,也意味着 MistTrack 在香港本地监管科技体系中的认可度再次提升,对我们而言既是鼓励,也是新的责任。也因此,我们正在将 MistTrack 的能力延伸到更多场景,其中包括一个专注稳定币的反洗钱系统(预计近期推出)。我们希望通过这一系统,在稳定币跨链流动日益频繁、风险结构更加复杂的背景下,为行业里的大型专业机构提供更精细、实时、且可配置的风险识别引擎。

自 2022 年上线以来,MistTrack 已服务超过十万用户,支持 18 条公链,积累 4 亿多个地址标签、一千多家实体、50 万+威胁情报数据及 9000 万+风险地址,为链上安全与反洗钱工作提供了有力支撑。2025 年第二季度,MistTrack 协助 11 起被盗案件成功冻结/追回约 1195 万美元资金,其调查成果也被联合国安理会、美国财政部及联合国毒品与犯罪问题办公室等机构采纳,推动国际反洗钱协作。此外,MistTrack 已通过国际权威认证机构 DNV 审核,获得 ISO/IEC 27001:2022 信息安全管理体系认证(CNAS & UKAS 双认可),进一步保障平台的安全性与可靠性。MistTrack 为全球用户识别了无数链上风险,并为多个行业提供了稳定且可落地的合规支持。

未来,慢雾(SlowMist) 将继续围绕监管实践、行业需求与合规标准,进一步完善 MistTrack 的全链路风险监控与合规服务,并与更多机构伙伴合作,共同推动区块链及数字资产行业的健康发展。如需了解更多信息或体验 MistTrack,可访问官网 https://misttrack.io 。
Ps. HKICT Awards 资料来源:https://www.hkictawards.hk/tc/
三方并肩:NOFX AI 交易系统漏洞守卫战背景 随着 AI 大模型实盘交易竞赛的升温,越来越多的加密社区与开发者开始尝试以 AI 驱动的自动化交易,诸多开源方案也被快速投入使用。然而,这些项目中不乏安全隐患。 NOFX AI 是一款基于 DeepSeek/Qwen AI 的开源加密货币期货自动交易系统,支持 Binance、Hyperliquid 与 Aster DEX 等交易所。慢雾安全团队接到 @Endlessss20 提供的最初情报,怀疑该系统可能会导致交易所 API Key 等泄漏,遂对此展开安全分析。 开源地址:https://github.com/NoFxAiOS/nofx 漏洞成因分析 经过慢雾安全团队的深入分析,发现 NOFX AI 在不同 commit 版本中存在两类主要鉴权问题。 “零鉴权”漏洞版本 2025 年 10 月 31 日的提交 517d0caf6fb091235e56c27889170b53a16e4e6b(origin/main、origin/dev 等分支均包含)引入了“默认管理员模式”,该 commit 版本的管理员模式默认开启且中间件直接放行。 config.json.example:1-24 与数据库迁移脚本都把 admin_mode 设为 true,main.go:42-63 在读取后直接调用 auth.SetAdminMode(true)。 更关键的是,在代码 api/server.go#L799 可以看到,只要 auth.IsAdminMode() 为 true,中间件会直接 return,完全跳过了 Authorization 认证头的检查。 因此在这个 commit 提交及之前,只要部署保持默认管理员模式,任何人都能直接访问 /api/exchanges,拿到全部交易所 API/私钥。 在这种模式下,所有受鉴权保护的 API 包括 /api/exchanges 都会按 “admin” 身份执行,因此任何人只需向公开的 API 发起 GET 请求就能拿到数据库中 ExchangeConfig 的完整内容。 ExchangeConfig 字段包括 api_key、secret_key、hyperliquid_wallet_addr 以及 aster_private_key,均为交易所登录密钥或私钥。也就是说,只要保持默认管理员模式,任何人都可直接访问 /api/exchanges 并获取全部交易所 API/私钥。这份 commit 的代码相当于将所有交易所密钥暴露在一个无需登录的 GET 接口上。 要求 Authorization 的版本 在 2025 年 11 月 5 日的提交 be768d91a3969b39741623c9507f3119e583eb16(PR #540 “Enable admin password in admin mode”) 中, 开发者移除了原先只要检测到 admin_mode 就直接放行不验证 Authorization 的逻辑。 需要注意的是该 commit 目前只在 dev 系列分支里(包括本地 dev 和 origin/dev 等)。origin/main 并没有包含这个提交。 authMiddleware 被改写为 api/server.go:1471-1511 的形式,必须携带 Authorization: Bearer <token> 才能进入受保护路由。若格式错误或 JWT 验证失败,会直接返回 401。 同一提交还新增了 /api/admin-login,要求部署者设置环境变量 NOFX_ADMIN_PASSWORD,也就是管理员模式不再是“无需登录自动生效”。如果 admin_mode 还是 true,main.go:203-226 会检查环境变量 NOFX_ADMIN_PASSWORD,并调用 log.Fatalf 直接终止进程,除非事先设置了该变量。设置完成后,管理员必须通过新的 /api/admin-login 接口提交这个密码才能拿到 JWT;没设密码就启动,会在初始化阶段被强制退出。 不过,这次改动只是把“完全无鉴权”升级为“必须提供 JWT”,仍然没有解决两个核心问题。 一是 config.json.example:1-27 依旧写死 jwt_secret,main.go:203-214 在环境变量缺失时继续回退到那个公开字符串。 若开发者直接使用示例配置文件,将导致默认密钥被启用,从而存在安全风险。而项目中的的默认部署脚本 start.sh 文件在检测到缺失配置时,会直接复制示例配置文件来使用。 二是 /api/exchanges 仍然以 JSON 形式把 api_key、secret_key、Aster 私钥等敏感字段原样返回。 因此,该版本访问 /api/exchanges 虽需 Authorization,但攻击者仍可通过默认密钥创建 JWT 或调用默认登录接口获取 token,从而读取全部密钥。 当前版本固定 JWT 问题依旧存在 截至目前(2025 年 11 月 13 日左右),dev 分支的 HEAD 为 b2e4be91523dc606be8708ec6602fecbbb0c20ea(PR #546 “Feature/faq”)。慢雾安全团队重新 checkout 这份提交后核对发现: authMiddleware 仍是 api/server.go:1471-1511 的实现,需要 Bearer token;/api/exchanges 仍直接返回 ExchangeConfig(api/server.go:1009-1021);config.json.example:1-27 和 main.go:198-226 依旧硬编码 admin_mode=true 与默认 jwt_secret。 因此,只要运维人员没有主动更换 jwt_secret 并关闭管理员模式,攻击者仍可利用公开密钥创建固定 JWT,进而访问 /api/exchanges 并获取所有交易所 API/私钥。换言之,2025-11-05 的修复仅仅把漏洞从“零鉴权”变成了“凭默认密钥鉴权”,问题的根源依然存在。 影响 我们根据程序特征,全网搜索,发现公网存在 1000+ 已经私有化部署并且对外开放的系统: 慢雾安全团队意识到,随时可能出现攻击情况,第一时间全盘考虑安全方案,最终我们决定联系币安安全团队、OKX 安全团队,慢雾与币安、OKX 成立安全作战室,我们提供情报、影响范围,币安安全团队、OKX 安全团队各自独立交叉验证,根据获得的 api_key 反向推进,从系统层面定位受影响用户,告知用户面临的安全风险,第一时间更换 api_key、secret_key 等信息,防止用户资产被对敲导致资损,保护用户资产安全。 截至 11 月 17 日,所有受影响的 CEX 用户均已完成通知,并已废弃相关密钥,用户资产处于安全状态。 对于少数 Aster、Hyperliquid 用户,慢雾与币安团队已尝试主动联系,但由于地址为去中心化钱包地址,我们无法直接触达具体用户。如您正在使用 Aster、Hyperliquid 的自动化交易系统,请及时检查并处理相关风险。 同时,我们将与 NOFX AI 团队沟通本次漏洞详情,并提供修复建议,协助其完善系统安全。 总结与建议 当下 AI 大模型量化项目正热,但多数开源实现仍处于早期阶段。部署这类新兴开源系统时,务必要先做充分的代码安全审计并强化风控措施,避免造成资金的损失。 综合上述分析,NOFX 项目虽经修复尝试,但核心问题仍未解决。任何部署 NOFX 项目的 commit 517d0caf 及更早版本(origin/main 目前仍停在这一代)都处于“无需 Authorization”状态,必须立即升级或手工关闭 admin 模式。 即便升级到 be768d9 或当前 HEAD,如果继续使用默认 jwt_secret,攻击者仍可以通过创建固定 Authorization 头拿到密钥。要彻底修复该漏洞,需要同时做到: 1. 随机化 JWT 密钥:启动时若发现 jwt_secret 与模板相同,拒绝运行;建议改为写入安全存储或密钥管理系统。 2. 禁用默认管理员模式:仅在显式配置时才允许 admin 模式,并要求强密码 + OTP;非 admin 模式下 /api/admin-login 应直接关闭。 3. 最小化 /api/exchanges 响应:默认只返回启用状态、测试网标志等非敏感字段;导出 API/私钥需单独接口并二次验证,且服务端对字段做脱敏或加密。 在开发团队完成这些修复之前,任何面向公网的部署都应视为高危。尤其是 origin/main 仍处于 517d0c 的“零鉴权”阶段,维护方需尽快同步最新代码并严格执行自定义密钥及接口加固策略。 致谢 再次感谢 @Endlessss20 提供的最初情报源!

三方并肩:NOFX AI 交易系统漏洞守卫战

背景
随着 AI 大模型实盘交易竞赛的升温,越来越多的加密社区与开发者开始尝试以 AI 驱动的自动化交易,诸多开源方案也被快速投入使用。然而,这些项目中不乏安全隐患。

NOFX AI 是一款基于 DeepSeek/Qwen AI 的开源加密货币期货自动交易系统,支持 Binance、Hyperliquid 与 Aster DEX 等交易所。慢雾安全团队接到 @Endlessss20 提供的最初情报,怀疑该系统可能会导致交易所 API Key 等泄漏,遂对此展开安全分析。
开源地址:https://github.com/NoFxAiOS/nofx
漏洞成因分析
经过慢雾安全团队的深入分析,发现 NOFX AI 在不同 commit 版本中存在两类主要鉴权问题。
“零鉴权”漏洞版本
2025 年 10 月 31 日的提交 517d0caf6fb091235e56c27889170b53a16e4e6b(origin/main、origin/dev 等分支均包含)引入了“默认管理员模式”,该 commit 版本的管理员模式默认开启且中间件直接放行。
config.json.example:1-24 与数据库迁移脚本都把 admin_mode 设为 true,main.go:42-63 在读取后直接调用 auth.SetAdminMode(true)。



更关键的是,在代码 api/server.go#L799 可以看到,只要 auth.IsAdminMode() 为 true,中间件会直接 return,完全跳过了 Authorization 认证头的检查。

因此在这个 commit 提交及之前,只要部署保持默认管理员模式,任何人都能直接访问 /api/exchanges,拿到全部交易所 API/私钥。
在这种模式下,所有受鉴权保护的 API 包括 /api/exchanges 都会按 “admin” 身份执行,因此任何人只需向公开的 API 发起 GET 请求就能拿到数据库中 ExchangeConfig 的完整内容。
ExchangeConfig 字段包括 api_key、secret_key、hyperliquid_wallet_addr 以及 aster_private_key,均为交易所登录密钥或私钥。也就是说,只要保持默认管理员模式,任何人都可直接访问 /api/exchanges 并获取全部交易所 API/私钥。这份 commit 的代码相当于将所有交易所密钥暴露在一个无需登录的 GET 接口上。

要求 Authorization 的版本
在 2025 年 11 月 5 日的提交 be768d91a3969b39741623c9507f3119e583eb16(PR #540 “Enable admin password in admin mode”) 中, 开发者移除了原先只要检测到 admin_mode 就直接放行不验证 Authorization 的逻辑。
需要注意的是该 commit 目前只在 dev 系列分支里(包括本地 dev 和 origin/dev 等)。origin/main 并没有包含这个提交。
authMiddleware 被改写为 api/server.go:1471-1511 的形式,必须携带 Authorization: Bearer <token> 才能进入受保护路由。若格式错误或 JWT 验证失败,会直接返回 401。

同一提交还新增了 /api/admin-login,要求部署者设置环境变量 NOFX_ADMIN_PASSWORD,也就是管理员模式不再是“无需登录自动生效”。如果 admin_mode 还是 true,main.go:203-226 会检查环境变量 NOFX_ADMIN_PASSWORD,并调用 log.Fatalf 直接终止进程,除非事先设置了该变量。设置完成后,管理员必须通过新的 /api/admin-login 接口提交这个密码才能拿到 JWT;没设密码就启动,会在初始化阶段被强制退出。

不过,这次改动只是把“完全无鉴权”升级为“必须提供 JWT”,仍然没有解决两个核心问题。
一是 config.json.example:1-27 依旧写死 jwt_secret,main.go:203-214 在环境变量缺失时继续回退到那个公开字符串。
若开发者直接使用示例配置文件,将导致默认密钥被启用,从而存在安全风险。而项目中的的默认部署脚本 start.sh 文件在检测到缺失配置时,会直接复制示例配置文件来使用。

二是 /api/exchanges 仍然以 JSON 形式把 api_key、secret_key、Aster 私钥等敏感字段原样返回。
因此,该版本访问 /api/exchanges 虽需 Authorization,但攻击者仍可通过默认密钥创建 JWT 或调用默认登录接口获取 token,从而读取全部密钥。

当前版本固定 JWT 问题依旧存在
截至目前(2025 年 11 月 13 日左右),dev 分支的 HEAD 为 b2e4be91523dc606be8708ec6602fecbbb0c20ea(PR #546 “Feature/faq”)。慢雾安全团队重新 checkout 这份提交后核对发现:
authMiddleware 仍是 api/server.go:1471-1511 的实现,需要 Bearer token;/api/exchanges 仍直接返回 ExchangeConfig(api/server.go:1009-1021);config.json.example:1-27 和 main.go:198-226 依旧硬编码 admin_mode=true 与默认 jwt_secret。
因此,只要运维人员没有主动更换 jwt_secret 并关闭管理员模式,攻击者仍可利用公开密钥创建固定 JWT,进而访问 /api/exchanges 并获取所有交易所 API/私钥。换言之,2025-11-05 的修复仅仅把漏洞从“零鉴权”变成了“凭默认密钥鉴权”,问题的根源依然存在。
影响
我们根据程序特征,全网搜索,发现公网存在 1000+ 已经私有化部署并且对外开放的系统:


慢雾安全团队意识到,随时可能出现攻击情况,第一时间全盘考虑安全方案,最终我们决定联系币安安全团队、OKX 安全团队,慢雾与币安、OKX 成立安全作战室,我们提供情报、影响范围,币安安全团队、OKX 安全团队各自独立交叉验证,根据获得的 api_key 反向推进,从系统层面定位受影响用户,告知用户面临的安全风险,第一时间更换 api_key、secret_key 等信息,防止用户资产被对敲导致资损,保护用户资产安全。
截至 11 月 17 日,所有受影响的 CEX 用户均已完成通知,并已废弃相关密钥,用户资产处于安全状态。
对于少数 Aster、Hyperliquid 用户,慢雾与币安团队已尝试主动联系,但由于地址为去中心化钱包地址,我们无法直接触达具体用户。如您正在使用 Aster、Hyperliquid 的自动化交易系统,请及时检查并处理相关风险。
同时,我们将与 NOFX AI 团队沟通本次漏洞详情,并提供修复建议,协助其完善系统安全。
总结与建议
当下 AI 大模型量化项目正热,但多数开源实现仍处于早期阶段。部署这类新兴开源系统时,务必要先做充分的代码安全审计并强化风控措施,避免造成资金的损失。
综合上述分析,NOFX 项目虽经修复尝试,但核心问题仍未解决。任何部署 NOFX 项目的 commit 517d0caf 及更早版本(origin/main 目前仍停在这一代)都处于“无需 Authorization”状态,必须立即升级或手工关闭 admin 模式。
即便升级到 be768d9 或当前 HEAD,如果继续使用默认 jwt_secret,攻击者仍可以通过创建固定 Authorization 头拿到密钥。要彻底修复该漏洞,需要同时做到:
1. 随机化 JWT 密钥:启动时若发现 jwt_secret 与模板相同,拒绝运行;建议改为写入安全存储或密钥管理系统。
2. 禁用默认管理员模式:仅在显式配置时才允许 admin 模式,并要求强密码 + OTP;非 admin 模式下 /api/admin-login 应直接关闭。
3. 最小化 /api/exchanges 响应:默认只返回启用状态、测试网标志等非敏感字段;导出 API/私钥需单独接口并二次验证,且服务端对字段做脱敏或加密。
在开发团队完成这些修复之前,任何面向公网的部署都应视为高危。尤其是 origin/main 仍处于 517d0c 的“零鉴权”阶段,维护方需尽快同步最新代码并严格执行自定义密钥及接口加固策略。
致谢
再次感谢 @Endlessss20 提供的最初情报源!
美国打击朝鲜加密资产洗钱网络:多名银行职员及多个金融机构受影响作者:77 & Lisa 编辑:77 2025 年 11 月 4 日,美国财政部外国资产控制办公室(OFAC) 宣布,对朝鲜多名银行职员及金融机构实施新一轮制裁,此次行动冻结了 8 名个人和 2 家实体在美国境内或由美国人控制的所有资产。这些个人和实体被指控通过网络犯罪、信息技术(IT) 劳工欺诈等手段为朝鲜政权筹集资金,用以支持其核武与导弹计划。 制裁详情 根据美国财政部的通报,长期以来朝鲜政府依靠包括网络犯罪在内的各种非法活动为其大规模杀伤性武器和弹道导弹项目筹集资金,并指示其黑客通过网络间谍、破坏性攻击和金融盗窃等手段牟利。据统计,过去三年与朝鲜有关的网络犯罪分子已窃取超过 30 亿美元资产,主要以加密货币形式转移。同时,大量朝鲜信息技术(IT) 从业人员通过在自由职业网站上注册账户并申请工作合同时使用虚假或盗用的身份信息来隐瞒自己的国籍和身份,从事各种 IT 开发工作,每年赚取数亿美元。在某些情况下,他们还会与其他外国程序员合作完成项目并分配收益。 美国财政部强调,朝鲜得以通过国际金融体系转移和清洗这些非法所得,依赖于一个由境内外银行代表、金融机构及空壳公司组成的国际金融机构代表网络。这些代理分布在包括中国和俄罗斯在内的多个国家,为朝鲜提供进入国际市场和金融体系的渠道,使其能够通过欺诈性 IT 工作、数字资产盗窃和规避制裁等活动获取资金。 此次被制裁对象包括: 1、机构(2 家): Ryujong Credit Bank —— 一家总部位于朝鲜平壤的金融机构,曾在中国与朝鲜之间提供协助规避制裁的金融服务,包括汇回朝鲜的外汇收入、洗钱以及为海外朝鲜劳工处理金融交易。Korea Mangyongdae Computer Technology Corporation (KMCTC) —— 一家总部位于朝鲜平壤的 IT 公司,据称在中国沈阳和丹东至少两个城市运营 IT 劳工派遣业务。KMCTC 的 IT 劳工曾利用中国公民作为银行代理,以掩盖其非法创收活动所得资金的真实来源。 2、个人(8 名): Choe Chun Pom:作为 Central Bank of the DPRK 在俄罗斯的代表,他曾处理超过 20 万美元的美元和人民币交易,并负责协调俄罗斯官员访问平壤的行程。Han Hong Gil:Koryo Commercial Bank Ltd 雇员,为受制裁的 Ryujong Credit Bank 协调超过 63 万美元的美元和人民币交易。 Jang Kuk Chol 与 Ho Jong Son:两人为 Cheil Credit Bank(又名 First Credit Bank,原名 Kyongyong Credit Bank)的资金管理人员,直接负责管理包括价值 530 万美元加密货币在内的海外资金池。其中部分资金可追踪至朝鲜国家级勒索软件团伙及 IT 劳务网络。他们被制裁的原因是“为网络犯罪活动提供资金支持与技术协助”。 Ho Yong Chol:驻中国的朝鲜金融代表,为 Korea Daesong Bank 转移超过 250 万美元的美元与人民币,并协助另一朝鲜政府关联机构操作 8500 万美元的资金流。他被认定为“代表被制裁银行行事”,并为朝鲜金融体系规避制裁提供渠道。 Jong Sung Hyok:担任 Foreign Trade Bank (FTB) 驻俄罗斯海参崴代表处负责人,主要负责协助银行开展跨境结算及洗钱业务。 Ri Jin Hyok:FTB 代表,协助该行旗下空壳公司转移超过 35 万美元的美元、人民币和欧元资金。U, Yong Su:现任 KMCTC 负责人,因管理 KMCTC、参与海外 IT 劳工及洗钱活动而被列入制裁名单。 这 8 名个人构成了朝鲜在中国与俄罗斯的金融代理网络核心,负责为朝鲜的非法活动提供资金转移、账户开设与洗钱服务。 制裁地址分析 此外,OFAC 在更新 SDN List 时,列出了 Cheil Credit Bank 关联的 53 个加密货币地址。 我们通过慢雾旗下的链上追踪 & 反洗钱工具 MistTrack 对此次制裁名单中的 53 个 USDT-TRC20 地址进行了分析,分析结果如下: 这 53 个地址累计共接收约 1,600 万枚 USDT-TRC20。资金来源主要集中在几家主流交易所的热钱包,也有部分来自此前其他事件中已被制裁的地址。 截至目前,约 60% 的地址余额为 0,资金已经被转移或清洗;剩下约 40% 的地址仍持有资金,单个地址余额在 27 万到 38 万 USDT 不等,目前余额合计约 650 万 USDT,这些资金已全部被 Tether 冻结。 从活跃时间来看,这 53 个制裁地址的交易活动覆盖了 2023 年 8 月 ~ 2025 年 7 月,其中 2024 年中 ~ 2025 年上半年为密集期。2025 年 1 月 ~ 5 月仍有大量交易,尤其是 5 月份,几乎每天都有多笔交易;少数地址活跃时间较短,仅几天到一周(如 5 月 6 日 ~ 5 月 7 日);到了 8 月初之后明显减少,大部分地址在制裁公告前一周就停止了新交易。 在交易路径和频率上,我们观察到地址间存在明显的多级转移与交叉汇聚特征,例如,TGKgL、TGpNz、TQKQ4、TXFUY 等地址之间存在反复互转,推测是为了掩盖资金来源、混淆转移轨迹。 此外,多个地址(如 TGKgL、TBwghb、TMECK)曾向 Binance、MEXC 等平台充值或转入。 反洗钱建议 此次制裁凸显了朝鲜通过网络犯罪、IT 劳工欺诈及国际金融代理网络等手段筹集资金并规避制裁的风险。为降低相关风险,建议从业者在接收或转账数字资产前,使用链上追踪工具(如 MistTrack)对交易对手地址进行实时筛查,了解其历史交易行为及潜在风险,确认资金来源是否透明合规,避免接收来自受制裁钱包、已知高风险地址或可疑交易路径的资产;而企业、交易所、服务商及其他项目方则需落实客户身份识别(KYC) 和链上交易监控(KYT) 机制,持续追踪资金流向,识别潜在高风险地址、受制裁实体及可疑资金,避免与高风险对象产生业务关联,从而降低被动卷入制裁网络或非法资金流通的风险。 基于多年区块链安全研究和风控实践,慢雾(SlowMist) 旗下反洗钱追踪分析系统 MistTrack 已为多家交易所、企业提供稳定可靠的链上风控支持和强有力的 AML 合规解决方案,并为个人用户、企业团队和开发者提供准确的数据分析、实时的风险监控以及全面的合规支持。MistTrack 可以检测资金来源,筛查资金是否来自受制裁钱包或高风险地址,避免接收被污染资金;还可以实时风控,在交易前进行地址审查,避免与受制裁地址或可疑资金往来,降低被冻结的可能性。目前,MistTrack 已积累 4 亿多个地址标签,一千多家实体,50 万 + 威胁情报数据,9000 万 + 风险地址,为数字资产安全与打击洗钱犯罪提供了坚实支撑。更多链上反洗钱实践经验,可参考我们此前的案例分享文章:[案例分享|MistTrack 助力虚拟资产基金实现反洗钱合规风控](https://www.binance.com/zh-CN/square/post/30070900142474),了解实际操作与应用场景。如需了解更多信息,请访问 https://aml.slowmist.com. 相关链接: https://home.treasury.gov/news/press-releases/sb0302 https://ofac.treasury.gov/recent-actions/20251104

美国打击朝鲜加密资产洗钱网络:多名银行职员及多个金融机构受影响

作者:77 & Lisa
编辑:77
2025 年 11 月 4 日,美国财政部外国资产控制办公室(OFAC) 宣布,对朝鲜多名银行职员及金融机构实施新一轮制裁,此次行动冻结了 8 名个人和 2 家实体在美国境内或由美国人控制的所有资产。这些个人和实体被指控通过网络犯罪、信息技术(IT) 劳工欺诈等手段为朝鲜政权筹集资金,用以支持其核武与导弹计划。

制裁详情
根据美国财政部的通报,长期以来朝鲜政府依靠包括网络犯罪在内的各种非法活动为其大规模杀伤性武器和弹道导弹项目筹集资金,并指示其黑客通过网络间谍、破坏性攻击和金融盗窃等手段牟利。据统计,过去三年与朝鲜有关的网络犯罪分子已窃取超过 30 亿美元资产,主要以加密货币形式转移。同时,大量朝鲜信息技术(IT) 从业人员通过在自由职业网站上注册账户并申请工作合同时使用虚假或盗用的身份信息来隐瞒自己的国籍和身份,从事各种 IT 开发工作,每年赚取数亿美元。在某些情况下,他们还会与其他外国程序员合作完成项目并分配收益。
美国财政部强调,朝鲜得以通过国际金融体系转移和清洗这些非法所得,依赖于一个由境内外银行代表、金融机构及空壳公司组成的国际金融机构代表网络。这些代理分布在包括中国和俄罗斯在内的多个国家,为朝鲜提供进入国际市场和金融体系的渠道,使其能够通过欺诈性 IT 工作、数字资产盗窃和规避制裁等活动获取资金。
此次被制裁对象包括:
1、机构(2 家):
Ryujong Credit Bank —— 一家总部位于朝鲜平壤的金融机构,曾在中国与朝鲜之间提供协助规避制裁的金融服务,包括汇回朝鲜的外汇收入、洗钱以及为海外朝鲜劳工处理金融交易。Korea Mangyongdae Computer Technology Corporation (KMCTC) —— 一家总部位于朝鲜平壤的 IT 公司,据称在中国沈阳和丹东至少两个城市运营 IT 劳工派遣业务。KMCTC 的 IT 劳工曾利用中国公民作为银行代理,以掩盖其非法创收活动所得资金的真实来源。
2、个人(8 名):
Choe Chun Pom:作为 Central Bank of the DPRK 在俄罗斯的代表,他曾处理超过 20 万美元的美元和人民币交易,并负责协调俄罗斯官员访问平壤的行程。Han Hong Gil:Koryo Commercial Bank Ltd 雇员,为受制裁的 Ryujong Credit Bank 协调超过 63 万美元的美元和人民币交易。
Jang Kuk Chol 与 Ho Jong Son:两人为 Cheil Credit Bank(又名 First Credit Bank,原名 Kyongyong Credit Bank)的资金管理人员,直接负责管理包括价值 530 万美元加密货币在内的海外资金池。其中部分资金可追踪至朝鲜国家级勒索软件团伙及 IT 劳务网络。他们被制裁的原因是“为网络犯罪活动提供资金支持与技术协助”。
Ho Yong Chol:驻中国的朝鲜金融代表,为 Korea Daesong Bank 转移超过 250 万美元的美元与人民币,并协助另一朝鲜政府关联机构操作 8500 万美元的资金流。他被认定为“代表被制裁银行行事”,并为朝鲜金融体系规避制裁提供渠道。
Jong Sung Hyok:担任 Foreign Trade Bank (FTB) 驻俄罗斯海参崴代表处负责人,主要负责协助银行开展跨境结算及洗钱业务。
Ri Jin Hyok:FTB 代表,协助该行旗下空壳公司转移超过 35 万美元的美元、人民币和欧元资金。U, Yong Su:现任 KMCTC 负责人,因管理 KMCTC、参与海外 IT 劳工及洗钱活动而被列入制裁名单。
这 8 名个人构成了朝鲜在中国与俄罗斯的金融代理网络核心,负责为朝鲜的非法活动提供资金转移、账户开设与洗钱服务。
制裁地址分析
此外,OFAC 在更新 SDN List 时,列出了 Cheil Credit Bank 关联的 53 个加密货币地址。


我们通过慢雾旗下的链上追踪 & 反洗钱工具 MistTrack 对此次制裁名单中的 53 个 USDT-TRC20 地址进行了分析,分析结果如下:
这 53 个地址累计共接收约 1,600 万枚 USDT-TRC20。资金来源主要集中在几家主流交易所的热钱包,也有部分来自此前其他事件中已被制裁的地址。

截至目前,约 60% 的地址余额为 0,资金已经被转移或清洗;剩下约 40% 的地址仍持有资金,单个地址余额在 27 万到 38 万 USDT 不等,目前余额合计约 650 万 USDT,这些资金已全部被 Tether 冻结。

从活跃时间来看,这 53 个制裁地址的交易活动覆盖了 2023 年 8 月 ~ 2025 年 7 月,其中 2024 年中 ~ 2025 年上半年为密集期。2025 年 1 月 ~ 5 月仍有大量交易,尤其是 5 月份,几乎每天都有多笔交易;少数地址活跃时间较短,仅几天到一周(如 5 月 6 日 ~ 5 月 7 日);到了 8 月初之后明显减少,大部分地址在制裁公告前一周就停止了新交易。

在交易路径和频率上,我们观察到地址间存在明显的多级转移与交叉汇聚特征,例如,TGKgL、TGpNz、TQKQ4、TXFUY 等地址之间存在反复互转,推测是为了掩盖资金来源、混淆转移轨迹。

此外,多个地址(如 TGKgL、TBwghb、TMECK)曾向 Binance、MEXC 等平台充值或转入。

反洗钱建议
此次制裁凸显了朝鲜通过网络犯罪、IT 劳工欺诈及国际金融代理网络等手段筹集资金并规避制裁的风险。为降低相关风险,建议从业者在接收或转账数字资产前,使用链上追踪工具(如 MistTrack)对交易对手地址进行实时筛查,了解其历史交易行为及潜在风险,确认资金来源是否透明合规,避免接收来自受制裁钱包、已知高风险地址或可疑交易路径的资产;而企业、交易所、服务商及其他项目方则需落实客户身份识别(KYC) 和链上交易监控(KYT) 机制,持续追踪资金流向,识别潜在高风险地址、受制裁实体及可疑资金,避免与高风险对象产生业务关联,从而降低被动卷入制裁网络或非法资金流通的风险。

基于多年区块链安全研究和风控实践,慢雾(SlowMist) 旗下反洗钱追踪分析系统 MistTrack 已为多家交易所、企业提供稳定可靠的链上风控支持和强有力的 AML 合规解决方案,并为个人用户、企业团队和开发者提供准确的数据分析、实时的风险监控以及全面的合规支持。MistTrack 可以检测资金来源,筛查资金是否来自受制裁钱包或高风险地址,避免接收被污染资金;还可以实时风控,在交易前进行地址审查,避免与受制裁地址或可疑资金往来,降低被冻结的可能性。目前,MistTrack 已积累 4 亿多个地址标签,一千多家实体,50 万 + 威胁情报数据,9000 万 + 风险地址,为数字资产安全与打击洗钱犯罪提供了坚实支撑。更多链上反洗钱实践经验,可参考我们此前的案例分享文章:案例分享|MistTrack 助力虚拟资产基金实现反洗钱合规风控,了解实际操作与应用场景。如需了解更多信息,请访问 https://aml.slowmist.com.
相关链接:
https://home.treasury.gov/news/press-releases/sb0302
https://ofac.treasury.gov/recent-actions/20251104
活动回顾|慢雾(SlowMist)亮相第十届香港金融科技周 202511 月 3 日,由香港财经事务及库务局、香港商务及经济发展局和香港投资推广署联合主办,并由香港金融管理局、香港证券及期货事务监察委员会及香港保险业监管局合办的“第十届香港金融科技周「Hong Kong Fintech Week 2025」在香港会议展览中心隆重揭幕。 作为全球领先的金融科技盛会之一,本届金融科技周以“策动金融科技新时代”为主题,吸引了来自超过 100 个经济体的逾 37,000 名与会者,约 800 名演讲嘉宾、700 多家参展机构及逾 30 个国际及中国内地代表团参与,再次印证了香港作为全球金融科技枢纽的强大吸引力与创新活力。 在开幕仪式上,香港特别行政区行政长官李家超发表主旨致辞,强调香港作为创新与协作桥梁的独特地位。他指出:“香港心系协作、力求创新,致力让企业、创业家、投资者及专业人士发挥所长。”李家超同时提到,香港在今年《联合国贸易和发展会议世界投资报告》中外来直接投资流入排名升至全球第三位,并在首次公开招股(IPO) 集资额方面表现亮眼,充分体现了香港作为“超级联系人”与“超级增值人”的国际地位。 慢雾(SlowMist) 深度参与多场主题活动 作为专注区块链生态安全的威胁情报公司,慢雾(SlowMist) 今年继续亮相香港金融科技周展区(展位号:5E-WB06),展示其在安全审计、反洗钱、威胁情报及合规服务等方面的最新成果与实践,吸引了众多行业嘉宾、媒体与参会者驻足交流。参会者对慢雾在区块链安全审计、反洗钱监控及威胁情报分析等领域的专业能力给予高度评价。 除在展区交流之外,慢雾安全团队亦受邀参与大会同期举办的多场主题论坛与圆桌讨论,以专业视角分享在区块链安全与合规领域的见解。 11 月 4 日中午,慢雾香港社区负责人 Tony Tan 受邀出席「区块链与 Web3 论坛」圆桌讨论《守护数字资产:网络风险、反洗钱与链上金融犯罪》,与业内专家共同剖析智能合约漏洞、基础设施攻击及社交工程攻击等常见风险场景。Tony Tan 在发言中指出:“真正的安全并非消灭风险,而是让风险可见、可控、可追溯。” 他分享了慢雾在多起大型安全事件中的链上追踪与威胁情报经验,强调行业要加强安全基础设施的协同建设,以威胁情报为纽带,形成监管机构、金融机构与安全团队之间的联合防线,共同推动 Web3 金融生态的透明化与可持续发展。 当日下午,慢雾(SlowMist) CPO Keywolf 参与由 HashKey Group 主办的「RWA: Onboard 峰会」圆桌《链上安全:数字时代的机构级信任》,与来自 HashKey Group、HashKey Chain 及蓝象智联的嘉宾探讨如何通过区块链技术构建机构级信任,确保现实资产(RWA) 安全上链。Keywolf 在讨论中表示:“构建透明、可验证的安全体系,是机构信任落地的前提,也是现实资产上链的稳固基石。” 次日,Keywolf 受邀出席由新火科技主办的「香港金融科技高峰论坛暨产品发布会」,参与圆桌讨论《传统资本与数字资产融合发展的合规思考》。在与来自法律、监管及金融机构的嘉宾交流中,他强调,随着监管框架逐步完善,传统金融机构正加速与加密产业融合;而慢雾正通过合规安全审计与 AML 技术,助力机构在稳健合规的框架下实现创新突破。 本届香港金融科技周的交流与合作,让慢雾进一步巩固了其在区块链安全与合规领域的行业影响力。随着金融科技的持续演进与监管体系的日趋完善,慢雾(SlowMist) 将继续秉持“慢而有为、雾释冰融”的理念,不断提升技术能力与国际合作水平,协助金融机构、企业及项目方实现合规运营与风险防控,共同促进全球 Web3 生态的安全与可持续发展。

活动回顾|慢雾(SlowMist)亮相第十届香港金融科技周 2025

11 月 3 日,由香港财经事务及库务局、香港商务及经济发展局和香港投资推广署联合主办,并由香港金融管理局、香港证券及期货事务监察委员会及香港保险业监管局合办的“第十届香港金融科技周「Hong Kong Fintech Week 2025」在香港会议展览中心隆重揭幕。

作为全球领先的金融科技盛会之一,本届金融科技周以“策动金融科技新时代”为主题,吸引了来自超过 100 个经济体的逾 37,000 名与会者,约 800 名演讲嘉宾、700 多家参展机构及逾 30 个国际及中国内地代表团参与,再次印证了香港作为全球金融科技枢纽的强大吸引力与创新活力。
在开幕仪式上,香港特别行政区行政长官李家超发表主旨致辞,强调香港作为创新与协作桥梁的独特地位。他指出:“香港心系协作、力求创新,致力让企业、创业家、投资者及专业人士发挥所长。”李家超同时提到,香港在今年《联合国贸易和发展会议世界投资报告》中外来直接投资流入排名升至全球第三位,并在首次公开招股(IPO) 集资额方面表现亮眼,充分体现了香港作为“超级联系人”与“超级增值人”的国际地位。

慢雾(SlowMist) 深度参与多场主题活动
作为专注区块链生态安全的威胁情报公司,慢雾(SlowMist) 今年继续亮相香港金融科技周展区(展位号:5E-WB06),展示其在安全审计、反洗钱、威胁情报及合规服务等方面的最新成果与实践,吸引了众多行业嘉宾、媒体与参会者驻足交流。参会者对慢雾在区块链安全审计、反洗钱监控及威胁情报分析等领域的专业能力给予高度评价。
除在展区交流之外,慢雾安全团队亦受邀参与大会同期举办的多场主题论坛与圆桌讨论,以专业视角分享在区块链安全与合规领域的见解。
11 月 4 日中午,慢雾香港社区负责人 Tony Tan 受邀出席「区块链与 Web3 论坛」圆桌讨论《守护数字资产:网络风险、反洗钱与链上金融犯罪》,与业内专家共同剖析智能合约漏洞、基础设施攻击及社交工程攻击等常见风险场景。Tony Tan 在发言中指出:“真正的安全并非消灭风险,而是让风险可见、可控、可追溯。” 他分享了慢雾在多起大型安全事件中的链上追踪与威胁情报经验,强调行业要加强安全基础设施的协同建设,以威胁情报为纽带,形成监管机构、金融机构与安全团队之间的联合防线,共同推动 Web3 金融生态的透明化与可持续发展。
当日下午,慢雾(SlowMist) CPO Keywolf 参与由 HashKey Group 主办的「RWA: Onboard 峰会」圆桌《链上安全:数字时代的机构级信任》,与来自 HashKey Group、HashKey Chain 及蓝象智联的嘉宾探讨如何通过区块链技术构建机构级信任,确保现实资产(RWA) 安全上链。Keywolf 在讨论中表示:“构建透明、可验证的安全体系,是机构信任落地的前提,也是现实资产上链的稳固基石。”
次日,Keywolf 受邀出席由新火科技主办的「香港金融科技高峰论坛暨产品发布会」,参与圆桌讨论《传统资本与数字资产融合发展的合规思考》。在与来自法律、监管及金融机构的嘉宾交流中,他强调,随着监管框架逐步完善,传统金融机构正加速与加密产业融合;而慢雾正通过合规安全审计与 AML 技术,助力机构在稳健合规的框架下实现创新突破。

本届香港金融科技周的交流与合作,让慢雾进一步巩固了其在区块链安全与合规领域的行业影响力。随着金融科技的持续演进与监管体系的日趋完善,慢雾(SlowMist) 将继续秉持“慢而有为、雾释冰融”的理念,不断提升技术能力与国际合作水平,协助金融机构、企业及项目方实现合规运营与风险防控,共同促进全球 Web3 生态的安全与可持续发展。
积羽沉舟 —— Balancer 超1亿美元被黑分析作者:Kong & Lisa 编辑:77 背景 2025 年 11 月 3 日,老牌去中心化自动做市商协议 Balancer v2 遭到攻击,包括其 fork 协议在内的多个项目在多条链上损失约 1.2 亿美元,这使得本就不太景气的 DeFi 生态雪上加霜。以下是慢雾安全团队针对此次攻击事件的具体分析: 根本原因 Balancer v2 的 Composable Stable Pool 实现中(基于 Curve StableSwap 的 Stable Math),对缩放因子(scalingFactors) 的整数定点运算存在精度丢失问题,导致在代币兑换中产生微小、但可复利式积累的价差/误差。攻击者利用低流动性下小额兑换来放大此误差以显著的累计利润。 前置知识 在分析开始前,我们需要了解关于 Balancer 的一些关键性知识以便理解本次分析内容。 Composable Stable Pools(可组合稳定池) 可组合稳定资产池专为预期以接近平价或已知汇率的资产而设计的代币互换池子。例如,以接近1:1 互换的 USDC/USDT,或者以已知汇率互换的 WETH/stETH。 Balancer Pool Token (BPT) BPT 代表 Balancer 池子的份额,当用户向池子添加流动性时可以获得 BPT 以代表用户在池子中的流动性份额。 Composable(可组合性) 资金池允许使用 LP 与流动性资产进行互换以提高资本效率。例如,允许使用 BPT 代币与 WETH/stETH 等流动性代币之间进行互换。 Scaling Factor(缩放因子) Balancer 的底层池子中设计了一套用于管理小数精度以及舍入方向的方法,使得所有资金在进入池子进行计算前通过缩放因子确保精度以及小数舍入方向是有利于池子的。 Batch Swaps(批量互换) 批量互换功能允许用户在一笔交易内在同个/多个池子中进行不同代币之间的互换,池子通过虚拟数值进行内部记账,并在批量互换结束后进行结算。 攻击分析 这里以攻击者在以太坊上攻击涉及的两笔交易为例: 攻击交易:0x6ed07db1a9fe5c0794d44cd36081d6a6df103fab868cdd75d581e3bd23bc9742 取款交易:0xd155207261712c35fa3d472ed1e51bfcd816e616dd4f517fa5959836f5b48569 1. 攻击者首先通过批量互换功能发起攻击交易,其使用 BPT 大量换出池子的流动性代币,这使得池子的流动性代币储备变得很低。 2. 在池子流动性代币储备下降后,攻击者开始进行流动性代币之间(osETH/WETH) 的互换操作。 3. 最后再将流动性代币换回 BPT 代币,并在多个池子不断的重复此操作。 4. 完成攻击交易后,攻击者通过独立的一笔取款交易调用 Vault 的 manageUserBalance 函数提取所获得利润。而这笔交易也正是早前被多个分析员误以为是攻击交易并进行分析,但实际这只是使用了正常的取款逻辑的正常取款交易。 5. 那么为什么攻击者可以看似简单的通过上述操作就可以无需支付任何代币就从 Vault 中取款呢?通过简单的观察我们可以发现,攻击者在完成批量互换后 Vault 内部记账余额都实现了增加,这使得攻击者可以直接从 Vault 中提取这些余额。 接下来我们具体剖析为何攻击者无需付出任何代币即可无中生有的让余额实现增长。 原理剖析 通过上述攻击分析我们可以知道,攻击者主要通过三个步骤实现获利: 使用 BPT 兑换流动性代币;进行流动性代币互换;将流动性代币换回 BPT。 我们首先分析 BPT 兑换流动性代币的过程,由于攻击者传入的兑换类型 kind 是 1,所以池子会将攻击者传入的兑换数额作为 amountOut 来计算攻击者应该提供多少 amountIn 进行兑换。这里不在赘述繁琐的调用链,我们直接分析 BPT 兑换的底层 _swapWithBpt 函数。 通过  swapWithBpt 函数我们可以发现其会先通过 upscaleArray 函数使用缩放因子对池子的代币储备数额进行缩放,以便统一价格精度与舍入方向。_upscaleArray 函数通过 FixedPoint.mulDown 进行具体的缩放操作。我们可以很快的知道 mulDown 会使得计算结果会向下舍入,即截断小数。 这将导致池子储备在缩放过程中如果存在小数的话会被直接截断。通过前置知识我们可以知道可组合性池子是专为预期以接近平价或已知汇率的资产而设计的代币互换池子,以这里的 WETH 与 osETH 为例,他们之间是有一个已知的汇率的。因此在计算 osETH 实际储备时是需要乘以汇率再进行缩放以统一价格。 很不幸的是,由于汇率的存在计算 osETH 的储备数额必然会被截断小数。 这就使得计算后的池子储备余额会小于预期,而 BPT 的价格是通过池子流动性代币总价格除 BPT 代币总供应量来计算的5,这意味着上述误差会使得 BPT 价格小于预期。 利用此误差造成的价差,攻击者在批量互换中的第三步将流动性代币换回 BPT 代币时将获得微小的利润。但这显然与攻击者巨大的获利相差甚远,因此关键在于批量互换中的第二步。 攻击者在进行流动性互换时使用的兑换类型 kind 仍然是 1,我们直接切入底层互换函数进行分析,可以很快发现 swapGivenOut 函数会先通过 upscale 函数进行缩放。 与先前的 _upscaleArray 函数一样会通过 FixedPoint.mulDown 函数对用户的兑换数额缩放后的值进行小数截断,这使得最终所需的输入代币 amountIn 数量将小于预期。如果兑换的数额巨大,那么这点误差是可以忽略的,但如果兑换数额很小时,这就将导致巨大的偏差。 攻击者也正是如此操作的,在批量互换中的第二步中,先将池子中的 osETH 的余额储备变得更小,随后进行精确的进行 17wei 的 osETH 小额兑换。 在进行缩放计算时实际的余额应该为 17.98825094772952。 但因为小数截断,最终余额仍为 17wei,0.98825094772952 相对于 17 来说,精度损失已经造成了巨大的偏差。以此计算的输入代币数量 amountIn 也会造成巨大的偏差。 为了确保能够循环累计此偏差,在批量互换中的第二步中攻击者会再将 osETH 换回 WETH,以确保下次仍有充足的流动性来进行小额互换。 而 WETH 本身就是汇率锚定的代币,因此 osETH -> WETH 的兑换过程中的缩放是以 1e18 进行的,因此并不会之前的误差累计造成影响。 至此,我们可以很清晰的了解整个攻击流程了: 攻击者通过 BPT 兑换流动性代币来降低池子的流动性代币储备以对小额互换做准备通过流动性代币之间 WETH -> osETH 的互换来为精确控制小额互换精度误差做准备精确的通过 WETH -> osETH 互换来累计精度误差通过流动性代币之间 osETH -> WETH 的互换来恢复流动性重复 2-4 的过程不断的放大误差将流动性代币换回 BPT 代币以此恢复流动性平衡利用小额代币互换放大的误差使得最终结算时 Out 的代币数额远大于所需的 In 的代币数额,以此获得巨大利润 MistTrack 分析 由于涉及项目较多,此小节仅分析本次事件中主要的地址及其资金流向。 1、地址 0xaa760d53541d8390074c61defeaba314675b8e3f 获利情况:在以太坊上获利,资产类型包括 osETH、USDC 等多种代币。 转移情况:将 ezETH、weETH、ankrETH 等多种代币,以及部分 osETH 兑换为 ETH 后,集中转出至地址 0xf19fd5c683a958ce9210948858b80d433f6bfae2。 余额情况:主要包括7,838.3569 WETH 和 7,000 ETH。 初始资金来源:地址 0x506d1f9efe24f0d47853adca907eb8d89ae03207,其资金来自 gas.zip。 通过对地址 0x506d1f9efe24f0d47853adca907eb8d89ae03207 进行分析,其在 gas.zip 的交易情况如下: 该地址不断将 Arbitrum 上的 ETH 分散转出到多条链后并发起攻击。再向上追溯,该地址 0x506d1f9efe24f0d47853adca907eb8d89ae03207 的资金最初可追溯至 Tornado Cash: Tornado Cash → 0x86fedad11c4765700934639f1efe1fc01355c982:从 Tornado Cash 提取的 100 ETH + 0.1 ETH 转入此地址。0x86fedad11c4765700934639f1efe1fc01355c982 → 0x766a892f8ba102556c8537d02fca0ff4cacfc492:转移 15 ETH。0x766a892f8ba102556c8537d02fca0ff4cacfc492 → 跨链并进行 gas.zip 操作:将 5 ETH 从以太坊跨链至 Arbitrum 并转到地址 0x506de24d01e6c8623307c9ff5e3c8a945b553207。 2、地址 0xf19fd5c683a958ce9210948858b80d433f6bfae2 获利情况:该地址为核心中转节点,接收来自多个链和上游地址的资金。上游来源:来自 Arbitrum 地址 0x872757006b6F2Fd65244C0a2A5fdd1f70A7780f4 转入 USDX 和 sUSDX; 来自 Sonic 地址 0x045371528A01071D6E5C934d42D641FD3cBE941c 的 stS; 来自上述以太坊地址 0xaa760d53541d8390074c61defeaba314675b8e3f 和 0x506d1f9efe24f0d47853adca907eb8d89ae03207 的转入。 转移情况:在以太坊上通过 Velora、CowSwap、KyberSwap、ODOS 等平台将资产兑换为 ETH 与 WETH 以及通过 LI.FI 将部分资产分别跨链至 Arbitrum 与 Sonic; 在 Sonic 上通过 KyberSwap 将 stS 兑换为 S。 余额情况:除了将 7,000 ETH 转移给上述地址 0xaa760d53541d8390074c61defeaba314675b8e3f,其他资金均未转出。 相关地址已加入 SlowMist AML 的恶意地址库,我们将持续监控相关资金的异动。 11月6日,Balancer 官方发布了最新通报,其表示尽管此次攻击波及范围较广,但多方快速响应在短时间内显著降低了损失。 (https://x.com/Balancer/status/1986104426667401241) 目前的资金进展如下: SEAL Whitehat Safe Harbor (BIP-726, Oct 2024):得益于 2024 年 10 月启用的 SEAL Whitehat Safe Harbor (BIP-726) 法律框架,白帽团队在事件发生后得以迅速介入并协同处置。HyperNative 自动化应急暂停机制触发:08:06 UTC 时,Hypernative 的紧急暂停系统启动;到 08:07 UTC,受影响网络上的所有 CSPv6 资金池均已暂停,阻止进一步扩散。所有可暂停的 CSPv6 资金池已进入恢复模式,包括此前未纳入统计的低 TVL 资金池。CSPv6 工厂功能禁用:修复完成前,无法创建新的易受攻击池。受影响池的激励与排放全部终止,以保留 BAL 及合作方奖励资产。主要 LP 已安全退出:包括 Crypto.com(约 80 万美元,cdcETH/wstETH)与 Ether.fi(约 106 万美元,eBTC/wBTC)。Stakewise 追回资产:已追回 5,041 枚 osETH(约 1,900 万美元)及 13,495 枚 osGNO(约 170–200 万美元),约占被盗 osETH 的 73.5%,将按比例返还受影响用户。Berachain 验证者网络暂停:为控制 Balancer v2 在 BEX 上的风险敞口,链上操作已暂停并启动紧急分叉。Sonic Labs 冻结相关地址:对与 Beets(Sonic 上的 Balancer v2 分叉)相关的可疑攻击者地址实施冻结,防止资金继续转移或兑换。Base MEV 机器人协助回收:已协助追回约 15 万美元。BitFinding 白帽团队:在主网上成功拦截并追回约 60 万美元资产。Monerium 冻结 EURe 资产:约 130 万 EURe 被锁定,以防止资金进一步流动。Gnosis 桥限制措施:与 Monerium 团队协调,在 Gnosis Chain 上临时限制跨链转出,降低跨链传播风险。SEAL 团队与攻击者沟通:正在按照 SEAL 框架持续推进资金返还协商。更多白帽团队参与支援:包括 SNP 在内的多支安全团队正协助分析、救援及资金返还。 目前,Balancer 正与安全合作伙伴、研究人员、交易所及白帽团队积极合作,以推进资金回收。在完成验证与清算后,官方将公布更为详细的事后分析报告。 总结 本次攻击的核心在于攻击者利用了 Balancer v2 协议 Composable Stable Pool 实现中对缩放因子进行整数定点运算时存在的精度丢失缺陷。通过精心构造的小额兑换放大这种缺陷带来的误差使得攻击者在批量互换中积羽沉舟的制造出巨额利润。慢雾安全团队建议项目方/审计人员在面对类似场景时应当加强对极端场景和边界条件的测试覆盖,特别需要考虑低流动性场景下的精度处理策略。 参考 [1] https://docs-v2.balancer.fi/concepts/pools/composable-stable.html [2] https://docs.balancer.fi/concepts/core-concepts/balancer-pool-tokens.html [3] https://docs.balancer.fi/concepts/vault/token-scaling.html [4] https://docs-v2.balancer.fi/reference/swaps/batch-swaps.html [5] https://docs-v2.balancer.fi/concepts/advanced/valuing-bpt/valuing-bpt.html#informational-price-evaluation

积羽沉舟 —— Balancer 超1亿美元被黑分析

作者:Kong & Lisa
编辑:77
背景
2025 年 11 月 3 日,老牌去中心化自动做市商协议 Balancer v2 遭到攻击,包括其 fork 协议在内的多个项目在多条链上损失约 1.2 亿美元,这使得本就不太景气的 DeFi 生态雪上加霜。以下是慢雾安全团队针对此次攻击事件的具体分析:
根本原因
Balancer v2 的 Composable Stable Pool 实现中(基于 Curve StableSwap 的 Stable Math),对缩放因子(scalingFactors) 的整数定点运算存在精度丢失问题,导致在代币兑换中产生微小、但可复利式积累的价差/误差。攻击者利用低流动性下小额兑换来放大此误差以显著的累计利润。
前置知识
在分析开始前,我们需要了解关于 Balancer 的一些关键性知识以便理解本次分析内容。
Composable Stable Pools(可组合稳定池)
可组合稳定资产池专为预期以接近平价或已知汇率的资产而设计的代币互换池子。例如,以接近1:1 互换的 USDC/USDT,或者以已知汇率互换的 WETH/stETH。
Balancer Pool Token (BPT)
BPT 代表 Balancer 池子的份额,当用户向池子添加流动性时可以获得 BPT 以代表用户在池子中的流动性份额。
Composable(可组合性)
资金池允许使用 LP 与流动性资产进行互换以提高资本效率。例如,允许使用 BPT 代币与 WETH/stETH 等流动性代币之间进行互换。
Scaling Factor(缩放因子)
Balancer 的底层池子中设计了一套用于管理小数精度以及舍入方向的方法,使得所有资金在进入池子进行计算前通过缩放因子确保精度以及小数舍入方向是有利于池子的。
Batch Swaps(批量互换)
批量互换功能允许用户在一笔交易内在同个/多个池子中进行不同代币之间的互换,池子通过虚拟数值进行内部记账,并在批量互换结束后进行结算。
攻击分析
这里以攻击者在以太坊上攻击涉及的两笔交易为例:
攻击交易:0x6ed07db1a9fe5c0794d44cd36081d6a6df103fab868cdd75d581e3bd23bc9742
取款交易:0xd155207261712c35fa3d472ed1e51bfcd816e616dd4f517fa5959836f5b48569
1. 攻击者首先通过批量互换功能发起攻击交易,其使用 BPT 大量换出池子的流动性代币,这使得池子的流动性代币储备变得很低。
2. 在池子流动性代币储备下降后,攻击者开始进行流动性代币之间(osETH/WETH) 的互换操作。
3. 最后再将流动性代币换回 BPT 代币,并在多个池子不断的重复此操作。
4. 完成攻击交易后,攻击者通过独立的一笔取款交易调用 Vault 的 manageUserBalance 函数提取所获得利润。而这笔交易也正是早前被多个分析员误以为是攻击交易并进行分析,但实际这只是使用了正常的取款逻辑的正常取款交易。
5. 那么为什么攻击者可以看似简单的通过上述操作就可以无需支付任何代币就从 Vault 中取款呢?通过简单的观察我们可以发现,攻击者在完成批量互换后 Vault 内部记账余额都实现了增加,这使得攻击者可以直接从 Vault 中提取这些余额。
接下来我们具体剖析为何攻击者无需付出任何代币即可无中生有的让余额实现增长。
原理剖析
通过上述攻击分析我们可以知道,攻击者主要通过三个步骤实现获利:
使用 BPT 兑换流动性代币;进行流动性代币互换;将流动性代币换回 BPT。
我们首先分析 BPT 兑换流动性代币的过程,由于攻击者传入的兑换类型 kind 是 1,所以池子会将攻击者传入的兑换数额作为 amountOut 来计算攻击者应该提供多少 amountIn 进行兑换。这里不在赘述繁琐的调用链,我们直接分析 BPT 兑换的底层 _swapWithBpt 函数。
通过  swapWithBpt 函数我们可以发现其会先通过 upscaleArray 函数使用缩放因子对池子的代币储备数额进行缩放,以便统一价格精度与舍入方向。_upscaleArray 函数通过 FixedPoint.mulDown 进行具体的缩放操作。我们可以很快的知道 mulDown 会使得计算结果会向下舍入,即截断小数。
这将导致池子储备在缩放过程中如果存在小数的话会被直接截断。通过前置知识我们可以知道可组合性池子是专为预期以接近平价或已知汇率的资产而设计的代币互换池子,以这里的 WETH 与 osETH 为例,他们之间是有一个已知的汇率的。因此在计算 osETH 实际储备时是需要乘以汇率再进行缩放以统一价格。
很不幸的是,由于汇率的存在计算 osETH 的储备数额必然会被截断小数。
这就使得计算后的池子储备余额会小于预期,而 BPT 的价格是通过池子流动性代币总价格除 BPT 代币总供应量来计算的5,这意味着上述误差会使得 BPT 价格小于预期。
利用此误差造成的价差,攻击者在批量互换中的第三步将流动性代币换回 BPT 代币时将获得微小的利润。但这显然与攻击者巨大的获利相差甚远,因此关键在于批量互换中的第二步。
攻击者在进行流动性互换时使用的兑换类型 kind 仍然是 1,我们直接切入底层互换函数进行分析,可以很快发现 swapGivenOut 函数会先通过 upscale 函数进行缩放。
与先前的 _upscaleArray 函数一样会通过 FixedPoint.mulDown 函数对用户的兑换数额缩放后的值进行小数截断,这使得最终所需的输入代币 amountIn 数量将小于预期。如果兑换的数额巨大,那么这点误差是可以忽略的,但如果兑换数额很小时,这就将导致巨大的偏差。
攻击者也正是如此操作的,在批量互换中的第二步中,先将池子中的 osETH 的余额储备变得更小,随后进行精确的进行 17wei 的 osETH 小额兑换。
在进行缩放计算时实际的余额应该为 17.98825094772952。
但因为小数截断,最终余额仍为 17wei,0.98825094772952 相对于 17 来说,精度损失已经造成了巨大的偏差。以此计算的输入代币数量 amountIn 也会造成巨大的偏差。
为了确保能够循环累计此偏差,在批量互换中的第二步中攻击者会再将 osETH 换回 WETH,以确保下次仍有充足的流动性来进行小额互换。
而 WETH 本身就是汇率锚定的代币,因此 osETH -> WETH 的兑换过程中的缩放是以 1e18 进行的,因此并不会之前的误差累计造成影响。
至此,我们可以很清晰的了解整个攻击流程了:
攻击者通过 BPT 兑换流动性代币来降低池子的流动性代币储备以对小额互换做准备通过流动性代币之间 WETH -> osETH 的互换来为精确控制小额互换精度误差做准备精确的通过 WETH -> osETH 互换来累计精度误差通过流动性代币之间 osETH -> WETH 的互换来恢复流动性重复 2-4 的过程不断的放大误差将流动性代币换回 BPT 代币以此恢复流动性平衡利用小额代币互换放大的误差使得最终结算时 Out 的代币数额远大于所需的 In 的代币数额,以此获得巨大利润
MistTrack 分析
由于涉及项目较多,此小节仅分析本次事件中主要的地址及其资金流向。
1、地址 0xaa760d53541d8390074c61defeaba314675b8e3f
获利情况:在以太坊上获利,资产类型包括 osETH、USDC 等多种代币。

转移情况:将 ezETH、weETH、ankrETH 等多种代币,以及部分 osETH 兑换为 ETH 后,集中转出至地址 0xf19fd5c683a958ce9210948858b80d433f6bfae2。

余额情况:主要包括7,838.3569 WETH 和 7,000 ETH。

初始资金来源:地址 0x506d1f9efe24f0d47853adca907eb8d89ae03207,其资金来自 gas.zip。

通过对地址 0x506d1f9efe24f0d47853adca907eb8d89ae03207 进行分析,其在 gas.zip 的交易情况如下:


该地址不断将 Arbitrum 上的 ETH 分散转出到多条链后并发起攻击。再向上追溯,该地址 0x506d1f9efe24f0d47853adca907eb8d89ae03207 的资金最初可追溯至 Tornado Cash:
Tornado Cash → 0x86fedad11c4765700934639f1efe1fc01355c982:从 Tornado Cash 提取的 100 ETH + 0.1 ETH 转入此地址。0x86fedad11c4765700934639f1efe1fc01355c982 → 0x766a892f8ba102556c8537d02fca0ff4cacfc492:转移 15 ETH。0x766a892f8ba102556c8537d02fca0ff4cacfc492 → 跨链并进行 gas.zip 操作:将 5 ETH 从以太坊跨链至 Arbitrum 并转到地址 0x506de24d01e6c8623307c9ff5e3c8a945b553207。

2、地址 0xf19fd5c683a958ce9210948858b80d433f6bfae2
获利情况:该地址为核心中转节点,接收来自多个链和上游地址的资金。上游来源:来自 Arbitrum 地址 0x872757006b6F2Fd65244C0a2A5fdd1f70A7780f4 转入 USDX 和 sUSDX;

来自 Sonic 地址 0x045371528A01071D6E5C934d42D641FD3cBE941c 的 stS;

来自上述以太坊地址 0xaa760d53541d8390074c61defeaba314675b8e3f 和 0x506d1f9efe24f0d47853adca907eb8d89ae03207 的转入。
转移情况:在以太坊上通过 Velora、CowSwap、KyberSwap、ODOS 等平台将资产兑换为 ETH 与 WETH 以及通过 LI.FI 将部分资产分别跨链至 Arbitrum 与 Sonic;


在 Sonic 上通过 KyberSwap 将 stS 兑换为 S。

余额情况:除了将 7,000 ETH 转移给上述地址 0xaa760d53541d8390074c61defeaba314675b8e3f,其他资金均未转出。
相关地址已加入 SlowMist AML 的恶意地址库,我们将持续监控相关资金的异动。
11月6日,Balancer 官方发布了最新通报,其表示尽管此次攻击波及范围较广,但多方快速响应在短时间内显著降低了损失。
(https://x.com/Balancer/status/1986104426667401241)
目前的资金进展如下:
SEAL Whitehat Safe Harbor (BIP-726, Oct 2024):得益于 2024 年 10 月启用的 SEAL Whitehat Safe Harbor (BIP-726) 法律框架,白帽团队在事件发生后得以迅速介入并协同处置。HyperNative 自动化应急暂停机制触发:08:06 UTC 时,Hypernative 的紧急暂停系统启动;到 08:07 UTC,受影响网络上的所有 CSPv6 资金池均已暂停,阻止进一步扩散。所有可暂停的 CSPv6 资金池已进入恢复模式,包括此前未纳入统计的低 TVL 资金池。CSPv6 工厂功能禁用:修复完成前,无法创建新的易受攻击池。受影响池的激励与排放全部终止,以保留 BAL 及合作方奖励资产。主要 LP 已安全退出:包括 Crypto.com(约 80 万美元,cdcETH/wstETH)与 Ether.fi(约 106 万美元,eBTC/wBTC)。Stakewise 追回资产:已追回 5,041 枚 osETH(约 1,900 万美元)及 13,495 枚 osGNO(约 170–200 万美元),约占被盗 osETH 的 73.5%,将按比例返还受影响用户。Berachain 验证者网络暂停:为控制 Balancer v2 在 BEX 上的风险敞口,链上操作已暂停并启动紧急分叉。Sonic Labs 冻结相关地址:对与 Beets(Sonic 上的 Balancer v2 分叉)相关的可疑攻击者地址实施冻结,防止资金继续转移或兑换。Base MEV 机器人协助回收:已协助追回约 15 万美元。BitFinding 白帽团队:在主网上成功拦截并追回约 60 万美元资产。Monerium 冻结 EURe 资产:约 130 万 EURe 被锁定,以防止资金进一步流动。Gnosis 桥限制措施:与 Monerium 团队协调,在 Gnosis Chain 上临时限制跨链转出,降低跨链传播风险。SEAL 团队与攻击者沟通:正在按照 SEAL 框架持续推进资金返还协商。更多白帽团队参与支援:包括 SNP 在内的多支安全团队正协助分析、救援及资金返还。

目前,Balancer 正与安全合作伙伴、研究人员、交易所及白帽团队积极合作,以推进资金回收。在完成验证与清算后,官方将公布更为详细的事后分析报告。
总结
本次攻击的核心在于攻击者利用了 Balancer v2 协议 Composable Stable Pool 实现中对缩放因子进行整数定点运算时存在的精度丢失缺陷。通过精心构造的小额兑换放大这种缺陷带来的误差使得攻击者在批量互换中积羽沉舟的制造出巨额利润。慢雾安全团队建议项目方/审计人员在面对类似场景时应当加强对极端场景和边界条件的测试覆盖,特别需要考虑低流动性场景下的精度处理策略。
参考
[1] https://docs-v2.balancer.fi/concepts/pools/composable-stable.html
[2] https://docs.balancer.fi/concepts/core-concepts/balancer-pool-tokens.html
[3] https://docs.balancer.fi/concepts/vault/token-scaling.html
[4] https://docs-v2.balancer.fi/reference/swaps/batch-swaps.html
[5] https://docs-v2.balancer.fi/concepts/advanced/valuing-bpt/valuing-bpt.html#informational-price-evaluation
相约香港|慢雾将亮相香港金融科技周及多场 Web3 行业盛会2025 年 11 月,香港将成为全球金融科技与 Web3 的焦点。作为专注于区块链生态安全的威胁情报公司,慢雾(SlowMist) 将亮相香港金融科技周及多场 Web3 行业活动,围绕区块链安全、合规风控与反洗钱(AML) 等关键议题,分享最新研究成果与实践经验。 香港金融科技周 2025 x StartmeupHK 创业节 香港金融科技周 2025 x StartmeupHK 创业节将于 11 月 3 日至 11 月 7 日在香港会议展览中心隆重举行。作为香港首屈一指的创科盛事,香港金融科技周 2025 x StartmeupHK 创业节由香港财经事务及库务局、香港商务及经济发展局和香港投资推广署联合主办,并由香港金融管理局、香港证券及期货事务监察委员会及香港保险业监管局合办。活动以“策动金融科技新时代”为主题,预计将吸引逾 100 个经济体的 37,000 名与会者、800 位演讲嘉宾及超过 700 家参展机构,共同探讨金融科技的未来格局与发展机遇。 在这场全球金融科技盛会上,慢雾(SlowMist) 将在展台 5E-WB06 欢迎各界与会者莅临交流。(如需了解有关活动的更多信息,请访问:https://www.fintechweek.hk/) 时间:11 月 3 日至 4 日 9:00 ~ 18:00 地点:香港会议展览中心 5 号展厅 展位:5E-WB06 此外,慢雾(SlowMist) 香港社区负责人 Tony Tan 将在区块链与 Web3 论坛参与圆桌「守护数字资产:网络风险、反洗钱与链上金融犯罪」,与业内专家剖析智能合约漏洞、基础设施攻击、社交工程攻击等常见风险场景,并分享慢雾在链上追踪、AML 合规防护及风险治理等方面的实战经验与前瞻思考,探讨如何构建更加稳健、安全的 Web3 生态。 时间:11 月 4 日 12:20 ~ 12:40 地点:Hall 5E, Blockchain & Web3 Forum 除香港金融科技周主活动外,慢雾(SlowMist) 还将参与多场同期举办的行业论坛,与来自全球的金融科技、合规与安全领域专家深入交流,共话 Web3 生态的安全与发展。 RWA:Onboard 峰会 时间:11 月 4 日 16:40 ~ 17:20 地点:香港 JW 万豪酒店 报名链接:https://luma.com/ule897cr 在由 HashKey Group 主办的 RWA: Onboard 峰会上,慢雾(SlowMist) CPO Keywolf 将参与圆桌讨论「链上安全:数字时代的机构级信任」(Securely on-chain: Institutional Trust in the Digital Era),与来自 HashKey Group、HashKey Chain 及蓝象智联的嘉宾,共同探讨如何通过区块链技术建立机构级信任,确保现实资产(RWA) 安全上链,推动数字资产行业的规范化发展。 香港金融科技高峰论坛暨新火科技产品发布会 时间:11 月 5 日 09:00 ~ 16:00 地点:香港君悦酒店·Grand Ballroom 报名链接:https://luma.com/i7zqi72c 11 月 5 日,新火科技将在香港君悦酒店举办「香港金融科技高峰论坛暨新火科技产品发布会」。本次论坛将汇聚全球金融科技领域的顶尖思想领袖与行业专家,共同探讨数字资产在未来金融生态中的定位与发展路径。其中,慢雾(SlowMist) CPO Keywolf 将于 15:30 ~ 16:00 参与圆桌讨论「传统资本与数字资产融合发展的合规思考」,与大家共同探讨传统资本与数字资产融合发展的路径与实践。 Web3.0 创新博览会 —— 2025 年数码港创业投资论坛(CVCF) 的重磅活动 时间:11 月 7 日 09:30 ~ 18:30 地点:香港数码港三座三楼 F 区海景长廊 活动链接:https://cvcf.cyberport.hk/en/programme 作为数码港创业投资论坛(Cyberport Venture Capital Forum, CVCF) 2025 的焦点活动之一,Web3.0 创新博览(Web3.0 Innovation Expo) 将于 11 月 7 日 在香港数码港隆重举行。本次博览会将汇聚将汇聚政策制定者、创业者、投资者、企业和生态系统推动者,共同探讨 RWA 的合规与信任、稳定币与跨境支付的创新应用、Web3 基础设施与监管趋势以及去中心化身份与数据的未来机遇等前沿议题。慢雾(SlowMist) 香港社区负责人 Tony Tan 将出席本次博览,与来自全球的业界代表共同了解 Web3 领域的创新发展与合规趋势,持续关注区块链安全、反洗钱与风险防控的最新动态。 在金融科技与 Web3 快速演进的时代,安全与合规是推动行业健康发展的基石。慢雾(SlowMist) 将继续秉持专业、安全与信任的核心理念,携手全球合作伙伴,共建更加稳健、透明的数字金融未来。如果您希望了解更多关于 Web3 安全与合规的前沿趋势,欢迎前往现场,与慢雾(SlowMist) 团队面对面交流。 香港见!

相约香港|慢雾将亮相香港金融科技周及多场 Web3 行业盛会

2025 年 11 月,香港将成为全球金融科技与 Web3 的焦点。作为专注于区块链生态安全的威胁情报公司,慢雾(SlowMist) 将亮相香港金融科技周及多场 Web3 行业活动,围绕区块链安全、合规风控与反洗钱(AML) 等关键议题,分享最新研究成果与实践经验。
香港金融科技周 2025 x StartmeupHK 创业节
香港金融科技周 2025 x StartmeupHK 创业节将于 11 月 3 日至 11 月 7 日在香港会议展览中心隆重举行。作为香港首屈一指的创科盛事,香港金融科技周 2025 x StartmeupHK 创业节由香港财经事务及库务局、香港商务及经济发展局和香港投资推广署联合主办,并由香港金融管理局、香港证券及期货事务监察委员会及香港保险业监管局合办。活动以“策动金融科技新时代”为主题,预计将吸引逾 100 个经济体的 37,000 名与会者、800 位演讲嘉宾及超过 700 家参展机构,共同探讨金融科技的未来格局与发展机遇。

在这场全球金融科技盛会上,慢雾(SlowMist) 将在展台 5E-WB06 欢迎各界与会者莅临交流。(如需了解有关活动的更多信息,请访问:https://www.fintechweek.hk/)
时间:11 月 3 日至 4 日 9:00 ~ 18:00
地点:香港会议展览中心 5 号展厅
展位:5E-WB06


此外,慢雾(SlowMist) 香港社区负责人 Tony Tan 将在区块链与 Web3 论坛参与圆桌「守护数字资产:网络风险、反洗钱与链上金融犯罪」,与业内专家剖析智能合约漏洞、基础设施攻击、社交工程攻击等常见风险场景,并分享慢雾在链上追踪、AML 合规防护及风险治理等方面的实战经验与前瞻思考,探讨如何构建更加稳健、安全的 Web3 生态。
时间:11 月 4 日 12:20 ~ 12:40
地点:Hall 5E, Blockchain & Web3 Forum

除香港金融科技周主活动外,慢雾(SlowMist) 还将参与多场同期举办的行业论坛,与来自全球的金融科技、合规与安全领域专家深入交流,共话 Web3 生态的安全与发展。
RWA:Onboard 峰会

时间:11 月 4 日 16:40 ~ 17:20
地点:香港 JW 万豪酒店
报名链接:https://luma.com/ule897cr
在由 HashKey Group 主办的 RWA: Onboard 峰会上,慢雾(SlowMist) CPO Keywolf 将参与圆桌讨论「链上安全:数字时代的机构级信任」(Securely on-chain: Institutional Trust in the Digital Era),与来自 HashKey Group、HashKey Chain 及蓝象智联的嘉宾,共同探讨如何通过区块链技术建立机构级信任,确保现实资产(RWA) 安全上链,推动数字资产行业的规范化发展。
香港金融科技高峰论坛暨新火科技产品发布会

时间:11 月 5 日 09:00 ~ 16:00
地点:香港君悦酒店·Grand Ballroom
报名链接:https://luma.com/i7zqi72c
11 月 5 日,新火科技将在香港君悦酒店举办「香港金融科技高峰论坛暨新火科技产品发布会」。本次论坛将汇聚全球金融科技领域的顶尖思想领袖与行业专家,共同探讨数字资产在未来金融生态中的定位与发展路径。其中,慢雾(SlowMist) CPO Keywolf 将于 15:30 ~ 16:00 参与圆桌讨论「传统资本与数字资产融合发展的合规思考」,与大家共同探讨传统资本与数字资产融合发展的路径与实践。
Web3.0 创新博览会 —— 2025 年数码港创业投资论坛(CVCF) 的重磅活动

时间:11 月 7 日 09:30 ~ 18:30
地点:香港数码港三座三楼 F 区海景长廊
活动链接:https://cvcf.cyberport.hk/en/programme
作为数码港创业投资论坛(Cyberport Venture Capital Forum, CVCF) 2025 的焦点活动之一,Web3.0 创新博览(Web3.0 Innovation Expo) 将于 11 月 7 日 在香港数码港隆重举行。本次博览会将汇聚将汇聚政策制定者、创业者、投资者、企业和生态系统推动者,共同探讨 RWA 的合规与信任、稳定币与跨境支付的创新应用、Web3 基础设施与监管趋势以及去中心化身份与数据的未来机遇等前沿议题。慢雾(SlowMist) 香港社区负责人 Tony Tan 将出席本次博览,与来自全球的业界代表共同了解 Web3 领域的创新发展与合规趋势,持续关注区块链安全、反洗钱与风险防控的最新动态。
在金融科技与 Web3 快速演进的时代,安全与合规是推动行业健康发展的基石。慢雾(SlowMist) 将继续秉持专业、安全与信任的核心理念,携手全球合作伙伴,共建更加稳健、透明的数字金融未来。如果您希望了解更多关于 Web3 安全与合规的前沿趋势,欢迎前往现场,与慢雾(SlowMist) 团队面对面交流。
香港见!
Move 安全吗?Typus 权限验证漏洞作者:Johan & Lisa 编辑:77 10 月 16 日,Sui 链上的 DeFi 项目 Typus Finance 遭遇黑客攻击,官方已发布攻击事件报告并在报告中致谢慢雾安全团队协助调查和追踪: 本文将深入分析本次攻击的原因,并探讨 Sui Move 智能合约的权限控制的特点。 攻击步骤详解 我们解析第一笔攻击交易: https://suivision.xyz/txblock/6KJvWtmrZDi5MxUPkJfDNZTLf2DFGKhQA2WuVAdSRUgH 攻击步骤如下: 1. 篡改价格 相关代码:typus_oracle/sources/oracle.move   public fun update_v2(        oracle: &mut Oracle,        update_authority: & UpdateAuthority,        price: u64,        twap_price: u64,        clock: &Clock,        ctx: &mut TxContext    ) {        // check authority        vector::contains(&update_authority.authority, &tx_context::sender(ctx));        version_check(oracle);         update_(oracle, price, twap_price, clock, ctx);    }//...    fun update_(        oracle: &mut Oracle,        price: u64,        twap_price: u64,        clock: &Clock,        ctx: & TxContext    ) {        assert!(price > 0, E_INVALID_PRICE);        assert!(twap_price > 0, E_INVALID_PRICE);         let ts_ms = clock::timestamp_ms(clock);         oracle.price = price;        oracle.twap_price = twap_price;        oracle.ts_ms = ts_ms;        oracle.epoch = tx_context::epoch(ctx);         emit(PriceEvent {id: object::id(oracle), price, ts_ms});    } 我们看一下 update_v2 中的权限验证方式: 传入能力对象 UpdateAuthority,但这个能力对象是一个 share object,意味着它是可以被任何人访问的。 相关代码:public struct UpdateAuthority has key {         id: UID,         authority: vector<address>,     }     entry fun new_update_authority(         managercap: &ManagerCap,         ctx: &mut TxContext     ) {         let update_authority = UpdateAuthority {id: object::new(ctx), authority: vector[ tx_context::sender(ctx) ]};         transfer::share_object(update_authority);     } 开发者的原意是用 authority 列表管理可以访问的用户白名单,但对于返回的结果(是/否)却没有判断 vector::contains(&update_authority.authority,&tx_context::sender(ctx))。 于是攻击者就可以调用 update_v2 更新 oracle.price Transaction 1-2:更新预言机价格 - Oracle 0x0a31...c0d0:价格设为 651,548,270 - Oracle 0x6e7c...bc21:价格设为 1 2. 第一次套利:SUI → XBTC 相关代码:typus_perp/sources/tlp/lp_pool.movepublic fun swap<F_TOKEN, T_TOKEN>(         version: &mut Version,         registry: &mut Registry,         index: u64,         oracle_from_token: &Oracle,         oracle_to_token: &Oracle,         from_coin: Coin<F_TOKEN>,         min_to_amount: u64,         clock: &Clock,         ctx: &mut TxContext,     ): Coin<T_TOKEN> {         // ...         let (price_f_token_to_usd, price_f_decimal) = oracle_from_token.get_price_with_interval_ms(clock, 0);         let (price_t_token_to_usd, price_t_decimal) = oracle_to_token.get_price_with_interval_ms(clock, 0);         //...         // calculate to_amount_value by oracle price         let from_amount_usd = math::amount_to_usd(             from_amount,             f_token_config.liquidity_token_decimal,             price_f_token_to_usd,             price_f_decimal         );         let to_amount_value = math::usd_to_amount(             from_amount_usd,             t_token_config.liquidity_token_decimal,             price_t_token_to_usd,             price_t_decimal         );                 //...                 let to_amount_after_fee = math::usd_to_amount(             from_amount_usd - fee_amount_usd,             t_token_config.liquidity_token_decimal,             price_t_token_to_usd,             price_t_decimal         );         assert!(to_amount_after_fee >= min_to_amount, error::reach_slippage_threshold());         // deposit         {             let swap_fee_protocol_share_bp = {                 let token_pool = get_mut_token_pool(liquidity_pool, &f_token_type);                 token_pool.config.spot_config.swap_fee_protocol_share_bp             };             let mut from_balance = from_coin.into_balance();             let protocol_fee_balance = from_balance.split(((fee_amount as u128)                                         * (swap_fee_protocol_share_bp as u128)                                             / 10000 as u64));             let from_balance_value_after_fee = from_balance.value();             admin::charge_fee(version, protocol_fee_balance);             balance::join(dynamic_field::borrow_mut(&mut liquidity_pool.id, f_token_type), from_balance);             let token_pool = get_mut_token_pool(liquidity_pool, &f_token_type);             assert!(token_pool.state.liquidity_amount + from_balance_value_after_fee <= token_pool.config.spot_config.max_capacity, error::reach_max_capacity());             token_pool.state.liquidity_amount = token_pool.state.liquidity_amount + from_balance_value_after_fee;             update_tvl(version, liquidity_pool, f_token_type, oracle_from_token, clock);         };         // withdraw         let to_balance = {             let to_balance = balance::split(                 dynamic_field::borrow_mut<TypeName, Balance<T_TOKEN>>(&mut liquidity_pool.id, t_token_type),                 to_amount_after_fee             );             let withdraw_amount = balance::value(&to_balance);             let token_pool = get_mut_token_pool(liquidity_pool, &t_token_type);             token_pool.state.liquidity_amount = token_pool.state.liquidity_amount - withdraw_amount;             assert!(token_pool.state.liquidity_amount >= token_pool.state.reserved_amount, error::liquidity_not_enough());             update_tvl(version, liquidity_pool, t_token_type, oracle_to_token, clock);             to_balance         };         emit(SwapEvent {             sender: tx_context::sender(ctx),             index,             from_token_type: f_token_type,             from_amount,             to_token_type: t_token_type,             min_to_amount,             actual_to_amount: to_amount_after_fee,             fee_amount,             fee_amount_usd,             oracle_price_from_token: price_f_token_to_usd,             oracle_price_to_token: price_t_token_to_usd,             u64_padding: vector::empty()         });         coin::from_balance(to_balance, ctx)     } 攻击者调用 swap 方法兑换代币,由于当前池子的兑换算法并非使用经典的恒定乘积计算代币输出,而是调用 .get_price_with_interval_ms() 方法去取预言机价格,这个价格就是攻击者已经篡改过的价格。 Transaction 3: LP 池交换 - 输入:1 SUI(精度 9) - 输出:60,000,000 XBTC(精度 8,价值约 0.6 BTC) 如此攻击者就用了少量的代币换取了高价值的代币,接下来只需要如法炮制掏空其它池子。 3. 持续攻击套利 从攻击者账号操作记录我们可以看到攻击者共发起了 10 次的 update_v2 攻击,并立即将攻击所得通过跨链桥转移走。 https://suivision.xyz/account/0xc99ac031ff19e9bff0b5b3f5b870c82402db99c30dfec2d406eb2088be6c2194?tab=Activity 4. MistTrack 分析 据链上反洗钱与追踪工具 MistTrack 分析,被盗资产总额约 344 万美元,包括 588,357.9 SUI、1,604,034.7 USDC、0.6 xBTC 和 32.227 suiETH。 SUI 链黑客地址 0xc99ac031ff19e9bff0b5b3f5b870c82402db99c30dfec2d406eb2088be6c2194 先将 suiETH、xBTC 以及大部分 SUI 通过 Cetus、Haedal Protocol、Turbos 等平台兑换为 USDC。 随后,约 3,430,717 USDC 在 14 笔交易中通过 Circle CCTP 跨链至以太坊黑客地址 0xeb8a15d28dd54231e7e950f5720bc3d7af77b443。 在以太坊上,这笔资金通过 Curve 兑换为 3,430,241.91 DAI,并转入新地址 0x4502cf2bc9c8743e63cbb9bbde0011989eed03c1,目前该地址上的 DAI 未转出。 追踪发现,以太坊黑客地址 0xeb8a15d28dd54231e7e950f5720bc3d7af77b443 的初始资金来自地址 0x7efcc6f928fb29fddc8dd5f769ff003da590e9eb——该地址此前在 BSC 上通过 Tornado Cash 提取 1 BNB,其中 0.146 BNB 被兑换为 0.041 ETH 并跨链至以太坊。 此外,该以太坊黑客地址还收到来自 SUI 黑客地址的少量资金:共 120.7242 SUI 经由 Mayan Finance 跨链后,转换为约 0.079 ETH 存入,接着该以太坊黑客地址 0xeb8a 将 0.11 ETH 转入地址 0x4502cf2bc9c8743e63cbb9bbde0011989eed03c1。 进一步分析显示,该地址 0x4502 同时还收到来自地址 0x04586599bbe44cb9f0d8faa96567670f93d873e3 转入的 0.1379 ETH,而这 0.1379 ETH 则来自 Mayan Finance 转入——往上追溯,资金来自另一个 SUI 地址 0x840ed9288595e684e42606073d7a7d5aae35ecf1571943d8bf2d67e283db8466。 该 SUI 地址 0x840ed9288595e684e42606073d7a7d5aae35ecf1571943d8bf2d67e283db8466 共收到 207.6 SUI(其中 41.68 SUI 来自 Bybit),SUI 都被兑换为 USDC 并跨链转出。 相关地址已加入 SlowMist AML 的恶意地址库,我们将持续监控相关资金的异动。 防护建议 这是一个典型的预言机价格操纵攻击,黑客利用了共享对象可以任意访问的特点,结合白名单验证漏洞,任意修改预言机价格,然后通过套利获取大量资金。 修复方法很简单,只需要增加一个 assert! 判断: Sui Move 智能合约的权限控制的特点 与 Solidity 相比,Sui Move 的权限控制更“内置”和强制性:Solidity 依赖开发者手动实现 access control(如 Ownable 合约),而 Sui Move 通过语言级机制强制执行,减少人为错误。 在 Sui Move 中,一切数据都以“对象”(Object) 形式存在,每个对象都有唯一的 ID (Object ID),并绑定到一个所有者(Owner)。对象不能被复制,只能被“移动”(Move) 或销毁,这通过 Move 的线性类型系统强制执行。 所有权类型:地址所有(Address-Owned):对象属于特定地址,只有该地址的所有者才能修改或转移它。这是最常见的权限控制方式,类似于“私有财产”,防止他人未授权访问。共享所有(Shared):对象可以被任何人访问,但修改需要通过共识机制。这适合 DeFi 或游戏中的共享资产,但会引入轻微的性能开销。不可变(Immutable):对象一旦冻结,就无法修改,类似于“只读”权限,常用于 NFT 或稳定配置。包所有(Package-Owned):对象属于某个模块包,常用于模块内部状态。 这种模型天然防止双重花费和未授权修改,因为资源的所有权是排他的。转移所有权时,使用 transfer 函数明确移动权限。 为了直观说明,我们还是以本次漏洞分析中的 Typus 项目中的安全代码片段,展示正确使用能力控制管理员权限的方法: typus_oracle/sources/oracle.move fun init(ctx: &mut TxContext) {        transfer::transfer(            ManagerCap {id: object::new(ctx)},            tx_context::sender(ctx)        );    }    //...    public fun update(        oracle: &mut Oracle,        managercap: &ManagerCap,        price: u64,        twap_price: u64,        clock: &Clock,        ctx: &mut TxContext    ) {        version_check(oracle);        update_(oracle, price, twap_price, clock, ctx);    } 在这个例子中,首先 init 初始化时将 ManagerCap 转移给 sender,也就是协议管理员,ManagerCap 作为能力对象,在 update 时需要传入,确保只有管理者能执行敏感操作。 结语 尽管 Sui Move 通过对象所有权模型和能力机制提供了强大的权限控制基础,但开发者仍需在关键函数中正确实现权限验证。这个案例提醒我们:再先进的语言特性也无法完全替代严谨的编码实践和全面的安全审计。

Move 安全吗?Typus 权限验证漏洞

作者:Johan & Lisa
编辑:77
10 月 16 日,Sui 链上的 DeFi 项目 Typus Finance 遭遇黑客攻击,官方已发布攻击事件报告并在报告中致谢慢雾安全团队协助调查和追踪:

本文将深入分析本次攻击的原因,并探讨 Sui Move 智能合约的权限控制的特点。
攻击步骤详解
我们解析第一笔攻击交易:
https://suivision.xyz/txblock/6KJvWtmrZDi5MxUPkJfDNZTLf2DFGKhQA2WuVAdSRUgH
攻击步骤如下:
1. 篡改价格
相关代码:typus_oracle/sources/oracle.move   public fun update_v2(        oracle: &mut Oracle,        update_authority: & UpdateAuthority,        price: u64,        twap_price: u64,        clock: &Clock,        ctx: &mut TxContext    ) {        // check authority        vector::contains(&update_authority.authority, &tx_context::sender(ctx));        version_check(oracle);
        update_(oracle, price, twap_price, clock, ctx);    }//...    fun update_(        oracle: &mut Oracle,        price: u64,        twap_price: u64,        clock: &Clock,        ctx: & TxContext    ) {        assert!(price > 0, E_INVALID_PRICE);        assert!(twap_price > 0, E_INVALID_PRICE);
        let ts_ms = clock::timestamp_ms(clock);
        oracle.price = price;        oracle.twap_price = twap_price;        oracle.ts_ms = ts_ms;        oracle.epoch = tx_context::epoch(ctx);
        emit(PriceEvent {id: object::id(oracle), price, ts_ms});    }
我们看一下 update_v2 中的权限验证方式:
传入能力对象 UpdateAuthority,但这个能力对象是一个 share object,意味着它是可以被任何人访问的。
相关代码:public struct UpdateAuthority has key {
        id: UID,
        authority: vector<address>,
    }

    entry fun new_update_authority(
        managercap: &ManagerCap,
        ctx: &mut TxContext
    ) {
        let update_authority = UpdateAuthority {id: object::new(ctx), authority: vector[ tx_context::sender(ctx) ]};
        transfer::share_object(update_authority);
    }
开发者的原意是用 authority 列表管理可以访问的用户白名单,但对于返回的结果(是/否)却没有判断 vector::contains(&update_authority.authority,&tx_context::sender(ctx))。
于是攻击者就可以调用 update_v2 更新 oracle.price
Transaction 1-2:更新预言机价格
- Oracle 0x0a31...c0d0:价格设为 651,548,270
- Oracle 0x6e7c...bc21:价格设为 1
2. 第一次套利:SUI → XBTC
相关代码:typus_perp/sources/tlp/lp_pool.movepublic fun swap<F_TOKEN, T_TOKEN>(
        version: &mut Version,
        registry: &mut Registry,
        index: u64,
        oracle_from_token: &Oracle,
        oracle_to_token: &Oracle,
        from_coin: Coin<F_TOKEN>,
        min_to_amount: u64,
        clock: &Clock,
        ctx: &mut TxContext,
    ): Coin<T_TOKEN> {
        // ...
        let (price_f_token_to_usd, price_f_decimal) = oracle_from_token.get_price_with_interval_ms(clock, 0);
        let (price_t_token_to_usd, price_t_decimal) = oracle_to_token.get_price_with_interval_ms(clock, 0);

        //...

        // calculate to_amount_value by oracle price
        let from_amount_usd = math::amount_to_usd(
            from_amount,
            f_token_config.liquidity_token_decimal,
            price_f_token_to_usd,
            price_f_decimal
        );
        let to_amount_value = math::usd_to_amount(
            from_amount_usd,
            t_token_config.liquidity_token_decimal,
            price_t_token_to_usd,
            price_t_decimal
        );
       
        //...
       
        let to_amount_after_fee = math::usd_to_amount(
            from_amount_usd - fee_amount_usd,
            t_token_config.liquidity_token_decimal,
            price_t_token_to_usd,
            price_t_decimal
        );

        assert!(to_amount_after_fee >= min_to_amount, error::reach_slippage_threshold());

        // deposit
        {
            let swap_fee_protocol_share_bp = {
                let token_pool = get_mut_token_pool(liquidity_pool, &f_token_type);
                token_pool.config.spot_config.swap_fee_protocol_share_bp
            };
            let mut from_balance = from_coin.into_balance();
            let protocol_fee_balance = from_balance.split(((fee_amount as u128)
                                        * (swap_fee_protocol_share_bp as u128)
                                            / 10000 as u64));
            let from_balance_value_after_fee = from_balance.value();
            admin::charge_fee(version, protocol_fee_balance);
            balance::join(dynamic_field::borrow_mut(&mut liquidity_pool.id, f_token_type), from_balance);
            let token_pool = get_mut_token_pool(liquidity_pool, &f_token_type);
            assert!(token_pool.state.liquidity_amount + from_balance_value_after_fee <= token_pool.config.spot_config.max_capacity, error::reach_max_capacity());
            token_pool.state.liquidity_amount = token_pool.state.liquidity_amount + from_balance_value_after_fee;
            update_tvl(version, liquidity_pool, f_token_type, oracle_from_token, clock);
        };

        // withdraw
        let to_balance = {
            let to_balance = balance::split(
                dynamic_field::borrow_mut<TypeName, Balance<T_TOKEN>>(&mut liquidity_pool.id, t_token_type),
                to_amount_after_fee
            );
            let withdraw_amount = balance::value(&to_balance);
            let token_pool = get_mut_token_pool(liquidity_pool, &t_token_type);
            token_pool.state.liquidity_amount = token_pool.state.liquidity_amount - withdraw_amount;
            assert!(token_pool.state.liquidity_amount >= token_pool.state.reserved_amount, error::liquidity_not_enough());
            update_tvl(version, liquidity_pool, t_token_type, oracle_to_token, clock);
            to_balance
        };

        emit(SwapEvent {
            sender: tx_context::sender(ctx),
            index,
            from_token_type: f_token_type,
            from_amount,
            to_token_type: t_token_type,
            min_to_amount,
            actual_to_amount: to_amount_after_fee,
            fee_amount,
            fee_amount_usd,
            oracle_price_from_token: price_f_token_to_usd,
            oracle_price_to_token: price_t_token_to_usd,
            u64_padding: vector::empty()
        });

        coin::from_balance(to_balance, ctx)
    }
攻击者调用 swap 方法兑换代币,由于当前池子的兑换算法并非使用经典的恒定乘积计算代币输出,而是调用 .get_price_with_interval_ms() 方法去取预言机价格,这个价格就是攻击者已经篡改过的价格。
Transaction 3: LP 池交换
- 输入:1 SUI(精度 9)
- 输出:60,000,000 XBTC(精度 8,价值约 0.6 BTC)
如此攻击者就用了少量的代币换取了高价值的代币,接下来只需要如法炮制掏空其它池子。
3. 持续攻击套利
从攻击者账号操作记录我们可以看到攻击者共发起了 10 次的 update_v2 攻击,并立即将攻击所得通过跨链桥转移走。
https://suivision.xyz/account/0xc99ac031ff19e9bff0b5b3f5b870c82402db99c30dfec2d406eb2088be6c2194?tab=Activity
4. MistTrack 分析
据链上反洗钱与追踪工具 MistTrack 分析,被盗资产总额约 344 万美元,包括 588,357.9 SUI、1,604,034.7 USDC、0.6 xBTC 和 32.227 suiETH。

SUI 链黑客地址 0xc99ac031ff19e9bff0b5b3f5b870c82402db99c30dfec2d406eb2088be6c2194 先将 suiETH、xBTC 以及大部分 SUI 通过 Cetus、Haedal Protocol、Turbos 等平台兑换为 USDC。

随后,约 3,430,717 USDC 在 14 笔交易中通过 Circle CCTP 跨链至以太坊黑客地址
0xeb8a15d28dd54231e7e950f5720bc3d7af77b443。

在以太坊上,这笔资金通过 Curve 兑换为 3,430,241.91 DAI,并转入新地址
0x4502cf2bc9c8743e63cbb9bbde0011989eed03c1,目前该地址上的 DAI 未转出。

追踪发现,以太坊黑客地址
0xeb8a15d28dd54231e7e950f5720bc3d7af77b443 的初始资金来自地址
0x7efcc6f928fb29fddc8dd5f769ff003da590e9eb——该地址此前在 BSC 上通过 Tornado Cash 提取 1 BNB,其中 0.146 BNB 被兑换为 0.041 ETH 并跨链至以太坊。

此外,该以太坊黑客地址还收到来自 SUI 黑客地址的少量资金:共 120.7242 SUI 经由 Mayan Finance 跨链后,转换为约 0.079 ETH 存入,接着该以太坊黑客地址 0xeb8a 将 0.11 ETH 转入地址 0x4502cf2bc9c8743e63cbb9bbde0011989eed03c1。
进一步分析显示,该地址 0x4502 同时还收到来自地址 0x04586599bbe44cb9f0d8faa96567670f93d873e3 转入的 0.1379 ETH,而这 0.1379 ETH 则来自 Mayan Finance 转入——往上追溯,资金来自另一个 SUI 地址 0x840ed9288595e684e42606073d7a7d5aae35ecf1571943d8bf2d67e283db8466。

该 SUI 地址 0x840ed9288595e684e42606073d7a7d5aae35ecf1571943d8bf2d67e283db8466 共收到 207.6 SUI(其中 41.68 SUI 来自 Bybit),SUI 都被兑换为 USDC 并跨链转出。

相关地址已加入 SlowMist AML 的恶意地址库,我们将持续监控相关资金的异动。
防护建议
这是一个典型的预言机价格操纵攻击,黑客利用了共享对象可以任意访问的特点,结合白名单验证漏洞,任意修改预言机价格,然后通过套利获取大量资金。
修复方法很简单,只需要增加一个 assert! 判断:

Sui Move 智能合约的权限控制的特点
与 Solidity 相比,Sui Move 的权限控制更“内置”和强制性:Solidity 依赖开发者手动实现 access control(如 Ownable 合约),而 Sui Move 通过语言级机制强制执行,减少人为错误。
在 Sui Move 中,一切数据都以“对象”(Object) 形式存在,每个对象都有唯一的 ID (Object ID),并绑定到一个所有者(Owner)。对象不能被复制,只能被“移动”(Move) 或销毁,这通过 Move 的线性类型系统强制执行。
所有权类型:地址所有(Address-Owned):对象属于特定地址,只有该地址的所有者才能修改或转移它。这是最常见的权限控制方式,类似于“私有财产”,防止他人未授权访问。共享所有(Shared):对象可以被任何人访问,但修改需要通过共识机制。这适合 DeFi 或游戏中的共享资产,但会引入轻微的性能开销。不可变(Immutable):对象一旦冻结,就无法修改,类似于“只读”权限,常用于 NFT 或稳定配置。包所有(Package-Owned):对象属于某个模块包,常用于模块内部状态。
这种模型天然防止双重花费和未授权修改,因为资源的所有权是排他的。转移所有权时,使用 transfer 函数明确移动权限。
为了直观说明,我们还是以本次漏洞分析中的 Typus 项目中的安全代码片段,展示正确使用能力控制管理员权限的方法:
typus_oracle/sources/oracle.move fun init(ctx: &mut TxContext) {        transfer::transfer(            ManagerCap {id: object::new(ctx)},            tx_context::sender(ctx)        );    }    //...    public fun update(        oracle: &mut Oracle,        managercap: &ManagerCap,        price: u64,        twap_price: u64,        clock: &Clock,        ctx: &mut TxContext    ) {        version_check(oracle);        update_(oracle, price, twap_price, clock, ctx);    }
在这个例子中,首先 init 初始化时将 ManagerCap 转移给 sender,也就是协议管理员,ManagerCap 作为能力对象,在 update 时需要传入,确保只有管理者能执行敏感操作。
结语
尽管 Sui Move 通过对象所有权模型和能力机制提供了强大的权限控制基础,但开发者仍需在关键函数中正确实现权限验证。这个案例提醒我们:再先进的语言特性也无法完全替代严谨的编码实践和全面的安全审计。
Prijavite se, če želite raziskati več vsebin
Raziščite najnovejše novice o kriptovalutah
⚡️ Sodelujte v najnovejših razpravah o kriptovalutah
💬 Sodelujte z najljubšimi ustvarjalci
👍 Uživajte v vsebini, ki vas zanima
E-naslov/telefonska številka

Najnovejše novice

--
Poglejte več
Zemljevid spletišča
Nastavitve piškotkov
Pogoji uporabe platforme