Back to Blog

Sicherheitsvorfall bei Seal Finance

Code Auditing
January 3, 2021
5 min read

Am 30. November entdeckte unser Sicherheitssystem zur Überwachung von Vorfällen ThunderForecast einen Angriff auf das Loopring-Protokoll (Blog in EN, CN) durch die Analyse von Transaktionsverläufen auf Ethereum. Als Schlussfolgerung lässt sich sagen, dass die Ursache dieses Angriffs der fehlende Zugriffsschutz für die Funktion sellTokenForLRC ist. Der Angreifer nutzte 80,97 ETH, was zum damaligen Preis 48.849,2 USD entsprach.

Am 11. Dezember 2020 meldete unser Überwachungssystem ThunderForecast eine Reihe von Transaktionen mit einer ungewöhnlichen Handelsrate. Anschließend nutzten wir das von unserem Forschungsteam entwickelte EthScope-System, um diese Transaktionen zu analysieren und stellten fest, dass es sich um einen Angriff handelte, der eine Schwachstelle des Seal Finance Protocol für Arbitrage-Zwecke ausnutzte.

Was ist Seal?

Im Whitepaper von Seal heißt es: "SEAL – Ein experimentelles Protokoll, das als Vermittler zwischen wichtigen DeFi-Protokoll-Tokens dient und dadurch eine tiefere Liquidität zwischen ihnen schafft." Bis heute gibt es über 10 Liquiditätspools, die Seal mit anderen bekannten Token verbinden (wie z. B. UNI, YFI, USDT, SNX usw.). Um den Bonus zu erhalten, muss der Investor LP-Tokens in den SEAL-Belohnungsvertrag einzahlen und die breed()-Funktion im Farm-Vertrag auslösen, um neue SEAL-Tokens zu erzeugen. Der Farm-Vertrag ist in jedem Seal-Pool bereitgestellt und die Funktion breed() im Vertrag wird verwendet, um neue Seal-Tokens auszugeben. Gemäß der Einstellung von breed() gibt sie zusätzlich 1,6 % des Seal-Tokens aus. Darüber hinaus werden 0,8 % der ausgegebenen Seal-Tokens gegen einen anderen Token getauscht, der mit den restlichen 0,8 % der ausgegebenen Seal-Tokens als Liquidität in den Pool eingezahlt wird. Da jedoch kein Zugriffsschutz für die breed()-Funktion vorgesehen ist, kann jeder diese Funktion auslösen, und dieses primitive Design wird zur Ursache des gemeldeten Angriffs.

Im Folgenden ist der bestätigte Quellcode der Funktion breed() aufgeführt:

function breed() external {
	require(now / 1 days > today);
	today += 1;
 
	uint256 sealPairAmount = seal.balanceOf(address(cSeal));
	uint256 tokenPairAmount = token.balanceOf(address(cSeal));
	uint256 newSeal = sealPairAmount.mul(spawnRate).div(1e18);
	uint256 amount = UniswapV2Library.getAmountOut(newSeal, sealPairAmount, tokenPairAmount);
 
	seal.mint(address(cSeal), newSeal);
	if(address(seal) < address(token))
    	cSeal.swap(0, amount, address(this), "");
	else
    	cSeal.swap(amount, 0, address(this), "");
	token.transfer(address(cSeal), amount);
	seal.mint(address(cSeal), newSeal);
	cSeal.mint(address(this));
}

Details

Wir beginnen nun damit, weitere Details dieses Angriffs aufzudecken, beginnend mit einer Angriffstransaktion hier. Bei dieser Transaktion wiederholte der Angreifer die Angrifflogik für 10 Seal-Pools, um seinen Gewinn zu maximieren. Für die folgende Analyse konzentrieren wir uns auf den Angriff im Seal-SNX-Pool.

