Analise smart-contract
12.04.2024

Proxy-Detektor Beschreibung

Wir setzen die Artikelserie fort, die sich mit der Beschreibung von betrügerischen Machenschaften bei Smart Contracts beschäftigt. Heute werden wir über Smart Contracts mit Proxy-Kontrolle (Proxy) sprechen.

Proxy-Smart Contracts haben aufgrund ihrer Modernisierbarkeit und Flexibilität im Blockchain-Bereich an Popularität gewonnen. Allerdings bergen solche Verträge auch große Gefahren, insbesondere wenn sie von böswilligen Nutzern verwendet werden. Betrüger nutzen oft betrügerische Schemata in Proxy-Smart-Verträgen, um Nutzer zu betrügen. Um solche Bedrohungen zu erkennen, müssen Sie die möglichen Risiken verstehen und technisch versiert sein.

Werfen wir einen genaueren Blick auf eine Beschreibung der potenziellen Gefahren, gängige Täuschungsmanöver und wie man solche Bedrohungen in Proxy-Smart-Verträgen erkennt.

Die Gefahren von Proxy-Smart-Verträgen:

  1. Unautorisierte Aktualisierung:
    Proxy-Verträge erlauben es dem Eigentümer, den zugrunde liegenden Vertrag zu aktualisieren. Wenn dieser Mechanismus jedoch nicht sicher implementiert ist, kann er zu unbefugten Aktualisierungen führen, die es Angreifern ermöglichen, bösartigen Code in den Vertrag einzuschleusen.

  2. Ungeprüfte externe Aufrufe:
    Böswillige Programmierer können externe Aufrufe zu nicht vertrauenswürdigen Verträgen ohne ordnungsgemäße Überprüfung verwenden. Dies kann zu Schwachstellen führen, z. B. zu Reentrancy-Angriffen, bei denen böswillige Verträge wiederholt einen Proxy-Vertrag aufrufen, wodurch dessen Mittel aufgebraucht werden können.

  3. Mangel an Transparenz:
    Der Quellcode des Verwaltungsvertrags wird in der Regel nicht überprüft.

  4. Gefälschte Projekte:
    Betrüger erstellen gefälschte Projekte, die attraktive Merkmale wie hohe Renditen oder einzigartige Funktionen versprechen. Sie können Proxy-Verträge verwenden, um den Anschein von Legitimität zu erwecken und gleichzeitig bösartige Absichten zu verbergen.

  5. Ponzi-Schemata:
    Betrüger bauen Schneeballsysteme auf der Grundlage von Proxy-Verträgen auf und locken die Nutzer mit hohen Renditeversprechen. Solche Systeme können aktualisierbare Komponenten haben, um die Illusion der Plausibilität aufrechtzuerhalten.

  6. Geklonte Verträge:
    Betrüger klonen legitime Projekte und fügen Schwachstellen oder Änderungen in den geklonten Vertrag ein. Ahnungslose Benutzer können mit solchen Klonen interagieren und sie mit dem Original verwechseln.

Wie kann man unabhängig feststellen, ob solche Bedrohungen in intelligenten Verträgen vorhanden sind?

Es ist erwähnenswert, dass, wenn der Zielcode eines intelligenten Vertrags einen Verweis auf einen externen Vertrag (Proxy) enthält, dieser Proxy-Vertrag in fast 100 % der Fälle einen versteckten Quellcode hat. In diesem Fall kann der externe Kontrollvertrag absolut beliebige Aktionen mit dem Zielvertrag durchführen (z. B. Änderung von Benutzerguthaben, Aktivierung und Deaktivierung des Handels, Start von Emissionen usw.).

Daher sollte man verstehen, dass die Arbeit mit einem Proxy-Smart-Contract im wahrsten Sinne des Wortes ein Roulettespiel ist (das Casino gewinnt immer).

Das Auffinden von Proxy-Aufrufen in einem Smart Contract ist einfach genug. Und wie wir bereits sagten, befindet sich die Implementierung bösartiger Funktionen im Kontrollvertrag - wobei der Ziel-Smart-Contract "weiß und flauschig" erscheint (d.h. er ist im Allgemeinen frei von Methoden, die Verdacht erregen könnten).

