Back to Blog

Die CashioApp-Sicherheitsvorfall erneut betrachtet

Code Auditing
May 16, 2022
4 min read

Gestartet am 23. März 2022 um 16:20:08 UTC+8 wurde CashioApp ausgenutzt, um das Collateral-Token-Konto mit einem Verlust von etwa 52 Millionen zu leeren. Der Hack wurde durch eine unzureichende Überprüfung der Eingabekonten ermöglicht, die es dem Angreifer erlaubte, 20 Milliarden $CASH-Token ohne jegliche Einzahlung zu prägen. Im Folgenden zeigen wir die technischen Details.

Zusammenfassung

Der Vorfall wurde durch einen Fehler im Brrr-Programm verursacht, das für die Prägung und Verbrennung von $CASH-Token mit dem Collateral von Saber LP Arrows zuständig ist. Insbesondere können Benutzer $CASH prägen, indem sie Arrow LP-Token hinterlegen. Beachten Sie, dass Arrow LP-Token die Saber LP-Token als zugrunde liegende Token erhalten. Die print_cash-Anweisung, die $CASH prägen kann, empfängt eine Liste von Konten, darunter das Bank-Konto und das Collateral-Konto. Diese werden verwendet, um das Collateral (d.h. Arrow LP-Token) aufzuzeichnen und zu verfolgen, das für die Prägung von $CASH verwendet werden darf. Dieses beiden Konten sollten laut Design nur vom Administrator initialisiert und autorisiert werden. Das Programm versäumt es jedoch, die Gültigkeit des Bank-Kontos zu überprüfen. Infolgedessen konnte der Angreifer eine Reihe gefälschter Konten (einschließlich des Bank-Kontos) erstellen, um sie in die print_cash-Anweisung einzuspeisen und $CASH fast kostenlos zu prägen (die einzigen Kosten sind Transaktionsgebühren).

Details

Beginnen wir die Analyse mit den unten gezeigten verwendeten Konten der print_cash-Anweisung.

Das Attribut common (Zeile 75) ist eine Struktur vom Typ BrrrCommon im Programm. In BrrrCommon werden das bank-Konto und das collateral-Konto vom Administrator initialisiert und autorisiert. crate_token ist das Konto des $CASH-Tokens, das Informationen über $CASH speichert, wie die öffentliche Schlüsseladresse des crate_mint (Zeile 107), die öffentlichen Schlüsseladressen der Administratorrollen und mehr. crate_collateral_tokens ist ein Tresorkonto, das die von Benutzern übertragenen Collateral-Token hält. Da das Collateral Arrow LP-Token sein sollten, die LP-Token von Saber erhalten, müssen Benutzer die entsprechenden Konten von saber_swap eingeben. Die letzten beiden Attribute der Struktur BrrrCommon sind die Programm-IDs der in der Anweisung verwendeten Zielprogramme. Beachten Sie, dass die letzten vier Attribute der Struktur PrintCash das Systemkonto des Benutzers (auch der Unterzeichner der Transaktion), das Collateral-Konto des Benutzers, das $CASH-Token-Konto des Benutzers, das die geprägten $CASH-Token empfängt, und die öffentliche Schlüsseladresse des Kontos sind, das die Autorität zum Prägen von $CASH hat.

Die Angriffstransaktion

Nachdem wir die Funktionalität der oben genannten Konten verstanden haben, beginnen wir mit der Analyse der Angriffstransaktion: 0x4fgL…z2K5. Dieser Angriff wurde von der Angreiferadresse (0x6D7f) aus initiiert, und die Liste der Eingabekonten in der PrintCash-Anweisung ist unten gezeigt.

Das Konto #1 (0x5aha) oben entspricht dem Bank-Konto. Wir stellen fest, dass es sich von der auf der offiziellen Website von CashioApp (0xEm1P) angegebenen Adresse unterscheidet, was bedeutet, dass die Validierung des Bank-Kontos unzureichend ist!

Validierung

