Back to Blog

Sicherheitsvorfall bei Seal Finance

Code Auditing
January 3, 2021

Am 30. November entdeckte unser Sicherheitssystem zur Überwachung von Vorfällen ThunderForecast einen Angriff auf das Loopring-Protokoll (Blog in EN, CN), indem es Transaktionshistorien auf Ethereum scannte. Als Fazit ist die Hauptursache dieses Angriffs der fehlende Zugriffsschutz für die Funktion sellTokenForLRC. Der Angreifer nutzte 80,97 ETH aus, was zu dem damaligen Preis 48.849,2 USD entsprach.

Am 11. Dezember 2020 meldete unser Überwachungssystem ThunderForecast eine Reihe von Transaktionen mit einer abnormalen Handelsrate. Anschließend nutzten wir das von unserem Forschungsteam entwickelte System EthScope, um diese Transaktionen zu analysieren und entdeckten, dass es sich um einen Angriff handelte, der eine Schwachstelle des Seal Finance Protocols zum Zwecke der Arbitrage ausnutzte.

Was ist Seal?

Im Whitepaper von Seal wird erwähnt: "SEAL – Ein experimentelles Protokoll, das als Vermittler zwischen wichtigen DeFi-Protokoll-Token fungiert und 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-Token in den SEAL-Belohnungsvertrag einzahlen und die Funktion breed() im Vertrag Farm auslösen, um neue SEAL-Token zu generieren. Der Farm-Vertrag wird in jedem Seal-Pool bereitgestellt und die Funktion breed() im Vertrag wird zur Ausgabe neuer Seal-Token verwendet. Gemäß der Einstellung von breed() gibt sie zusätzliche 1,6 % Seal-Token aus. Darüber hinaus werden 0,8 % der ausgegebenen Seal-Token gegen einen anderen Token getauscht, der mit den restlichen 0,8 % der ausgegebenen Seal-Token als Liquidität in den Pool eingezahlt wird. Da jedoch kein Zugriffsschutz für die Funktion breed() vorgesehen war, kann jeder diese Funktion auslösen, und dieses primitive Design wird zur Hauptursache des gemeldeten Angriffs.

Das Folgende ist der bestätigte Quellcode der Funktion breed():

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, weitere Details zu diesem Angriff mit einer angreifenden Transaktion zu enthüllen. In dieser Transaktion wiederholte der Angreifer die Angriffslogik 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.

Drei Schritte sind beteiligt:

  • Schritt 1: Tauschen von 1.084 Seal gegen 2.787 SNX im Seal-SNX-Pool. Die Handelsrate beträgt: 1 Seal = 2,57 SNX.
  • Schritt 2: Auslösen der Funktion breed() im Farm-Vertrag. Diese Funktion gibt 13,08 Seal aus und tauscht sie gegen 10,20 SNX. Die Handelsrate beträgt nun: 1 SNX = 0,78 Seal. Der Grund dafür ist, dass der größte Teil des SNX im Pool gegen Seal getauscht wurde, was zu einem enormen Unterschied zwischen SNX und Seal hinsichtlich der Menge führt. Dann wird SNX gemäß dem Preisberechnungsalgorithmus von Uniswap extrem wertvoll (der Preis steigt um mehr als das Dreifache) im Pool.
  • Schritt 3: Tauschen von 2787 SNX gegen 1100 Seal im Seal-SNX-Pool. Da der Tausch den Preis von SNX weiter erhöht, erzielt der Angreifer mehr Seal-Token (zusätzlich 16 Seal).

Um den Verlust weiter zu messen und zu bestätigen, haben wir die Funktion breed() unter dem Blockstatus, der vor dem Angriff lag, mit unserem System EthScope nachgespielt. Infolgedessen gab Farm im Vergleich zur normalen Ausführung 18 zusätzliche Seal-Token aus. Der Angreifer schnappte sich 16 Seal und nur 2 Seal blieben 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) on-chain bereitgestellt und 22 Transaktionen erfolgreich durchgeführt, um 4.247 Seal-Token zu verpacken. Basierend auf dem damaligen Preis verdiente der Angreifer rund 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 entdeckten wir durch die Analyse des Flusses der gewonnenen Seal-Token, dass etwa 900 Seal-Token in DEX eingezahlt wurden und der Rest auf 6 verschiedene Adressen verteilt wurde. Wie in der folgenden Abbildung gezeigt, sind diese Adressen alle Top-Halter von Seal-Token, abgesehen von Seal Finance und dem Liquiditätspool in Uniswap V2.

