Back to Blog

Telcoin 安全事件事后分析与深度剖析

Code Auditing
January 10, 2024
7 min read

2023年12月25日,我们的监控系统检测到一系列针对Telcoin的恶意活动。我们协助Telcoin团队确定了根本原因,即钱包合约初始化不当,这是由钱包的实际实现与其相应的代理之间存在不一致引起的。本报告旨在提供全面的分析,以完全理解该事件。

0x0: 基本设计

在检查漏洞之前,首先了解涉及的智能合约之间的关系非常重要。本质上,这些可以抽象为三种设计模式的组合:CloneFactory、Cloneable Proxy和Beacon Proxy模式,如下图所示。

0x1: 漏洞分析

该漏洞源于钱包合约初始化不当,这是由于钱包的实际实现与其相应的代理之间存在不匹配。具体来说,在初始化过程中,代理通过写入存储位置的最低有效位,将存储槽0初始化为非零状态。随后,钱包代码也写入了存储槽0,从而覆盖了代理在最低有效位的初始值。这个问题并非源于任何一个智能合约本身固有的漏洞,而是两者之间交互的结果。

接下来,我们将根据下方提供的交易跟踪详细说明:

具体来说,在CloneableProxy:Proxy.initialize()函数中,有一个delegatecall调用了Wallet.initialize()函数。这个调用是通过对CloneableProxy:Implementation.initialize()函数的delegatecall实现的。因此,Wallet.initialize()函数对存储所做的任何修改都将反映在CloneableProxy:Proxy合约的存储中。

要完全理解其影响,有必要检查CloneableProxy:Proxy合约的存储布局。该合约的定义如下:

鉴于Proxy和ERC1967Upgrade合约都没有存储变量,槽0被两个存储变量——_initialized和_initializing——所利用,它们都继承自Initializable合约。

现在,让我们来检查Wallet合约。在Wallet.initialize()函数中,很明显槽0xaa用作初始化标志。这在第3-4行和11-12行的以下代码片段中得到了强调:

请注意,槽0分配给了_state,它存储了函数选择器后面的calldata的下一个32字节,如第21行所示。有关其他详细信息,请参阅Wallet合约开头的注释:

在使用槽0方面存在明显的差异:CloneableProxy:Proxy合约将其解释为初始化标志,而Wallet:initialize()函数将其视为钱包的状态。

因此,初始化过程完成后,槽0的最低两个字节将被重置为零。这有效地将_initialized和_initializing都设置为零。结果,CloneableProxy:Proxy合约很容易通过initialize()函数进行重新初始化,因为initializer修饰符的保护可以被规避。

显然,被利用的可能性取决于钱包的状态。一旦更新为非零值,钱包的状态将阻止该合约的任何进一步重新初始化。初始化后,随着钱包状态在每次交易时更新,槽0的最低两个字节非零的可能性会增加,这有效地使钱包免于被重新初始化。这解释了为什么大多数受影响的钱包交易历史很少或没有,从而使它们容易受到攻击。

0x2: 攻击分析

攻击者首先重新初始化了易受攻击的CloneableProxy:Proxy合约,以更改Beacon合约的地址。随后,攻击者继续转移CloneableProxy:Proxy合约中包含的资产,如下所述:

值得注意的是,在单笔交易中,多个易受攻击的合约被破坏,攻击者重复执行了此策略。

0x3: 攻击总结

我们观察到共计4,958次攻击,由六个不同的账户执行,如下所示:

0x4: 修复和建议

我们的调查显示,核心问题源于存储槽0的使用不一致,导致易受攻击的合约有可能被重新初始化。显然,修复涉及仔细管理存储分配。

从这次事件中,我们获得了几个关键见解:

  • 在使用内联汇编操纵存储槽时要格外小心,因为错误可能导致严重漏洞。

  • 密切监控合约状态。快速响应的能力取决于及时收到警报。

  • 在合约中实施暂停机制,以便在检测到妥协时能够立即暂停活动。

此外,该事件涉及针对不同钱包合约的多次攻击交易,这突显了对威胁监控和攻击阻止解决方案(如Phalcon)的迫切需求。此类工具对于减轻未来风险和防范潜在损失至关重要。

0x5: 事件时间线

12月25日,太平洋标准时间上午9:23:我们的系统在Polygon网络上检测到第一笔恶意交易

12月25日,太平洋标准时间上午10:28:Telcoin支持团队在内部沟通渠道中报告了该事件。

12月25日,太平洋标准时间上午10:32 — 上午10:37:Telcoin团队成员通知了Telcoin Discord社区,并与所有相关关键团队成员召开了紧急电话会议。

12月25日,太平洋标准时间上午10:45:实施了Web应用程序防火墙规则,以限制对Telcoin基础设施的所有访问。

12月25日,太平洋标准时间上午11:02:Telcoin团队启动了与Seal 911的会谈。

12月25日,太平洋标准时间上午11:11:Telcoin团队和其他安全成员设立了一个战时指挥中心,以发现问题的根本原因并讨论阻止攻击的潜在解决方案。

12月25日,太平洋标准时间下午1:14:Telcoin团队通过X(Twitter)向用户公开发布了警报

