Denial-of-Service-Angriffe auf Smart Contracts: Wie man sie repariert und vermeidet (An Expert Guide) PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Denial-of-Service-Angriffe auf Smart Contracts: Wie man sie behebt und vermeidet (Ein Expertenleitfaden)

Lesezeit: 6 Minuten

Haben Sie schon einmal eine Website besucht, die lange geladen hat, nur um festzustellen, dass sie im Moment nicht geöffnet werden kann? Das ist einfach alles über die Wirkung von Denial-of-Service-Angriffen. 

Denial of Service (DoS)-Angriffe sind eine der vielen Schwachstellen, auf die bei der Prüfung von Smart Contracts hauptsächlich geachtet wird. Dieser Blog zielt darauf ab, die Besonderheiten des DoS-Angriffs aufzudecken – was es ist, seine Auswirkungen, Arten und vieles mehr, das hinzugefügt werden kann.

Lassen Sie uns schnell einsteigen und sie alle erkunden. 

Was ist ein DoS-Angriff?

DoS-Angriffe zielen darauf ab, die Verarbeitungsfähigkeiten eines Netzwerks, Servers oder einer Anwendung zu unterbrechen und die Bearbeitung von Anfragen legitimer Benutzer zu verhindern. Dabei überwältigt der Angreifer das Netzwerk, indem er mehr Datenverkehr sendet, der den Speicher und die Bandbreite der Server erschöpft. 

Aufgrund des immensen Potenzials der Blockchain sind sie das Hauptziel für DoS-Angriffe, um den Reichtum zu stehlen. Die bekanntesten Kryptowährungen wie Bitcoin, Ethereum, usw., haben ebenfalls DoS-Angriffe erlebt. 

Verteilter Denial-of-Service (DDoS)

Distributed Denial of Service (DDoS) ist ein DoS-Angriff, bei dem der Angreifer mehrere Geräte steuert, um einen Angriff auf den Zielknoten zu starten.

Der Angreifer beobachtet den Zielknoten und kanalisiert die mehreren Geräte unter seiner Kontrolle, um eine große Menge an Informationen zu senden, die den Zielknoten überfluten. Dadurch stürzt das Ziel ab und kann die angegebene Aufgabe nicht erfüllen.  

Ziele von DoS-Angriffen im Blockchain-Ökosystem

Aus den Aufzeichnungen der vergangenen Ereignisse von DoS-Angriffen geht hervor, dass jeder Teil des Blockchain-Ökosystems anfällig für DoS-Angriffe ist. Und um nur einige zu nennen, 

Wallets für Kryptowährungen: Wie bei jedem Wallet wird das Kryptowährungs-Wallet zum Speichern, Senden oder Empfangen von Kryptowährungen verwendet. Und diese Online-Geldbörsen verwenden intelligente Verträge, die anfällig für DoS-Angriffe sind, die ihre Dienste und die Interaktion mit Dapps behindern. 

Dienste zum Austausch von Kryptowährungen: Die Online-Plattform, auf der Kryptowährungen gehandelt werden und der Austausch zwischen Benutzern stattfindet. Sie sind Hauptziele für Hacker, um DoS-Angriffe durchzuführen, die die Nichtverfügbarkeit der Plattform und ihrer Dienste verursachen. 

Beispiel: Die Bitcoin-Austauschplattform Bifinex hat mehrmals DDoS-Angriffe erlitten. 

Speicher(transaktions)pools: Transaktionen in der Blockchain müssen validiert werden, bevor sie den Blöcken hinzugefügt werden. Bis dahin werden die Transaktionsanfragen im Mempool gespeichert, der wie ein Repository unbestätigter Transaktionen ist, die darauf warten, von einem Miner ausgewählt zu werden. 

Die Transaktion mit einer hohen Gebühr wird am ehesten vom Miner ausgewählt. Das Überfluten des Mempools mit vielen Transaktionen mit geringen Gebühren führt also dazu, dass der Benutzer hohe Gebühren zahlt, um seine Transaktion verarbeiten zu lassen. So hat der DoS-Angriff seine Wirkung entfaltet und die Bearbeitungsgebühr erhöht. 

Konsensteilnehmer: Sie sind die Spieler, die die Logik lösen und entscheiden, welche Blöcke der Blockchain hinzugefügt werden sollen. Das Verursachen von DoS-Angriffen auf den Konsensführer stoppt das gesamte System. 