Wenn Sie selbst feststellen möchten, ob Proxy-Funktionen in Smart Contracts vorhanden sind, sind die folgenden Tipps hilfreich.

  • Durchführen eines Vertragsaudits: Bevor Sie mit einem Smart Contract arbeiten, überprüfen Sie dessen Quellcode und Funktionalität. Achten Sie auf gut dokumentierte Aktualisierungsprozesse, Zugriffskontrollmechanismen und Projekttransparenz.

  • Versichern Sie sich, dass der Smart Contract einer externen Sicherheitsprüfung durch seriöse Unternehmen unterzogen wurde. Der Audit-Bericht kann Aufschluss über potenzielle Schwachstellen geben.

  • Untersuchen Sie das Projektentwicklungsteam. Transparente und vertrauenswürdige Teams sind weniger anfällig für Betrug.

  • Konsultieren Sie die Projekt-Community und holen Sie Feedback von anderen Nutzern ein, die Erfahrungen mit dem Vertrag haben. Betrüger meiden oft die öffentliche Diskussion.

  • Wenn Sie mit Verträgen arbeiten, verwenden Sie bekannte Wallet-Programme und Tools, die zusätzliche Sicherheits- und Transaktionsschutzfunktionen bieten.

  • Sein Sie vorsichtig, wenn Sie mit neuen und unerprobten Verträgen arbeiten, insbesondere mit solchen, die hohe Renditen versprechen oder ein ungewöhnliches Verhalten zeigen.

  • Wenn etwas in einem Vertrag zu gut erscheint, um wahr zu sein, oder verdächtig ist, vertrauen Sie Ihrer Intuition und meiden Sie es.

  • Halten Sie sich über die neuesten Entwicklungen in unserer Community (Telegram-Kanal) und über bewährte Methoden zur Betrugserkennung (unser Blog und YouTube-Kanal) auf dem Laufenden.

Der Sicherheitsscanner von Lotus Market findet alle gängigen (auch versteckten) externen Kontrollfunktionen (Proxy). Nutzen Sie unser Premium-Abonnement und schützen Sie Ihr Geld vor Bedrohungen.

Im Folgenden finden Sie Beispiele für häufige rote Flaggen und verdächtige Muster, auf die Sie achten sollten, wenn Sie Smart Contracts untersuchen, um potenziell bösartige Funktionen zu identifizieren. Es ist wichtig, diese Anzeichen zu verstehen, um sich und andere vor potenziellem Betrug zu schützen. Schauen wir uns einige Codemuster-Variationen und Tipps an, die Ihnen dabei helfen, verdächtige Funktionen in einem intelligenten Vertrag zu erkennen:

Die Hauptregel lautet: Wenn ein Vertragscode einen Aufruf von Call-, CallCode- oder DelegateCall-Funktionen enthält, bedeutet dies, dass der Vertrag externen Code aufruft und die Kontrolle über seine Daten an diesen übergibt.

tips around proxy

Lassen Sie uns einen Blick auf die wichtigsten Beispiele der Verwendung von Proxy-Verträgen werfen.

1. Uninitialisierte Speichervariablen.

Eine der häufigsten Schwachstellen in Proxy-Verträgen ist der Missbrauch von Speichervariablen. Wenn ein Proxy-Vertrag mit DelegateCall verwendet wird, um Funktionen auf einem Implementierungsvertrag aufzurufen, werden die Speichervariablen des Proxy-Vertrags geändert. Wenn der Proxy-Vertragsspeicher jedoch nicht initialisierte Werte oder Standardwerte hat, kann dies zu unerwartetem Verhalten führen.


  contract Implementation {
    address public owner;

    constructor() {
        owner = msg.sender;
    }
}

Wenn in diesem Beispiel die owner-Variable im Proxy-Vertrag nicht initialisiert ist, gibt der Aufruf von owner() auf dem Proxy-Vertrag die owner-Variable des Implementierungs-Vertrags zurück, was möglicherweise nicht dem entspricht, was der Benutzer erwartet.

2. Ungeprüfte externe Aufrufe.

Betrügerische Verträge können externe Aufrufe zu nicht vertrauenswürdigen Verträgen ohne angemessene Prüfungen verwenden. Wenn ein Proxy-Vertrag direkt oder indirekt einen böswilligen Vertrag über DelegateCall aufruft, kann der böswillige Vertrag beliebige Aktionen, einschließlich Reentrancy-Angriffe, ohne angemessene Schutzmaßnahmen durchführen.


  contract Proxy {
    function execute(address target, bytes memory data) external {
        target.delegatecall(data);
    }
}

Wenn ein Benutzer einen beliebigen Vertrag und bösartige Daten als Zieladresse sendet, kann dies dazu führen, dass nicht autorisierte Aktionen im Namen des Benutzers ausgeführt werden.

3. Unangemessene Zugriffskontrolle.