12月25日,太平洋标准时间下午3:39:Telcoin联系了Chainalysis和Slowmist,要求协助调查被盗资金,通过一项调查,他们标记了被盗钱包和地址,并将这些情报共享给了交易所。

12月25日,太平洋标准时间晚上10:35:应Telcoin团队的邀请,我们加入了战时指挥中心,并分享了我们的分析以确定根本原因。

12月25日,太平洋标准时间晚上11:00至12月26日,太平洋标准时间凌晨2:06:在确定了根本原因之后,Telcoin团队通过以安全可控的方式复制漏洞,成功制定了缓解策略。这个过程包括重新初始化钱包代理,以使其与新实现的、安全的Beacon对齐。鉴于此漏洞是千载难逢的机会,Telcoin可以先发制人地更新钱包配置,从而阻止攻击者进一步利用这些漏洞的能力。

12月26日,太平洋标准时间凌晨2:07至凌晨2:14:Telcoin团队将缓解过程应用于所有先前未受损的钱包,以确保全面覆盖。为了快速高效地部署,该过程在严格定义的时间窗口内分批执行。然后,Telcoin开始准备,然后在内部测试修复方案,以全面恢复所有受影响的钱包并永久修复所有钱包。

12月26日,太平洋标准时间下午4:52:Telcoin和我们的团队就以下主题开始了讨论:

  • 事件概述
  • 事件时间线:事件发展过程的按时间顺序记录。
  • 根本原因分析:对事件根本原因的深入分析。
  • 改进建议
  • 代码审计

12月29日,太平洋标准时间下午12:27:经过几轮讨论,我们开始与Telcoin团队合作起草事后报告并审计修复措施。

2024年1月3日:事后报告草稿已提交。

2024年1月4日:我们的审计结果,包括已识别的问题和建议,已提交。

2024年1月4日至1月10日:我们与Telcoin团队合作,最终确定事后报告并审查修复措施。

此外,值得注意的是,从12月25日至今,Telcoin一直与区块链调查公司和执法部门就该事件进行密切合作。

关于BlockSec

BlockSec是一家开创性的区块链安全公司,由一群全球知名的安全专家于2021年创立。该公司致力于提高新兴Web3世界的安全性和可用性,以促进其大规模采用。为此,BlockSec提供智能合约和EVM链安全审计服务,用于安全开发和主动阻止威胁的Phalcon平台,用于资金跟踪和调查的MetaSleuth平台,以及用于Web3构建者在加密世界高效冲浪的MetaDock扩展。

迄今为止,该公司已为MetaMask、Uniswap Foundation、Compound、Forta和PancakeSwap等300多家尊贵客户提供服务,并从Matrix Partners、Vitalbridge Capital和Fenbushi Capital等知名投资者那里获得了两轮融资,总计数千万美元。

网站:https://blocksec.com/

X(Twitter):@BlockSec @Phalcon

Sign up for the latest updates
~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly
Security Insights

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly

This BlockSec weekly security report covers eight attack incidents detected between April 20 and April 26, 2026, across Ethereum, Avalanche, Sui, Base, HyperLiquid, and MegaETH, with total estimated losses of approximately $7.04M. The highlighted incident is the $1.3M GiddyDefi exploit, where the attacker did not break any cryptography or use a flash loan but simply replayed an existing on-chain EIP-712 signature with the unsigned `aggregator` and `fromToken` fields swapped out for a malicious contract, demonstrating how partial signature coverage turns any historical signature into a generic permit. Other incidents include a $3.5M Volo Vault operator key compromise on Sui, a $1.5M Purrlend privileged-role takeover, a $413K SingularityFinance oracle misconfiguration, a $142.7K Scallop cross-pool index injection, a $72.35K Kipseli Router decimal mismatch, a $50.7K REVLoans (Juicebox) accounting pollution, and a $64K Custom Rebalancer arbitrary-call exploit.

The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis
Security Insights

The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis

This BlockSec deep-dive analyzes the KelpDAO $290M rsETH cross-chain bridge exploit (April 18, 2026), attributed to the Lazarus Group, tracing a causal chain across three layers: how a single-point DVN dependency enabled the attack, how DeFi composability cascaded the damage through Aave V3 lending markets to freeze WETH liquidity exceeding $6.7B across Ethereum, Arbitrum, Base, Mantle, and Linea, and how the crisis forced decentralized governance to exercise centralized emergency powers. The article examines three parameters that shaped the cascade's severity (LTV, pool depth, and cross-chain deployment count) and provides an exclusive technical breakdown of Arbitrum Security Council's forced state transition, an atomic contract upgrade that moved 30,766 ETH without the holder's signature.

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026

This BlockSec weekly security report covers four attack incidents detected between April 13 and April 19, 2026, across multiple chains such as Ethereum, Unichain, Arbitrum, and NEAR, with total estimated losses of approximately $310M. The highlighted incident is the $290M KelpDAO rsETH bridge exploit, where an attacker poisoned the RPC infrastructure of the sole LayerZero DVN to fabricate a cross-chain message, triggering a cascading WETH freeze across five chains and an Arbitrum Security Council forced state transition that raises questions about the actual trust boundaries of decentralized systems. Other incidents include a $242K MMR proof forgery on Hyperbridge, a $1.5M signed integer abuse on Dango, and an $18.4M circular swap path exploit on Rhea Finance's Burrowland protocol.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit