#1 Cetus-Vorfall: Ein unkontrollierter Schichtwechsel kostet 223 Mio. $ im größten DeFi-Hack 2025

#1 Cetus-Vorfall: Ein unkontrollierter Schichtwechsel kostet 223 Mio. $ im größten DeFi-Hack 2025

Am 22. Mai 2025 erlitt Cetus Protocol, die größte konzentrierte Liquiditäts-DEX auf Sui, einen großen Exploit, der die Liquidität über mehrere Pools hinweg abzog [1], was zu geschätzten Verlusten von rund 223 Millionen US-Dollar führte.

Der Exploit beruhte auf einem Fehler in einer benutzerdefinierten Funktion zur Verhinderung von Überläufen (d. h. **checked_shlw()**) [2]. Aufgrund einer falschen Konstante und eines falschen Vergleichs konnte die Funktion unsichere Bedingungen nicht erkennen, bevor sie einen Links-Shift durchführte, der in der Festkomma-Arithmetik von u256 verwendet wird. Dies ermöglichte eine stille Abschneidung der höchstwertigen Bits während wichtiger Delta-Berechnungen (z. B. der Logik, die berechnet, wie viel Token-Input für eine bestimmte Liquidität erforderlich ist). Durch sorgfältige Auswahl der Parameter (Liquiditätsgröße und Tick-/Preisbereichseinstellungen) konnte der Angreifer das Protokoll dazu bringen, die erforderliche Einzahlung als im Wesentlichen 1 Einheit Token zu berechnen, während die Position dennoch mit einer enormen Menge an Liquidität gutgeschrieben wurde. Mit dieser aufgeblähten, auf der Kette erfassten Position zog der Angreifer dann Liquidität ab und hob echte Reserven ab, wodurch die Pools geleert wurden.

Hintergrund

Cetus verwendet ein Concentrated Liquidity Market Maker (CLMM)-Design, bei dem Liquiditätsanbieter (LPs) Liquidität nur innerhalb eines gewählten Preisbereichs (ein Tick-Intervall) bereitstellen. Anstatt Gelder gleichmäßig über alle Preise zu verteilen, konzentrieren LPs ihr Kapital zwischen einer unteren und einer oberen Grenze. Dies verbessert die Kapitaleffizienz, macht das Protokoll jedoch stark von präziser Festkomma-Arithmetik abhängig, wenn zwischen Folgendem umgerechnet wird:

  • dem Liquiditätsbetrag, der einer Position gutgeschrieben wird, und
  • den tatsächlichen Token-Beträgen, die eingezahlt (oder abgehoben) werden müssen.

Im Allgemeinen berechnet das Protokoll bei der Hinzufügung von Liquidität durch einen Benutzer die Token-Deltas (wie viele zugrunde liegende Token erforderlich sind) basierend auf dem aktuellen Preis und dem gewählten Bereich. Wenn ein Benutzer Liquidität abzieht, führt das Protokoll die umgekehrte Berechnung durch, um festzustellen, wie viel die Position abheben darf.

Wenn die Berechnung „Wie viel Sie einzahlen müssen“ zu klein gemacht werden kann, während der Position weiterhin große Liquidität gutgeschrieben wird, kann der Angreifer diese gutgeschriebene Liquidität später abziehen und echte Reserven aus dem Pool abheben.

Schwachstellenanalyse

Die Grundursache war ein Fehler in einer Hilfsfunktion, die dazu diente, einen Links-Shift, der in der Festkomma-u256-Arithmetik verwendet wird, sicher durchzuführen (typischerweise << 64, um einen Skalierungsfaktor von 2^64 anzuwenden). In Move-basierten Systemen werden Überlaufprüfungen nicht für alle Operationen einheitlich durchgesetzt, und Bit-Shifting ist ein Bereich, in dem Entwickler oft manuelle Schutzmaßnahmen hinzufügen.

Cetus implementierte eine Hilfsfunktion zur Verhinderung von Überläufen (d. h. checked_shlw()), um zu bestimmen, ob das Verschieben eines u256-Werts um 64 Bits nach links die 256-Bit-Grenze überschreiten würde. Aufgrund einer falschen Konstante und eines falschen Vergleichs konnte die Prüfung jedoch für bestimmte große Eingaben umgangen werden, die hätten abgelehnt werden müssen.

