Back to Blog

Telcoin Sicherheitsvorfall Post-Mortem und Tiefenanalyse

Code Auditing
January 10, 2024
7 min read
  1. Dezember 2023, unser Überwachungssystem hat eine Reihe von bösartigen Aktivitäten entdeckt, die auf Telcoin abzielten. Wir haben das Telcoin-Team bei der Identifizierung der Grundursache unterstützt, die in der unsachgemäßen Initialisierung von Wallet-Verträgen lag und aus Inkonsistenzen zwischen der tatsächlichen Implementierung der Wallet und ihrem entsprechenden Proxy resultierte. Dieser Bericht zielt darauf ab, eine gründliche Analyse zu liefern, um den Vorfall vollständig zu verstehen.

0x0: Grundlegendes Design

Bevor die Schwachstelle untersucht wird, ist es wichtig, zunächst die Beziehungen zwischen den beteiligten Smart Contracts zu verstehen. Im Wesentlichen können diese in einer Kombination aus drei Designmustern abstrahiert werden: CloneFactory, Cloneable Proxy und Beacon Proxy, die im folgenden Diagramm dargestellt sind.

0x1: Schwachstellenanalyse

Die Schwachstelle beruht auf der unsachgemäßen Initialisierung von Wallet-Verträgen, die auf eine Diskrepanz zwischen der tatsächlichen Implementierung der Wallet und ihrem entsprechenden Proxy zurückzuführen ist. Insbesondere während des Initialisierungsprozesses hat der Proxy den Speicherplatz 0 in einen Nicht-Null-Zustand initialisiert, indem er in die niederwertigsten Bits des Speicherorts geschrieben hat. Anschließend hat der Wallet-Code ebenfalls in Speicherplatz 0 geschrieben und dabei den Anfangswert des Proxys in den niederwertigsten Bits überschrieben. Dieses Problem ist nicht das Ergebnis einer inhärenten Schwachstelle in einem der Smart Contracts, sondern vielmehr der Wechselwirkung zwischen beiden.

Im Folgenden werden wir die Details anhand der unten stehenden Transaktionsverfolgung erläutern:

Insbesondere in der Funktion CloneableProxy:Proxy.initialize() gibt es einen delegatecall, der die Funktion Wallet.initialize() aufruft. Dieser Aufruf erfolgt über einen delegatecall an die Funktion CloneableProxy:Implementation.initialize(). Infolgedessen werden alle durch die Funktion Wallet.initialize() im Speicher vorgenommenen Änderungen im Speicher des CloneableProxy:Proxy-Vertrags widergespiegelt.

Um die Auswirkungen vollständig zu verstehen, ist es notwendig, das Speicherlayout des CloneableProxy:Proxy-Vertrags zu untersuchen. Die Definition dieses Vertrags ist wie folgt umrissen:

Da weder der Proxy noch die ERC1967Upgrade-Verträge Speicher Variablen haben, wird Speicherplatz 0 stattdessen von zwei Speicher Variablen – _initialized und _initializing – genutzt, die beide vom Initializable-Vertrag geerbt wurden.

Betrachten wir nun den Wallet-Vertrag. Innerhalb der Funktion Wallet.initialize() ist ersichtlich, dass Speicherplatz 0xaa als Initialisierungsflag dient. Dies wird durch den folgenden Codeausschnitt in den Zeilen 3-4 und 11-12 unterstrichen:

Beachten Sie, dass Speicherplatz 0 für _state zugewiesen ist, der die nächsten 32 Bytes ab dem Funktionsselektor aus den calldata speichert, wie in Zeile 21 angegeben. Weitere detaillierte Informationen finden Sie im Kommentar am Anfang des Wallet-Vertrags:

Es gibt eine erkennbare Diskrepanz bei der Nutzung von Speicherplatz 0: Der CloneableProxy:Proxy-Vertrag interpretiert ihn als Initialisierungsflag, während die Funktion Wallet:initialize() ihn als Zustand der Wallet behandelt.