Werfen wir einen genaueren Blick auf die Validierung der Struktur BrrrCommon im Code, um herauszufinden, wie die Umgehung funktioniert.

Die einzige Überprüfung des Eingabe-Bank-Kontos besteht darin, sicherzustellen, dass das eingegebene Collateral-Konto mit dem Bank-Konto verknüpft ist (Zeile 12). Dies kann jedoch leicht durch die Angabe eines gefälschten Collateral-Kontos umgangen werden. Darüber hinaus hat der Angreifer, um die Zahlung von echten Collateral-Assets zu vermeiden, auch gefälschte saber_swap-Konten angegeben. Beachten Sie, dass der Angreifer unbezahlbare Collateral-Assets hinterlegen möchte, um wertvolle $CASH-Token zu prägen. Daher sollten das vom Angreifer bereitgestellte crate_token und crate_mint echte Adressen sein. Mit anderen Worten, die unzureichende Überprüfung des Bank-Kontos ermöglicht es dem Angreifer, eine Reihe gefälschter Konten zu erstellen, um $CASH mit unbezahlbarem Collateral zu prägen.

Die Korrektur

Die Korrektur besteht darin, die Anweisung assert_keys_eq!(self.bank.crate_mint, self.crate_mint) hinzuzufügen. Diese Anweisung stellt sicher, dass der crate_mint des Bank-Kontos der korrekte crate_mint für $CASH ist. Aber wie stellt sie sicher, dass das Bank-Konto gültig ist? Sehen wir uns die Struktur NewBank (im Programm bankman) und die Struktur NewCrate (im Programm crate_token) an, um die Antwort zu finden.

Tatsächlich ist das Bank-Konto ein PDA, dessen Seeds die Adresse des crate_token enthalten. Währenddessen ist das crate_token ebenfalls ein PDA, dessen Seeds die Adresse des crate_mint enthalten. Dies stellt sicher, dass das Bank-Konto gültig ist, wenn das eingegebene crate_mint gültig ist. Ohne ein korrektes crate_mint können Angreifer $CASH nicht prägen und keine Angriffe starten.

Über BlockSec

BlockSec ist ein wegweisendes Unternehmen für Blockchain-Sicherheit, das 2021 von einer Gruppe weltweit anerkannter Sicherheitsexperten gegründet wurde. Das Unternehmen engagiert sich für die Verbesserung der Sicherheit und Benutzerfreundlichkeit der aufkommenden Web3-Welt, um deren Massenadoption zu erleichtern. Zu diesem Zweck bietet BlockSec Dienstleistungen für die Prüfung von Smart Contracts und EVM-Ketten an Sicherheitsaudits, die Phalcon-Plattform für die Entwicklung von Sicherheit und die proaktive Blockierung von Bedrohungen, die MetaSleuth-Plattform für die Verfolgung und Untersuchung von Geldern sowie die MetaSuites-Erweiterung für Web3-Entwickler, die effizient in der Krypto-Welt surfen.

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

Offizielle Website: https://blocksec.com/

Offizieller Twitter-Account: https://twitter.com/BlockSecTeam

Sign up for the latest updates
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.

Weekly Web3 Security Incident Roundup | Apr 6 – Apr 12, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 6 – Apr 12, 2026

This BlockSec weekly security report covers four DeFi attack incidents detected between April 6 and April 12, 2026, across Linea, BNB Chain, Arbitrum, Optimism, Avalanche, and Base, with total estimated losses of approximately $928.6K. Notable incidents include a $517K approval-related exploit where a user mistakenly approved a permissionless SquidMulticall contract enabling arbitrary external calls, a $193K business logic flaw in the HB token's reward-settlement logic that allowed direct AMM reserve manipulation, a $165.6K exploit in Denaria's perpetual DEX caused by a rounding asymmetry compounded with an unsafe cast, and a $53K access control issue in XBITVault caused by an initialization-dependent check that failed open. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident.

Best Security Auditor for Web3

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

BlockSec Audit