Back to Blog

Neuer Integer-Überlauf-Bug in Solana rBPF entdeckt

Code Auditing
December 30, 2021

Kürzlich hat unser System zur Erkennung von Schwachstellen ein kritisches Problem im rBPF von Solana (d.h. der virtuellen Maschine, auf der alle Solana-dApps laufen: https://github.com/solana-labs/rbpf) entdeckt. Nach sorgfältiger Untersuchung stellten wir fest, dass es sich um einen Integer-Overflow-Bug handelt, der ausgenutzt werden kann, um das gesamte Solana-Netzwerk zum Absturz zu bringen. Wir haben den Bug dem Solana-Sicherheitsteam gemeldet, und das Team hat sofort Maßnahmen ergriffen, um den Bug zu bestätigen und zu beheben. Zum Zeitpunkt der Erstellung dieses Berichts haben fast alle Validator-Knoten den Patch erhalten und sind auf die neueste Version aktualisiert worden, was bedeutet, dass eine öffentliche Offenlegung nun sicher ist.

eBPF und rBPF

Extended Berkeley Packet Filter (eBPF[1]) wurde ursprünglich zur Paketfilterung im Kernel entwickelt. Aufgrund der Sicherheit, Effizienz und Skalierbarkeit von eBPF wird es heute in verschiedenen Bereichen wie Netzwerken, Tracing, Profiling usw. etc[2] eingesetzt. Angesichts der reichhaltigen Fähigkeiten von eBPF hat Solana es auch als Ausführungs-Engine für Smart Contracts gewählt. Um dApps auf Solana zu entwickeln, müssen Entwickler ihre Smart Contracts in Rust schreiben, die dann in eBPF-Bytecode kompiliert werden.

Um die dApps von Solana zu hosten, ist eine präzise virtuelle Maschine für eBPF erforderlich. In diesem Fall verwendet Solana rBPF, eine in Rust geschriebene virtuelle Maschine für eBPF. Ob die vorgeschlagene virtuelle Maschine (d.h. rBPF) jedoch robust, sicher und präzise ist, ist unbekannt. Sobald Sicherheitsprobleme innerhalb von rBPF bestehen, können alle rBPF enthaltenden Validatoren beeinflusst werden, was zu enormen Verlusten (z. B. DDoS-Angriffe) für das gesamte Solana-Netzwerk führt.

Die Grundursache des Bugs

Wir haben ein Tool zur Lokalisierung von Bugs für rBPF entwickelt. Dieses Tool befindet sich noch in der aktiven Entwicklung. Während dieses Prozesses wurde ein schwerwiegendes Problem in rBPF (Version 0.2.16) identifiziert, das das gesamte Netzwerk lahmlegen kann.

Genauer gesagt wird die Funktion "load" in der Datei "elf.rs" verwendet, um die ELF-Datei (den Smart Contract) zu parsen und zu verifizieren. Zuerst liest die Funktion "load" die ELF-Struktur und ruft die Funktion "relocate" auf, um den Callee-Offset einzurichten. In der Funktion "relocate" wird das Attribut "sym.st_value" jedoch direkt aus der ELF-Datei abgerufen. Wenn "st_value" groß genug ist, kann ein Integer-Overflow beim Berechnen von "addr", der Summe aus "sym.st_value" und "refd_pa", ausgelöst werden.

In diesem Fall kann ein Angreifer eine bösartige ELF-Datei als Smart Contract erstellen, die den Integer-Overflow auslöst. Danach würde jeder Validator die Ziel-ELF-Datei ausführen und rBPF würde mit „add with overflow“ abstürzen.

In diesem Moment gerät rBPF ins Stocken und eingehende Transaktionen werden nicht ausgeführt, was zu einem DoS-Angriff führt. Wir können beobachten, dass der Knoten aufgrund des Integer-Overflows beim Laden der ELF-Datei bei „Finalizing transaction“ hängt, wie im Folgenden gezeigt.

Dieser Fehler wurde in https://github.com/solana-labs/rbpf/pull/200 eingeführt, was bedeutet, dass rBPF ab Version 0.2.14 anfällig ist. Wir haben das Problem identifiziert und am 6. Dezember 2021 dem Solana-Sicherheitsteam gemeldet. Solana hat das Problem nach unserer Meldung innerhalb weniger Stunden durch die Verwendung des Safemath-Mechanismus behoben. Die Korrektur ist in https://github.com/solana-labs/rbpf/pull/236 zu finden. Zum Zeitpunkt der Erstellung dieses Berichts (30.12.2021) haben mehr als 86% der Validatoren auf die neueste Version aktualisiert.

[1] https://en.wikipedia.org/wiki/Berkeley_Packet_Filter

[2] https://ebpf.io/

Zeitplan

  • 06.12.2021: Das Problem wurde dem Solana-Sicherheitsteam gemeldet
  • 06.12.2021: Die Schwachstelle wurde behoben.
  • 30.12.2021: Die Informationen zu dieser Schwachstelle wurden veröffentlicht
  • 28.01.2022: Die CVE-2021–46102 wurde zugewiesen
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.