Skip to main content

Smart Contract Audit (Hacken)

Hacken-Logo

1. Überblick

Hacken hat im Auftrag von WeSendit eine Code- und Sicherheitsprüfung der Smart Contracts des WeSendit Tokens ($WSI) durchgeführt. Die Prüfung fand vom 3. bis 20. Oktober 2022 statt und bestand aus einer Erstprüfung und einer Nachprüfung am 20. Oktober 2022.

2. Prüfungsumfang

Geprüft wurde ein ERC20-Token-System, geschrieben in der Programmiersprache Solidity, auf der BNB Smart Chain (BSC). Gegenstand waren folgende Verträge aus dem Repository wesenditmedia/contracts:

  • WeSenditToken / BaseWeSenditToken: der ERC20-Token mit Gebührenfunktion
  • DynamicFeeManager / BaseDynamicFeeManager: das Hinzufügen und Berechnen von Gebühren
  • EmergencyGuard: ermöglicht der Verwaltung, Mittel aus den Verträgen abzuziehen
  • die zugehörigen Schnittstellen (Interfaces)

3. Vorgehen

Hacken hat den Code manuell geprüft, automatisiert analysiert und die Architektur des Systems bewertet. Dabei wurde der Code gegen bekannte Schwachstellen aus der SWC-Registry sowie gegen weitere Kriterien geprüft, unter anderem:

  • Zugriffsschutz für wichtige Funktionen
  • Schutz der Nutzerguthaben vor Zugriffen durch Dritte
  • Erzeugung neuer Token nur nach den dokumentierten Regeln
  • Schutz vor Flashloan-Angriffen
  • Einhaltung der EIP-Standards
  • vollständige Testabdeckung

In der Nachprüfung wurden alle anwendbaren Kriterien als bestanden bewertet. Einige Kriterien waren für diese Verträge nicht relevant.

4. Ergebnisse

Hacken unterscheidet vier Schweregrade: kritisch (leicht ausnutzbar, kann zu Verlust von Guthaben oder Datenmanipulation führen), hoch (schwer ausnutzbar, aber mit erheblichen Auswirkungen), mittel (wichtig zu beheben, führt aber nicht zu Verlust von Guthaben) und niedrig (meist veralteter oder ungenutzter Code ohne nennenswerte Auswirkungen).

In der Erstprüfung wurden 18 Befunde festgestellt: 2 kritische, 4 hohe, 4 mittlere und 8 niedrige.

Kritische Befunde: Zwei Einstellungen für den Tausch über PancakeSwap konnten von jeder Person geändert werden. Ausserdem wurde Liquidität für das BNB/WSI-Paar nicht wie dokumentiert hinzugefügt.

Hohe Befunde: Die Summe aller Gebühren konnte das festgelegte Limit überschreiten und dadurch Übertragungen blockieren. Eine Gebührenfunktion war von jeder Person aufrufbar, was bei freigegebenen Guthaben zu Verlusten hätte führen können. Ausserdem gab es eine fehlerhafte Berechnung von Gebührenbeträgen, und eine zu grosse Zahl an Gebühreneinträgen hätte Übertragungen blockieren können.

Mittlere und niedrige Befunde: Diese betrafen unter anderem überflüssigen Code, fehlende Meldungen bei Änderungen wichtiger Einstellungen, ein nicht geprüftes Rückgabeergebnis beim Hinzufügen von Liquidität, eine nicht festgelegte Compiler-Version und fehlende Prüfungen auf leere Adressen.

Alle 18 Befunde wurden behoben. In der Nachprüfung am 20. Oktober 2022 bestanden keine offenen Befunde mehr.

5. Bewertung

Nach der Nachprüfung bewertete Hacken die Smart Contracts mit 10,0 von 10 Punkten:

  • Dokumentation: 10 von 10. Funktionale Anforderungen und technische Beschreibung liegen vor.
  • Codequalität: 10 von 10. Die Entwicklungsumgebung ist eingerichtet, und der Code folgt den offiziellen Solidity-Richtlinien.
  • Testabdeckung: 100 %. Einsatz und grundlegende Nutzung, Fehlerfälle sowie die Nutzung durch mehrere Personen sind durch Tests abgedeckt.
  • Sicherheit: 10 von 10. Keine offenen Befunde.

6. Rollen und Risiken laut Bericht

Die Verträge enthalten Verwaltungsrollen. Die Verwaltung kann unter anderem Gebühren hinzufügen und entfernen, Rollen vergeben, Gebühren aktivieren oder deaktivieren, den Token-Vertrag nach einer Pause wieder freigeben und Token sowie BNB aus den Verträgen abziehen. Weitere Rollen erlauben es, von Gebühren oder einer Pause ausgenommen zu sein.

Hacken nennt im Bericht drei Risiken:

  • Die Verwaltung des Tokens kann den Gebührenmanager jederzeit austauschen. Das kann dazu führen, dass Übertragungen gestoppt oder Gebühren erhöht werden.
  • Unter bestimmten Einstellungen berücksichtigt der automatische Tausch die aktuellen Reserven des Handelspaars nicht.
  • Nach einer Notfallauszahlung durch die Verwaltung werden die Gebühreneinträge nicht automatisch aktualisiert und müssen ersetzt werden.

7. Einschränkungen

Der Bericht bezieht sich ausschliesslich auf den eingereichten und geprüften Code und kann nach Änderungen nicht mehr zutreffend sein. Er enthält keine Garantie, dass alle Schwachstellen gefunden wurden. Hacken empfiehlt, sich nicht allein auf diesen Bericht zu verlassen, sondern mehrere unabhängige Audits und ein öffentliches Bug-Bounty-Programm durchzuführen.

Der Bericht wurde auf Englisch verfasst. Bei Abweichungen ist die englische Fassung massgeblich.

8. Vollständiger Bericht

Der vollständige Prüfbericht von Hacken ist hier abrufbar: Hacken Audit Report