An dem Angriff sind drei Schritte beteiligt:

  • Schritt 1: Tausch von 1.084 Seal gegen 2.787 SNX im Seal-SNX-Pool. Der Wechselkurs beträgt: 1 Seal = 2,57 SNX.
  • Schritt 2: Auslösen der breed()-Funktion im Farm-Vertrag. Diese Funktion gibt 13,08 Seal aus und tauscht sie gegen 10,20 SNX. Der Wechselkurs beträgt nun: 1 SNX = 0,78 Seal. Der Grund dafür ist, dass die meisten SNX im Pool gegen Seal getauscht werden und dies zu einer enormen Differenz zwischen SNX und Seal in Bezug auf die Menge führt. Dann, basierend auf dem Preisberechnungsalgorithmus von Uniswap, wird SNX im Pool extrem wertvoll (Preissteigerung um mehr als das 3-fache).
  • Schritt 3: Tausch von 2787 SNX gegen 1100 Seal im Seal-SNX-Pool. Da der Tausch den Preis von SNX weiter erhöht, arb-t der Angreifer mehr Seal-Tokens heraus (zusätzlich 16 Seal).

Um den Verlust weiter zu messen und zu bestätigen, haben wir die breed()-Funktion unter dem Blockzustand vor dem Angriff mit unserem System EthScope wiederholt. Als Ergebnis gab Farm 18 zusätzliche Seal-Tokens aus im Vergleich zu einem normalen Aufruf. Der Angreifer nahm 16 Seal und nur 2 Seal verblieben im Pool.

Gewinn & Verlust

Bei dieser Transaktion erzielte der Angreifer einen Gesamtgewinn von 175 Seal.

Das Ausmaß des Angriffs

Bis zum 13. Dezember 2020 wurden 3 bösartige Verträge (0x49f93e, 0x8b3710, 0x0f20b6) auf der Kette bereitgestellt und 22 Transaktionen erfolgreich ausgeführt, um 4.247 Seal-Tokens zu verpacken. Basierend auf dem damaligen Preis verdiente der Angreifer etwa 58.467 USD, indem er die Schwachstelle des Seal-Protokolls ausnutzte. Es ist erwähnenswert, dass die Schwachstelle des Seal-Protokolls immer noch angegriffen wird!!!

Darüber hinaus haben wir durch die Analyse des Flusses der erhaltenen Seal-Tokens festgestellt, dass etwa 900 Seal-Tokens in DEX eingezahlt und der Rest auf 6 verschiedene Adressen verteilt wurden. Wie in der folgenden Abbildung gezeigt, gehören diese Adressen neben Seal Finance und dem Liquiditätspool in Uniswap V2 zu den Top-Haltern von Seal-Tokens.

Das Ende

Mit der Entwicklung des DeFi-Ökosystems in Ethereum tauchen nach und nach verschiedene Sicherheitsprobleme auf. Tatsächlich verursacht die Ursache, die Zugriffskontrolle, hinter dem Angriff erhebliche Verluste (58.467 USD) bei Seal, indem bis zum 13. Dezember 2020 22 Transaktionen durchgeführt wurden.

Update (04.01.2021)

Nach dem ersten Angriff am 30.11.2020 hat der Angreifer einen dritten Angriffskontrakt bereitgestellt und fünf Angriffe gestartet. Der letzte Angriff fand am 24.12.2020 statt und die erhaltenen Seal-Tokens wurden an diese Adresse übertragen. Während dieses Prozesses erhielt der Angreifer 6.021 Seal-Tokens.

Zeitplan:

  • 11.12.2020: Verdächtige Transaktionen wurden gefunden
  • 12.12.2020: Analyse abgeschlossen
  • 13.12.2020: An Seal Finance gemeldet
  • 03.01.2021: Details wurden veröffentlicht
  • 03.01.2021: CVE-2021–3006 wurde zugewiesen

Über BlockSec

BlockSec ist ein führendes Blockchain-Sicherheitsunternehmen, das 2021 von einer Gruppe weltweit renommierter 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 fördern. Zu diesem Zweck bietet BlockSec Dienstleistungen für die Sicherheitsprüfung von Smart Contracts und EVM-Chains an, die Phalcon-Plattform für die proaktive Sicherheitsentwicklung und Bedrohungsabwehr, die MetaSleuth-Plattform für die Nachverfolgung von Geldern und Ermittlungen sowie die MetaSuites-Erweiterung für Web3-Entwickler, um effizient in der Krypto-Welt zu 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.

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