Betrügerische Verträge können ungeeignete Zugriffskontrollen haben, die es nicht autorisierten Benutzern ermöglichen, Verwaltungsfunktionen auszuführen. Bei der Verwendung eines Proxy-Vertrags sollte sorgfältig kontrolliert werden, wer die Erlaubnis hat, den Implementierungsvertrag zu aktualisieren. Andernfalls kann es zu unbefugten Änderungen am Verhalten des Vertrags kommen.


  contract Proxy {
    address public owner;
    address public implementation;
                                    
    function upgrade(address newImplementation) external {
        require(msg.sender == owner, "Only the owner can upgrade.");
        implementation = newImplementation;
    }
}

Wenn in diesem Beispiel die Eigentümeradresse nicht ordnungsgemäß kontrolliert wird oder nicht überprüft wird, wer die Aktualisierungsfunktion aufrufen kann, können Unbefugte die Implementierung in einen bösartigen Vertrag ändern.

4. Risiken bei der Versionierung und Verwaltung.

Proxy-Verträge verwenden häufig Mechanismen zur Versionierung und Verwaltung, um die Vertragslogik zu aktualisieren. Wenn diese Mechanismen nicht sicher implementiert sind, können sie anfällig für Angriffe oder Manipulationen durch böswillige Parteien werden.


  contract Proxy {
    address public owner;
    address public implementation;
    address public pendingImplementation;
        
    function upgrade(address newImplementation) external {
        require(msg.sender == owner, "Only the owner can upgrade.");
        pendingImplementation = newImplementation;
    }
    function claimUpgrade() external {
        require(msg.sender == owner, "Only the owner can claim the upgrade.");
        implementation = pendingImplementation;
    }
}

In diesem Fall kann der Angreifer einen neuen "sauberen" Vertrag anbieten und dann sofort Aktualisierungen vornehmen, um seinen bösartigen Code effektiv in Betrieb zu nehmen.

tips around proxy