Konkret wird get_delta_a verwendet, um die Menge der zugrunde liegenden Token (Token A) zu berechnen, die für eine gegebene Liquidität zwischen zwei Preisen (sqrt_price_0 und sqrt_price_1) erforderlich sind. Innerhalb von get_delta_a wird checked_shlw() aufgerufen, um sicherzustellen, dass der Zähler, der bei der Token-A-Berechnung verwendet wird, beim Verschieben nicht überläuft.

Die Überlaufprüfung in checked_shlw() ist jedoch falsch. Sie verwendet eine Maske von 0xffffffffffffffff << 192 (d. h. 2^256 - 2^192), die weit größer ist als der korrekte Schwellenwert. Infolgedessen kann ein Eingabewert, der größer als **2^192** aber kleiner als diese Maske ist, die Prüfung bestehen, obwohl das Verschieben nach links den u256-Bereich überschreiten würde. Das verschobene Ergebnis wird dann abgeschnitten, was einen falschen (kleineren) Wert ergibt.

Die folgende Abbildung vergleicht die anfällige Implementierung und die gepatchte Version. Die korrekte Grenze sollte 1 << 192 sein, nicht 0xffffffffffffffff << 192. Der Angreifer nutzte diese fehlerhafte Prüfung, um eine ungewöhnlich große Menge an LP-Token zu prägen, während er nur 1 Wei Token A einzahlte.

Angriffsanalyse

Während der Angreifer dieselbe Technik über mehrere Pools hinweg anwandte, war der zugrunde liegende Ablauf konsistent. Anhand dieses Transaktionsbeispiels http://suiscan.xyz/mainnet/tx/DVMG3B2kocLEnVMDuQzTYRgjwuuFSfciawPvXXheB3x verlief der Angriff wie folgt:

1) Manipulation des Poolpreises

Der Angreifer nutzte einen Flashloan, um schnell 10.024.321,28 haSUI zu erwerben, und tauschte dann 5.765.124,79 SUI aus, wodurch der Poolpreis von 18.956.530.795.606.879.104 auf 18.425.720.184.762.886 gesenkt wurde. Diese Preisbewegung ermöglichte es dem Angreifer, eine CLMM-Position zu eröffnen, die nur eine minimale Menge eines Tokens erforderte, und nutzte das „Single-Sided / Nearly Single-Token“-Liquiditätsverhalten in konzentrierten Liquiditätsdesigns.

2) Hinzufügen von Liquidität mit einer „fast kostenlosen“ Einzahlung

Als Nächstes wählte der Angreifer einen sehr engen Tick-Bereich (z. B. 300000–300200) und stimmte die Ziel-Liquidität sorgfältig ab. In CLMM-Systemen hängen die Token-Delta-Berechnungen von den Quadratwurzelpreisen an den Bereichsgrenzen ab, und enge Bereiche können bestimmte Zwischenwerte extrem empfindlich machen.

Durch die Abstimmung dieser Parameter verursachte der Angreifer eine interne Multiplikation, die einen u256-Zwischenwert ergab, der beim Links-Shift überlaufen hätte müssen, aber die fehlerhafte Checked-Shift-Schutzvorrichtung dennoch bestand. Infolgedessen berechnete das Protokoll nach dem durch den unsicheren Shift verursachten Abschneiden den erforderlichen Token-A-Betrag effektiv als 1 Einheit, während die Position dennoch mit massiver Liquidität (d. h. 10.365.647.984.364.446.732.462.244.378.333.008**)** geprägt/erfasst wurde.

3) Abziehen von Liquidität zur Entnahme echter Reserven

Mit einer On-Chain-Position, die scheinbar über aufgeblähte Liquidität verfügte, zog der Angreifer Liquidität ab und hob Vermögenswerte ab, als ob die Position ordnungsgemäß finanziert worden wäre. In diesem Schritt wurden die echten Reserven des Pools abgezogen.

4) Wiederholung in mehreren Pools