Mischdienste: Es verwendet ein Protokoll, mit dem Benutzer Transaktionen anonym durchführen können. Sie erleiden DoS-Angriffe auf verschiedene Weise, wie z. B. übermäßige Teilnahmeanfragen an den Mixing-Pool, inkonsistente Eingaben für den Shuffle usw. 

Intelligente Verträge: Smart Contract ist das zugrunde liegende Protokoll hinter jeder Transaktion in der Blockchain. DoS-Angriffe auf Smart Contracts können den Knoten zum Absturz bringen, der die Funktion der von ihm gehosteten Dapps stoppt.

DoS-Angriffe werden auf verschiedene Weise auf sie ausgeführt, die im folgenden Abschnitt näher erläutert werden.

Analysieren von Arten von DoS-Angriffen auf Smart Contracts 

Die DoS-Schwachstelle in Smart Contracts führt zu einer unbegrenzten Ressourcennutzung oder Manipulation des Vertrags. Dies führt zu einer Aussetzung der Ausführung normaler Aktivitäten oder unterbricht und zerstört die Vertragslogik. 

Nachfolgend finden Sie die Klassifizierung verschiedener DoS-Angriffe in Smart Contracts

Unerwartetes Revert-DoS

Um diesen DoS-Angriff auf Smart Contracts zu untersuchen, nehmen wir als Beispiel einen Auktionsvertrag. Der Auktionsvertrag wird mit jedem eingegangenen Höchstgebot aktualisiert und gibt den Gebotsbetrag des vorherigen Bieters zurück, da er niedriger ist als das aktuelle Gebot.

contract Auction {
    address frontRunner;
    uint256 highestBid;

    function bid() public payable {
        require(msg.value > highestBid, "Need to be higher than highest bid");
        // Refund the old leader, if it fails then revert   
        require(payable(frontRunner).send(highestBid), "Failed to send Ether");
 
        frontRunner = msg.sender;
        highestBid = msg.value;
    }
}

Der Angreifervertrag wird mit dem Auktionsvertrag im Konstruktor initialisiert, der Zugriff auf den Auktionsvertrag erhält. Dabei sperrt der Angreifer durch Aufrufen der 'attack()'-Funktion den Betrag und kann dadurch den Gebotsbetrag nicht an den Angreifer zurückgeben, selbst wenn er ein höheres Gebot erhält. 

import "./Auction.sol";   
contract Attacker{
    Auction auction;

    constructor(Auction _auctionaddr){
        auction = Auction(_auctionaddr);
    }

    function attack (){
        auction.bid{value: msg.value}();
    }

}

Dies liegt daran, dass der „Angreifer“-Vertrag keine „receive()“- oder Fallback-Funktion zur Rückerstattung von Ether enthält, was zu dem unerwarteten Revert führt. Dies macht den Angreifervertrag immer zum Höchstbietenden. 

Gaslimit-DoS blockieren 

Der Block hat eine maximale Grenze des zu verbrauchenden Gases, die proportional zur Menge der zu leistenden Rechenarbeit ist. Im Falle einer Überschreitung des Gaslimits führt dies zu zwei Arten von DoS-Angriffen.

Gas Limit DoS – Unbegrenzter Vertragsbetrieb

Es gibt ein festgelegtes Gaslimit, und wenn die Transaktionen ein höheres Gaslimit als das festgelegte Limit erreichen, führt dies zum Scheitern der Transaktion. 

Noch schlimmer wird es, wenn der Angreifer das benötigte Gas manipuliert. Das ist, wenn der Angreifer ein paar Adressen für eine sehr kleine Rückerstattung hinzufügt. Jede Rückerstattung kostet eine Gasgebühr; Daher überschreiten die Gaskosten das Limit, das die Rückerstattungstransaktionen verhindert. 

struct Payee {
    address addr;
    uint256 value;
}

Payee[] payees;
uint256 nextPayeeIndex;

function payOut() {
    uint256 i = nextPayeeIndex;
    while (i < payees.length && msg.gas > 200000) {
      payees[i].addr.send(payees[i].value);
      i++;
    }
    nextPayeeIndex = i;
}

Daher müssen beim Implementieren einer Schleife über ein Array die erforderlichen Schritte berücksichtigt werden. 