Das Ende

Mit der Entwicklung des DeFi-Ökosystems auf Ethereum tauchen nach und nach verschiedene Sicherheitsprobleme auf. Tatsächlich verursachte die Hauptursache hinter dem Angriff, nämlich Zugriffskontrolle, erhebliche Verluste (58.467 USD) bei Seal durch die Durchführung von 22 Transaktionen bis zum 13. Dezember 2020.

Update (2021/01/04)

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

Zeitachse:

  • 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 zugewiesen

Über BlockSec

BlockSec ist ein wegweisendes Blockchain-Sicherheitsunternehmen, das 2021 von einer Gruppe weltweit herausragender Sicherheitsexperten gegründet wurde. Das Unternehmen hat sich zum Ziel gesetzt, die Sicherheit und Benutzerfreundlichkeit der aufstrebenden Web3-Welt zu verbessern, um deren Massenadoption zu fördern. Zu diesem Zweck bietet BlockSec Dienstleistungen für die Sicherheitsprüfung von Smart Contracts und EVM-Ketten an, die Phalcon-Plattform für die Sicherheitsentwicklung und proaktive Bedrohungsabwehr, die MetaSleuth-Plattform für die Verfolgung von Geldern und Ermittlungen sowie die MetaSuites-Erweiterung für Web3-Entwickler, um effizient in der Krypto-Welt zu surfen.

Bisher hat das Unternehmen über 300 namhafte 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 Millionen von US-Dollar erhalten.

Offizielle Website: https://blocksec.com/

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

Sign up for the latest updates
Tether Freezes $6.76M USDT Linked to Iran's IRGC & Houthi Forces: Why On-Chain Compliance is Now a Geopolitical Battlefield
Security Insights

Tether Freezes $6.76M USDT Linked to Iran's IRGC & Houthi Forces: Why On-Chain Compliance is Now a Geopolitical Battlefield

Looking ahead, targeted freezing events like this $6.76M USDT action will only become more common. On-chain data analysis is improving. Stablecoin issuers are also working closely with regulators. As a result, hidden illicit financial networks will be exposed.

Weekly Web3 Security Incident Roundup | Mar 2 – Mar 8, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Mar 2 – Mar 8, 2026

During the week of March 2 to March 8, 2026, seven blockchain security incidents were reported with total losses of ~$3.25M. The incidents occurred across Base, BNB Chain, and Ethereum, exposing critical vulnerabilities in smart contract business logic, token deflationary mechanics, and asset price manipulation. The primary causes included a double-minting logic flaw during full token deposits that allowed an attacker to exponentially inflate their balances through repeated burn-and-mint cycles, a price manipulation vulnerability in an AMM-based lending market where artificially inflated vault shares created divergent price anchors to incorrectly force healthy positions into liquidation, and a flawed access control implementation relying on trivially spoofed contract interfaces that enabled attackers to bypass authorization to batch-mint and dump arbitrary tokens.

Weekly Web3 Security Incident Roundup | Feb 23 – Mar 1, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Feb 23 – Mar 1, 2026

During the week of February 23 to March 1, 2026, seven blockchain security incidents were reported with total losses of ~$13M. The incidents affected multiple protocols, exposing critical weaknesses in oracle design/configuration, cryptographic verification, and core business logic. The primary drivers included oracle manipulation/misconfiguration that led to the largest loss at YieldBloxDAO (~$10M), a crypto-proof verification flaw that enabled the FOOMCASH (~$2.26M) exploit, and additional token design and logic errors impacting Ploutos, LAXO, STO, HedgePay, and an unknown contract, underscoring the need for rigorous audits and continuous monitoring across all protocol layers.