Worauf sollte ich beim Studium von Proxy-Verträgen achten und welche Gefahren bergen sie?

  1. Unbefugte Geldüberweisungen:
    Eine der häufigsten Methoden, mit denen Betrüger Geld stehlen, ist die Überweisung von Geldern durch den Vertragsinhaber an sich selbst oder an eine andere Adresse ohne Genehmigung.

  2. Versteckte "Hintertüren":
    Betrüger können bösartigen Code hinter verschleierten oder irreführenden Funktionsnamen verstecken, so dass es für Benutzer schwierig ist, ihre wahren Absichten zu erkennen. Unklare oder missverständliche Funktionsnamen. Bedingte Operatoren, die bestimmten Adressen besondere Privilegien gewähren.

  3. Gefälschte Token und Austauschprogramme:
    Betrüger erstellen oft gefälschte Token oder gefälschte Austauschplattformen, um Nutzer dazu zu bringen, ihr Vermögen auf einen bösartigen Vertrag zu übertragen. Achten Sie auf Token-Verträge, deren Verhalten verdächtig ist, wie z. B. das Prägen unbegrenzter Token oder das Akzeptieren nicht autorisierter Transfers.

  4. Unautorisierte Ausgabe- oder Eigentumsübertragungsfunktionen:
    Ein externer Vertrag kann den Token-Inhaber ändern oder eine Neuausgabe auslösen, was zu einer Preisinflation führt.

  5. Missverständliche Dokumentation oder Kommentare, die nicht mit dem Code-Verhalten übereinstimmen:
    Betrüger können irreführende oder ungenaue Dokumentationen oder Kommentare in ihrem Code bereitstellen, um die Benutzer über die wahre Funktionalität des Vertrags in die Irre zu führen. Überprüfen Sie immer die Dokumentation mit dem tatsächlichen Verhalten des Codes.

  6. Mangelnde Sicherheitsinspektionen:
    Hüten Sie sich vor Verträgen, denen es an angemessenen Sicherheitsprüfungen und Zugriffskontrollen mangelt oder die keine Schutzmaßnahmen gegen häufige Schwachstellen wie Wiederholung implementieren. Wenn Sie einen intelligenten Vertrag in Erwägung ziehen, sollten Sie immer den Code prüfen, nach gut dokumentierten und transparenten Entwürfen Ausschau halten, externe Sicherheitsprüfungen einsehen und das Feedback der Community studieren. Seien Sie außerdem vorsichtig, wenn Sie mit Verträgen interagieren, die eines dieser Merkmale aufweisen, da sie möglicherweise darauf ausgelegt sind, Gelder zu stehlen oder andere bösartige Aktivitäten durchzuführen.

  7. Komplexe bedingte Ausdrücke:
    Betrüger können komplexe bedingte Ausdrücke oder eine schwer nachvollziehbare Logik verwenden, die es schwierig macht, die wahre Funktionalität des Vertrags zu verstehen. Achten Sie auf unnötig verschachtelten Code: übermäßig komplexe oder unklare Logik und Bedingungen, die für den Zweck des Vertrags irrelevant sind.

  8. Unklare Verwaltungs- und Eigentumsverhältnisse (Ownership):
    Betrüger verwenden häufig Proxy-Verträge mit unklaren Verwaltungsmechanismen oder versteckten Eigentumsverhältnissen, so dass es für die Nutzer schwierig ist, festzustellen, wer den Vertrag kontrolliert.

  9. Auslassung bekannter Projekte:
    Betrüger erstellen oft Verträge, die die Funktionalität oder das Aussehen bekannter, legitimer Projekte imitieren. Überprüfen Sie stets die Echtheit des Projekts und stellen Sie sicher, dass es sich nicht um eine Fälschung handelt. Achten Sie auf geringfügige Unterschiede bei Namen, Logos oder Branding. Projekte, die vorgeben, offiziell zu sein, aber nicht ordnungsgemäß validiert sind.

  10. Voreilige oder anonyme Bereitstellung:
    Betrüger können Verträge hastig, ohne eindeutige Identifizierung und mit minimalen Informationen über das Projekt oder seine Entwickler bereitstellen. Achten Sie auf Verträge, die ohne gebührende Sorgfalt und Planung von einem unbekannten Team bereitgestellt werden.

  11. Fehlender öffentlicher Nachweis oder Audit:
    Wenn der Vertrag keine öffentliche Überprüfung des Quellcodes bietet oder nicht von einem Dritten auf Sicherheit geprüft wurde, sollten Sie ihn mit äußerster Vorsicht behandeln.

  12. Ungewöhnliche oder versteckte Datenspeicherung:
    Betrüger können unkonventionelle oder verdeckte Datenspeicherungsschemata verwenden, um bösartige Funktionen zu verschleiern. Beachten Sie, dass Daten an unerwarteten Orten innerhalb des Vertrags gespeichert werden können.

  13. Fälschliche Liquiditätspools:
    Bei DeFi-Projekten sollten Sie sich vor Liquiditätspools hüten, die hohe Renditen versprechen. Betrüger können gefälschte Pools erstellen, um Liquidität anzuziehen und dann die Nutzer auszubeuten. Unregelmäßig hohe Einnahmen aus der Bereitstellung von Liquidität. Mangelnde Transparenz und Dokumentation der Funktionsweise des Pools.

tips around proxy

Um sich vor solchen Schwachstellen zu schützen, sollten Verträge, die Proxy-Vorlagen und DelegateCall verwenden, sorgfältig überprüft und auditiert, Zugangskontrollmechanismen implementiert und externe Aufrufe gesichert werden. Nutzer sollten Vorsicht walten lassen, wenn sie mit Verträgen interagieren, insbesondere mit solchen mit komplexen Aktualisierungsmechanismen, und sie sollten immer eine Sorgfaltsprüfung durchführen, bevor sie mit einem intelligenten Vertrag auf der Blockchain interagieren.

In der sich schnell entwickelnden Welt der Blockchain ist es zwingend erforderlich, wachsam und informiert zu bleiben, um sich und sein Vermögen vor potenziellen betrügerischen Machenschaften und Schwachstellen im Zusammenhang mit Proxy-Verträgen und DelegateCall-Funktionen zu schützen.


Wir hoffen, dass diese Informationen Ihnen geholfen haben, verwaltete (Proxy-)Smart-Contract-Schemata besser zu verstehen.


Da alle Informationen in der Blockchain offen sind (vorausgesetzt natürlich, dass der Quellcode des Vertrags verifiziert ist), können Sie mit diesem Wissen bewaffnet selbstständig Smart Contracts studieren und verschiedene Betrugsschemata identifizieren.

Allerdings haben wir das alles schon für Sie getan! Melden Sie sich für ein Premium-Abonnement an und erhalten Sie Zugang zu exklusiven Filtern für die Funktionen von Smart Contracts und neuen Analysen. Erhöhen Sie Ihre Chancen, erfolgreich in profitable Token zu investieren.

Grüße, Lotus Market Team.

All posts

Connect to a wallet

Metamask