Infolgedessen werden nach dem Initialisierungsprozess die zwei niederwertigsten Bytes von Speicherplatz 0 auf Null zurückgesetzt. Dies setzt sowohl _initialized als auch _initializing effektiv auf Null. Infolgedessen wird der CloneableProxy:Proxy-Vertrag anfällig für eine Reinitialisierung über die initialize()-Funktion, da der Schutz des initializer-Modifikators umgangen werden kann.

Offensichtlich hängt das Ausnutzungspotenzial vom Zustand der Wallet ab. Sobald dieser auf einen Nicht-Null-Wert aktualisiert ist, verhindert der Zustand der Wallet jede weitere Reinitialisierung dieses Vertrags. Nach der Initialisierung steigt die Wahrscheinlichkeit, dass die zwei niederwertigsten Bytes von Speicherplatz 0 nicht null sind, da der Wallet-Zustand mit jeder Transaktion aktualisiert wird, was die Wallet effektiv immun gegen eine Reinitialisierung macht. Dies erklärt, warum die Mehrheit der anfälligen Wallets wenig oder keine Transaktionshistorie hatte und somit dem Angriff ausgesetzt war.

0x2: Angriffsanalyse

Der Angreifer begann mit der Reinitialisierung des anfälligen CloneableProxy:Proxy-Vertrags, um die Adresse des Beacon-Vertrags zu ändern. Anschließend fuhr der Angreifer damit fort, die im CloneableProxy:Proxy-Vertrag enthaltenen Vermögenswerte zu übertragen, wie unten detailliert beschrieben:

Es ist bemerkenswert, dass mehrere anfällige Verträge in einer einzigen Transaktion kompromittiert wurden, wobei der Angreifer diese Strategie wiederholt ausführte.

0x3: Zusammenfassung der Angriffe

Wir haben insgesamt 4.958 Angriffe beobachtet, die von sechs verschiedenen Konten ausgeführt wurden, wie folgt:

0x4: Fehlerbehebung und Empfehlungen

Unsere Untersuchung hat ergeben, dass das Kernproblem in der inkonsistenten Nutzung des Speicherplatzes 0 liegt, was die Möglichkeit der Reinitialisierung anfälliger Verträge zur Folge hat. Offensichtlich beinhaltet die Fehlerbehebung ein sorgfältiges Management von Speicherzuweisungen.

Aus diesem Vorfall haben wir mehrere wichtige Erkenntnisse gewonnen:

  • Seien Sie äußerst vorsichtig beim Manipulieren von Speicherplätzen mit Inline-Assembly, da Fehler zu erheblichen Schwachstellen führen können.

  • Überwachen Sie den Status von Verträgen sorgfältig. Die Fähigkeit, schnell zu reagieren, hängt von rechtzeitigen Warnmeldungen ab.

  • Implementieren Sie einen Pausierungsmechanismus in Verträgen, um die sofortige Aussetzung von Aktivitäten zu ermöglichen, wenn ein Kompromittierung festgestellt wird.

Darüber hinaus unterstreicht die Tatsache, dass dieser Vorfall mehrere Angriffstransaktionen gegen verschiedene Wallet-Verträge umfasste, die dringende Notwendigkeit von Bedrohungsüberwachungs- und Angriffsschutzlösungen wie Phalcon. Solche Werkzeuge sind unerlässlich, um zukünftige Risiken zu mindern und vor potenziellen Verlusten zu schützen.

0x5: Zeitplan der Ereignisse

09:23 Uhr PST, 25. Dezember: Unser System hat die erste bösartige Transaktion im Polygon-Netzwerk erkannt:

10:28 Uhr PST, 25. Dezember: Das Telcoin-Support-Team berichtete den Vorfall im internen Kommunikationskanal.

