Zum Hauptinhalt springen

Checkliste für die Sicherheit von Smart Contracts

Smart Contracts
Sicherheit
Solidity
Fortgeschritten
Trailofbits
7. September 2020
3 Minuten Lesezeit

Checkliste für die Entwicklung von Smart Contracts

Hier ist ein allgemeiner Prozess, den wir empfehlen, während Sie Ihre Smart Contracts schreiben.

Prüfen Sie auf bekannte Sicherheitsprobleme:

  • Überprüfen Sie Ihre Verträge mit Slither (opens in a new tab). Es verfügt über mehr als 40 integrierte Detektoren für häufige Schwachstellen. Führen Sie es bei jedem Check-in mit neuem Code aus und stellen Sie sicher, dass es einen sauberen Bericht erhält (oder verwenden Sie den Triage-Modus, um bestimmte Probleme stummzuschalten).
  • Überprüfen Sie Ihre Verträge mit Crytic (opens in a new tab). Es prüft auf 50 Probleme, die Slither nicht erkennt. Crytic kann Ihrem Team auch dabei helfen, den Überblick zu behalten, indem es Sicherheitsprobleme in Pull Requests auf GitHub leicht sichtbar macht.

Berücksichtigen Sie besondere Merkmale Ihres Vertrags:

Überprüfen Sie kritische Sicherheitsmerkmale Ihres Codes visuell:

Dokumentieren Sie kritische Sicherheitseigenschaften und verwenden Sie automatisierte Testgeneratoren, um diese zu bewerten:

  • Lernen Sie, Sicherheitseigenschaften für Ihren Code zu dokumentieren. Es ist anfangs schwierig, aber es ist die wichtigste Aktivität, um ein gutes Ergebnis zu erzielen. Es ist auch eine Voraussetzung für die Verwendung der fortgeschrittenen Techniken in diesem Tutorial.
  • Definieren Sie Sicherheitseigenschaften in Solidity zur Verwendung mit Echidna (opens in a new tab) und Manticore (opens in a new tab). Konzentrieren Sie sich auf Ihre Zustandsmaschine, Zugriffskontrollen, arithmetische Operationen, externe Interaktionen und die Einhaltung von Standards.
  • Definieren Sie Sicherheitseigenschaften mit der Python-API von Slither. Konzentrieren Sie sich auf Vererbung, Variablenabhängigkeiten, Zugriffskontrollen und andere strukturelle Probleme.
  • Führen Sie Ihre Eigenschaftstests bei jedem Commit mit Crytic (opens in a new tab) aus. Crytic kann Sicherheitseigenschaftstests verarbeiten und auswerten, sodass jeder in Ihrem Team auf GitHub leicht sehen kann, dass sie bestanden wurden. Fehlgeschlagene Tests können Commits blockieren.

Achten Sie schließlich auf Probleme, die automatisierte Tools nicht leicht finden können:

  • Mangelnde Privatsphäre: Alle anderen können Ihre Transaktionen sehen, während sie im Pool in der Warteschlange stehen
  • Front-Running-Transaktionen
  • Kryptografische Operationen
  • Riskante Interaktionen mit externen DeFi-Komponenten

Bitten Sie um Hilfe

Die Ethereum-Sprechstunden (opens in a new tab) finden jeden Dienstagnachmittag statt. Diese einstündigen 1-zu-1-Sitzungen bieten die Gelegenheit, uns alle Fragen zum Thema Sicherheit zu stellen, Fehler mit unseren Tools zu beheben und Feedback von Experten zu Ihrem aktuellen Ansatz zu erhalten. Wir helfen Ihnen bei der Durcharbeitung dieses Leitfadens.

Treten Sie unserem Slack bei: Empire Hacking (opens in a new tab). Wir sind bei Fragen jederzeit in den Kanälen #crytic und #ethereum erreichbar.

Letzte Aktualisierung der Seite: 7. Februar 2025

War dieses Tutorial hilfreich?