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
~$15.9M Lost: Trusted Volumes & More | BlockSec Weekly
Security Insights

~$15.9M Lost: Trusted Volumes & 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

~$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.

Best Security Auditor for Web3

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

BlockSec Audit