10:32 - 10:37 Uhr PST, 25. Dezember: Telcoin-Teammitglieder benachrichtigten die Telcoin Discord-Community und erstellten einen Notfallanruf mit allen relevanten Schlüsselteammitgliedern.

10:45 Uhr PST, 25. Dezember: Eine Web Application Firewall-Regel wurde implementiert, um allen Zugriff auf die Telcoin-Infrastruktur zu beschränken.

11:02 Uhr PST, 25. Dezember: Das Telcoin-Team nahm Gespräche mit Seal 911 auf.

11:11 Uhr PST, 25. Dezember: Ein Kriegsraum wurde vom Telcoin-Team und anderen Sicherheitsexperten eingerichtet, um die Grundursache zu ermitteln und mögliche Lösungen zur Abwehr des Angriffs zu diskutieren.

13:14 Uhr PST, 25. Dezember: Das Telcoin-Team gab über X (Twitter) eine öffentliche Warnung an die Nutzer heraus:

15:39 Uhr PST, 25. Dezember: Telcoin kontaktierte Chainalysis & Slowmist, um bei der Untersuchung der gestohlenen Gelder zu helfen, indem sie eine Untersuchung durchführten, bei der die gestohlenen Wallets und Adressen gekennzeichnet und diese Informationen an Börsen weitergegeben wurden.

22:35 Uhr PST, 25. Dezember: Auf Einladung des Telcoin-Teams schlossen wir uns dem Kriegsraum an und teilten unsere Analyse mit, um die Grundursache zu ermitteln.

23:00 Uhr PST, 25. Dezember bis 02:06 Uhr PST, 26. Dezember: Nach Identifizierung der Grundursache entwickelte das Telcoin-Team erfolgreich eine Minderungsstrategie, indem es den Exploit auf sichere und kontrollierte Weise replizierte. Dieser Prozess beinhaltete die Reinitialisierung der Wallet-Proxys, um sie an einen neuen, sicher implementierten Beacon anzupassen. Da dieser Exploit eine einmalige Gelegenheit war, kann Telcoin die Wallet-Konfigurationen proaktiv aktualisieren und somit die Fähigkeit des Angreifers, diese Schwachstellen weiter auszunutzen, einschränken.

02:07 Uhr PST, 26. Dezember bis 02:14 Uhr PST, 26. Dezember: Das Telcoin-Team implementierte den Minderungs-Prozess über alle nicht zuvor kompromittierten Wallets, um eine umfassende Abdeckung zu gewährleisten. Für eine schnelle und effiziente Bereitstellung wurde der Prozess in Batches innerhalb eines streng definierten Zeitfensters durchgeführt. Telcoin begann dann mit der Vorbereitung und internen Prüfung des Behebungsplans für eine vollständige Wiederherstellung aller betroffenen Wallets und eine dauerhafte Behebung für alle Wallets.

16:52 Uhr PST, 26. Dezember: Telcoin und unser Team nahmen Diskussionen zu folgenden Themen auf:

  • Übersicht über den Vorfall
  • Zeitplan der Ereignisse: Chronologische Darstellung der Entwicklung des Vorfalls.
  • Analyse der Grundursache: Eine detaillierte Analyse der zugrunde liegenden Ursachen des Vorfalls.
  • Empfehlungen zur Verbesserung
  • Code-Audit

12:27 Uhr PST, 29. Dezember: Nach mehreren Diskussionsrunden begannen wir mit dem Telcoin-Team an der Erstellung des Post-Mortem-Berichts und der Prüfung der Behebungsmaßnahmen.

  1. Januar 2024: Der Entwurf des Post-Mortem wurde vorgelegt.

  2. Januar 2024: Unsere Prüfungsergebnisse, einschließlich der identifizierten Probleme und Empfehlungen, wurden präsentiert.

  3. bis 10. Januar 2024: Wir arbeiteten mit dem Telcoin-Team zusammen, um das Post-Mortem abzuschließen und die Korrekturen zu überprüfen.

