Kurz erklärt: Ein Smart-Contract-Audit ist eine systematische Sicherheitsprüfung des Quell- oder Bytecodes eines Smart Contracts mit dem Ziel, Programmfehler, Schwachstellen und wirtschaftliche Risiken vor oder nach der Bereitstellung zu identifizieren. Es ist eine verbreitete Praxis im Umfeld von Ethereum und anderen Vertrags-Plattformen.
Hintergrund und Motivation
Smart Contracts verwalten häufig erhebliche Vermögenswerte und sind nach der Bereitstellung meist unveränderlich. Ein Programmierfehler kann daher zu dauerhaften und unwiderruflichen Verlusten führen. Historische Vorfälle wie der Angriff auf die dezentrale Organisation The DAO im Jahr 2016 verdeutlichten diese Risiken und trugen zur Etablierung eines eigenen Prüfmarktes bei.
Audits werden von spezialisierten Sicherheitsunternehmen, unabhängigen Prüfern oder im Rahmen von Wettbewerben durchgeführt. Ein bestandenes Audit ist keine Garantie für Fehlerfreiheit, sondern eine Risikominderung.
Typische Prüfmethoden
Ein Audit kombiniert in der Regel mehrere Verfahren:
- Manuelle Code-Prüfung: Zeilenweise Analyse der Logik durch erfahrene Prüfer.
- Statische Analyse: automatisierte Werkzeuge, die den Code ohne Ausführung auf bekannte Muster untersuchen.
- Dynamische Analyse und Fuzzing: Ausführung des Vertrags mit einer Vielzahl von Eingaben, um Fehlerzustände zu provozieren.
- Formale Verifikation: mathematischer Nachweis, dass der Code definierten Eigenschaften genügt.
Häufige Schwachstellenklassen
Auditoren achten unter anderem auf wiederkehrende Fehlerklassen:
- Reentrancy: wiederholter Aufruf einer Funktion, bevor der erste Aufruf abgeschlossen ist.
- Fehlerhafte Zugriffskontrolle: unzureichend geschützte administrative Funktionen, besonders relevant bei aktualisierbaren Verträgen und Proxy Contracts.
- Arithmetische Fehler: Über- oder Unterläufe bei Berechnungen.
- Preisorakel-Manipulation: Ausnutzung fehlerhafter Preisquellen, teils in Kombination mit Flash Loans.
Grenzen und ergänzende Maßnahmen
Ein Audit betrachtet einen bestimmten Codestand zu einem bestimmten Zeitpunkt. Spätere Änderungen, unentdeckte Fehler oder unerwartete Wechselwirkungen mit anderen Verträgen bleiben möglich. Als ergänzende Maßnahmen gelten Bug-Bounty-Programme, öffentliche Prüfwettbewerbe, Zeitverzögerungen bei Änderungen sowie eine schrittweise Erhöhung von Einzahlungsgrenzen. Auditberichte werden häufig veröffentlicht, um Transparenz herzustellen.
Häufige Fragen
Garantiert ein Audit, dass ein Vertrag sicher ist?
Nein. Ein Audit reduziert Risiken und deckt viele Fehler auf, kann aber keine vollständige Fehlerfreiheit garantieren. Es bezieht sich stets auf einen bestimmten Codestand.
Wer führt Smart-Contract-Audits durch?
Spezialisierte Sicherheitsunternehmen, unabhängige Prüfer sowie Teilnehmer öffentlicher Prüfwettbewerbe. Häufig prüfen mehrere Parteien denselben Code.
Welche Fehler werden am häufigsten gefunden?
Verbreitet sind Reentrancy, fehlerhafte Zugriffskontrolle, arithmetische Fehler und die Manipulation von Preisorakeln.
Was ist formale Verifikation?
Ein Verfahren, das mit mathematischen Methoden nachweist, dass ein Vertrag zuvor definierten Eigenschaften genügt. Es ist aufwendig, aber besonders belastbar.
Was ergänzt ein Audit?
Häufig werden Bug-Bounty-Programme, Prüfwettbewerbe, Timelocks und schrittweise erhöhte Einzahlungsgrenzen eingesetzt, um Restrisiken weiter zu senken.
Zusammenfassung
Ein Smart-Contract-Audit ist eine systematische Sicherheitsprüfung von Blockchain-Verträgen auf Schwachstellen, Logikfehler und wirtschaftliche Risiken. Es kombiniert manuelle Prüfung, automatisierte Analyse und teils formale Verifikation. Ein Audit senkt Risiken, garantiert jedoch keine vollständige Fehlerfreiheit und wird oft durch Bug-Bounty-Programme ergänzt.
Weiterführende Quellen
- Ethereum.org: Smart Contract Security: ethereum.org
- OpenZeppelin: Security Audits: www.openzeppelin.com