Füllung blockieren

Der Angreifer initiiert diesen Angriff, um zu verhindern, dass Transaktionen zu den Blöcken hinzugefügt werden, indem rechenintensive Transaktionen mit hohen Gaspreisen gesendet werden. Mehrere Transaktionen werden auf ähnliche Weise ausgegeben, um das gesamte Gaslimit zu verbrauchen. 

Durch die Zahlung der hohen Gasgebühr stellt der Angreifer sicher, dass nur die beabsichtigten Transaktionen zu den Blöcken hinzugefügt werden und der Rest weggelassen wird. 

Aktion des Eigentümers

Jeder Vertrag hat eine Eigentümeradresse, die befugt ist, Transaktionen zu eröffnen oder auszusetzen. Der gesamte Vorgang hängt von der Adresse des Eigentümers ab, und wenn sie verloren geht, kann der Benutzer überhaupt keine Token senden, und die Vertragsfunktion wird zusammenbrechen.

Auswirkung eines DoS-Angriffs

Block Stuffing ist eine der vielen Auswirkungen, die verhindern, dass legitime Transaktionen zu den Blöcken hinzugefügt werden. Es gibt jedoch mehrere andere Auswirkungen von DoS-Angriffen. 

Aufgeblähtes Hauptbuch: Im Blockchain-Ledger werden die Transaktionen dauerhaft aufgezeichnet. Die Blockchain-Knoten speichern eine Kopie der Transaktionen, um sie auf doppelte Ausgaben zu überprüfen. Ein DoS-Angriff kann das Hauptbuch mit Spam-Transaktionen aufblähen.

Netzwerktraffic: Wir kennen Blockchain-Funktionen, die auf dem Peer-to-Peer-Modus basieren. Jeder Knoten in der Blockchain erhält eine Kopie der Transaktion. Ein DoS-Flooding kann zu einem großen Transaktionsvolumen führen und die Netzwerkbandbreite verbrauchen. 

Knotenausfälle: Blockchain funktioniert auf den Knoten, die die Unterstützung der Software benötigen, um große Datenmengen zu bewältigen. Während des Transaktionsflutens kann den Knoten der Speicher ausgehen, wodurch die Operationen angehalten werden.

Software-Crash: Wie wir bereits besprochen haben, haben der Mempool oder die Blöcke bestimmte Beschränkungen des ihnen zugewiesenen Speichers. Die Software empfängt, verarbeitet und speichert Transaktionen innerhalb des festgelegten Limits. Wenn die eingehenden Transaktionen die eingebauten Limits überschreiten, stürzt die Software ab.  

Schützen Sie Smart Contracts vor DoS-Angriffen 

Aus der Analyse von DoS-Angriffen können die folgenden Möglichkeiten zur Abschwächung des Angriffs eingesetzt werden. 

Rätsel: Die Server können Puzzles generieren, wie z. B. Gedächtnisrätsel, Zeitschloss-Puzzles, CPU-gebundene Puzzles usw. Damit ein Benutzer Zugang zu einem Dienst erhält, müssen die Rätsel gelöst werden, wodurch die Spam-Angriffe bekämpft werden.

Gebührenbasierter Ansatz: Der Blockchain kann eine zusätzliche Gebühr auferlegt werden, z. B. Mining-Gebühren für Mining-Pools, Transaktionsgebühren usw. Dies macht den DoS-Hack für die Angreifer kostspielig, wodurch solche Angriffe zu Fall gebracht werden. 

Schlussbemerkung

A Smart Contract Auditing durchgeführt bei QuillAudits sucht nach potenziellen Schwachstellen, die in der Codierung liegen. Einige von ihnen umfassen Wiedereintrittsschwachstellen, Speicherkollisionen, Zufallsangriffe, Denial of Service und so weiter. 

Damit ist eindeutig gemeint Smart Contracts werden gründlich getestet, um frei von Bedrohungen durch Denial-of-Service-Angriffe zu sein. Dadurch wird sichergestellt, dass Ihr Projekt vor möglichen Schwachstellen des Web3-Bereichs geschützt ist.

Achten Sie auf unseren Telegram-Kanal, um die neuesten Einblicke in unsere Dienstleistungen zu erhalten: https://t.me/quillhash

13 Views

Zeitstempel:

Mehr von Quillhash