Es ist auch erwähnenswert, dass Telcoin vom 25. Dezember bis zum heutigen Datum aktiv und in enger Zusammenarbeit mit Blockchain-Ermittlungsfirmen und Strafverfolgungsbehörden in Bezug auf den Vorfall tätig war.

Über BlockSec

BlockSec ist ein wegweisendes Unternehmen für Blockchain-Sicherheit, das 2021 von einer Gruppe weltweit anerkannter Sicherheitsexperten gegründet wurde. Das Unternehmen hat sich der Verbesserung der Sicherheit und Benutzerfreundlichkeit für die aufstrebende Web3-Welt verschrieben, um deren Massenadoption zu ermöglichen. Zu diesem Zweck bietet BlockSec Dienstleistungen für die Sicherheitsprüfung von Smart Contracts und EVM-Ketten, die Phalcon-Plattform für die Sicherheitsentwicklung und proaktive Bedrohungserkennung, die MetaSleuth-Plattform für die Nachverfolgung und Untersuchung von Geldern sowie die MetaDock-Erweiterung für Web3-Entwickler, die effizient im Krypto-Bereich surfen.

Bis heute hat das Unternehmen über 300 angesehene Kunden wie MetaMask, Uniswap Foundation, Compound, Forta und PancakeSwap betreut und in zwei Finanzierungsrunden von namhaften Investoren wie Matrix Partners, Vitalbridge Capital und Fenbushi Capital zweistellige Millionenbeträge erhalten.

Website: https://blocksec.com/

X (Twitter): @BlockSec @Phalcon

Sign up for the latest updates
~$4.72M Lost: TAC, Transit Finance & More | BlockSec Weekly
Security Insights

~$4.72M Lost: TAC, Transit Finance & More | BlockSec Weekly

This BlockSec weekly security report covers 3 notable attack incidents identified between May 11 and May 17, 2026, across TRON, TON, and Ethereum, with total estimated losses of approximately $4.72M. Three incidents are analyzed in detail: the highlighted $1.88M Transit Finance exploit on TRON, where a deprecated swap bridge contract with lingering token approvals was exploited through arbitrary calldata forwarding; the $2.8M TAC TON-to-EVM bridge exploit caused by missing canonical wallet verification in the jetton deposit flow; and the $46.75K Boost Hook exploit on Ethereum, where spot price manipulation on a Uniswap V4 hook-based perpetual protocol forced the protocol to buy tokens at inflated prices using its own reserves.

~$15.9M Lost: Trusted Volumes, Wasabi & More | BlockSec Weekly
Security Insights

~$15.9M Lost: Trusted Volumes, Wasabi & More | BlockSec Weekly

This BlockSec bi-weekly security report covers 11 notable attack incidents identified between April 27 and May 10, 2026, across Sui, Ethereum, BNB Chain, Base, Blast, and Berachain, with total estimated losses of approximately $15.9M. Three incidents are analyzed in detail: the highlighted $1.14M Aftermath Finance exploit on Sui, where a signed/unsigned semantic mismatch in the builder-fee validation allowed an attacker to inject a negative fee that was converted into positive collateral during settlement; the $5.87M Trusted Volumes RFQ authorization mismatch on Ethereum; and the $5.7M Wasabi Protocol infrastructure-to-contract-control compromise across multiple EVM chains.

Newsletter - April 2026
Security Insights

Newsletter - April 2026

In April 2026, the DeFi ecosystem experienced three major security incidents. KelpDAO lost ~$290M due to an insecure 1-of-1 DVN bridge configuration exploited via RPC infrastructure compromise, Drift Protocol suffered ~$285M from a multisig governance takeover leveraging Solana's durable nonce mechanism, and Rhea Finance incurred ~$18.4M following a business logic flaw in its margin-trading module that allowed circular swap path manipulatio

Best Security Auditor for Web3

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

BlockSec Audit