Nachdem der Exploit-Mechanismus validiert worden war, replizierte der Angreifer denselben Arbeitsablauf in mehreren Pools und steigerte so schnell die Gesamtverluste.

Zusammenfassung

Die Grundursache war eine fehlerhafte Überlaufprüfung um einen u256-Links-Shift im Festkomma-Rechenpfad, die es einem überlaufenden Shift ermöglichte, hohe Bits stillschweigend abzuschneiden, wodurch die erforderliche Einzahlung nahe Null erschien, während einer LP-Position dennoch massive Liquidität gutgeschrieben wurde, was die Entnahme von Reserven ermöglichte.

Lehren

  • Seien Sie äußerst streng bei Shifts, Skalierungsfaktoren, Rundungen und Randbedingungen in der Festkomma-Arithmetik.
  • Bevorzugen Sie bewährte sichere Mathematik-Primitive (oder formalisierte Invarianten) gegenüber Ad-hoc-Hilfsmitteln; validieren Sie Konstanten/Schwellenwerte sorgfältig.
  • Fügen Sie Testfälle für Grenzfälle und Eigenschaftsbasiertes Testen für Maximalwerte, Grenz-Ticks und gegnerische Parameterkombinationen hinzu.

Referenz

  1. Offizielle Ankündigung von Cetus Protocol

  2. Unsere kurze Analyse


Über BlockSec

BlockSec ist ein Full-Stack-Anbieter für Blockchain-Sicherheit und Krypto-Compliance. Wir entwickeln Produkte und Dienstleistungen, die Kunden bei der Code-Prüfung (einschließlich Smart Contracts, Blockchain und Wallets), der Echtzeit-Abwehr von Angriffen, der Analyse von Vorfällen, der Verfolgung illegaler Gelder und der Erfüllung von AML/CFT-Verpflichtungen während des gesamten Lebenszyklus von Protokollen und Plattformen unterstützen.

BlockSec hat mehrere Arbeiten zur Blockchain-Sicherheit auf renommierten Konferenzen veröffentlicht, mehrere Zero-Day-Angriffe auf DeFi-Anwendungen gemeldet, mehrere Hacks blockiert, um mehr als 20 Millionen Dollar zu retten, und Kryptowährungen im Wert von mehreren Milliarden Dollar gesichert.

Sign up for the latest updates
#1 Cetus Incident: One Unchecked Shift Drains $223M in the Largest DeFi Hack of 2025

#1 Cetus Incident: One Unchecked Shift Drains $223M in the Largest DeFi Hack of 2025

Cetus Protocol, the largest concentrated-liquidity DEX on Sui, was exploited on May 22, 2025, resulting in an estimated ~$223M loss across multiple liquidity pools. The attacker leveraged a flaw in checked_shlw(), a custom overflow-prevention helper used in fixed-point u256 math, where an incorrect constant and comparison failed to block unsafe left shifts and caused silent truncation of high bits during liquidity delta calculations. By crafting specific liquidity and tick/price-range parameters, the exploit made required deposits appear near-zero while minting an oversized liquidity position, which was later withdrawn to drain real pool reserves.

#2 Bybit Incident: A Web2 Breach Enables the Largest Crypto Hack in History

#2 Bybit Incident: A Web2 Breach Enables the Largest Crypto Hack in History

The largest crypto hack ever, the February 21, 2025 Bybit breach stole about $1.5B after attackers used social engineering to compromise a Safe{Wallet} workflow, injected malicious JavaScript into an AWS S3 bucket, tampered with the transaction signing process, and upgraded Bybit’s Safe{Wallet} contract to a malicious implementation that drained funds across multiple chains.

Weekly Web3 Security Incident Roundup | Jan 25 – Feb 1, 2026

Weekly Web3 Security Incident Roundup | Jan 25 – Feb 1, 2026

During the week of January 25 to February 1, 2026, six blockchain security incidents were reported with total losses of ~$18.05M. These involved improper input validation, token design flaws, key compromises, and business logic errors across DeFi protocols on multiple chains. The primary causes included unchecked user inputs enabling arbitrary calls, flawed burn mechanisms allowing price manipulation, compromised developer tools, and missing solvency checks in lending functions.