Analise smart-contract
12.04.2024

Description du détecteur de proxy

Nous poursuivons la série d'articles consacrés à la description des schémas frauduleux dans les smart contracts. Aujourd'hui, nous parlerons des contrats intelligents avec contrôle par proxy (Proxy).

Les contrats intelligents par proxy ont gagné en popularité dans l'espace blockchain en raison de leur modernité et de leur flexibilité. Cependant, ces contrats comportent également un grand danger, en particulier lorsqu'ils sont utilisés par des utilisateurs malveillants. Les fraudeurs utilisent souvent des schémas trompeurs dans les contrats intelligents proxy pour escroquer les utilisateurs. Pour identifier ces menaces, vous devez comprendre les risques possibles et faire preuve de connaissances techniques.

Examinons de plus près une description des dangers potentiels, les stratagèmes de tromperie courants et la manière d'identifier ces menaces dans les proxy smart contracts.

Les dangers des proxy smart contracts:

  1. Mise à jour non autorisée:
    . Les contrats proxy permettent au propriétaire de mettre à jour le contrat sous-jacent. Toutefois, si ce mécanisme n'est pas mis en œuvre de manière sécurisée, il peut conduire à des mises à jour non autorisées, permettant aux attaquants d'injecter du code malveillant dans le contrat.

  2. Appels externes non vérifiés :
    Les programmeurs malhonnêtes peuvent utiliser des appels externes vers des contrats non fiables sans vérification appropriée. Cela peut entraîner des vulnérabilités, notamment des attaques par réentrance, où des contrats malveillants appellent de manière répétée un contrat mandataire, ce qui peut épuiser ses fonds.

  3. L'absence de transparence :
    Le code source du contrat de gestion n'est pas disponible. Le code source du contrat de gestion n'est généralement pas vérifié.

  4. Faux projets:
    Les fraudeurs créent de faux projets qui promettent d'épuiser les fonds. Les fraudeurs créent de faux projets qui promettent des caractéristiques attrayantes telles que des rendements élevés ou des fonctionnalités uniques. Ils peuvent utiliser des contrats de substitution pour créer une apparence de légitimité tout en dissimulant des intentions malveillantes.

  5. Systèmes de Ponzi:
    Les escrocs construisent des systèmes de Ponzi basés sur les principes de l'économie de marché. Les escrocs construisent des systèmes de Ponzi basés sur des contrats proxy, en attirant les utilisateurs avec des promesses de rendements élevés. Ces systèmes peuvent comporter des éléments actualisables pour maintenir l'illusion de plausibilité.

  6. Contrats clonés:
    Les fraudeurs clonent des projets légitimes et les rendent plus efficaces. Les fraudeurs clonent des projets légitimes et introduisent des vulnérabilités ou des modifications dans le contrat cloné. Des utilisateurs peu méfiants peuvent interagir avec ces clones, les confondant avec l'original.

Comment pouvez-vous déterminer de manière indépendante si de telles menaces sont présentes dans les contrats intelligents ?

Il convient de noter que si le code cible d'un contrat intelligent contient une référence à un contrat externe (Proxy), alors dans presque 100 % des cas, ce contrat Proxy aura un code source caché. Dans ce cas, le contrat de contrôle externe peut effectuer absolument toutes les actions avec le contrat cible (par exemple : modifier les soldes des utilisateurs, activer et désactiver le trading, démarrer l'émission, etc.).

Par conséquent, il est utile de comprendre que travailler avec un contrat intelligent Proxy est un jeu de roulette dans le vrai sens du terme (le casino gagne toujours).

Trouver les invocations Proxy dans un contrat intelligent est assez facile. Et, comme nous l'avons dit précédemment, la mise en œuvre des fonctions malveillantes se trouve dans le contrat de contrôle - le contrat intelligent cible apparaissant "blanc et cotonneux" (c'est-à-dire qu'il est généralement dépourvu de toute méthode susceptible d'éveiller les soupçons).

Si vous souhaitez déterminer par vous-même si des fonctions Proxy sont présentes dans les contrats intelligents, les conseils suivants vous seront utiles.

  • Procéder à un audit du contrat : Avant de travailler avec un contrat intelligent, examinez son code source et ses fonctionnalités. Soyez attentif à l'existence de processus de mise à jour bien documentés, de mécanismes de contrôle d'accès et de transparence du projet.

  • Vérifiez que le contrat intelligent a fait l'objet d'un audit de sécurité externe par des entreprises réputées. Le rapport d'audit peut donner un aperçu des vulnérabilités potentielles.

  • Recherche sur l'équipe de développement du projet. Les équipes transparentes et dignes de confiance sont moins susceptibles de se livrer à des fraudes.

  • Consultez la communauté du projet et obtenez les commentaires d'autres utilisateurs qui ont l'expérience du contrat. Les escrocs évitent souvent les discussions publiques.

  • Lorsque vous travaillez avec des contrats, utilisez des programmes et des outils de portefeuille bien connus qui offrent des fonctions supplémentaires de sécurité et de protection des transactions.

  • Soyez prudent lorsque vous traitez avec des contrats nouveaux et non éprouvés, en particulier ceux qui promettent des rendements élevés ou qui présentent un comportement inhabituel.

  • Si quelque chose dans le contrat semble trop beau pour être vrai ou est suspect, faites confiance à votre intuition et évitez-le.

  • Se tenir au courant des derniers développements dans notre communauté (chaîne Telegram) et des meilleures pratiques en matière de détection des fraudes (notre Blog et notre chaîne YouTube).

Le scanner de sécurité de Lotus Market trouve toutes les fonctionnalités de contrôle externe (Proxy) courantes (y compris cachées). Utilisez notre abonnement premium et protégez vos fonds contre les menaces.


Voici des exemples de signaux d'alerte courants et de schémas suspects que vous devez rechercher lorsque vous examinez des contrats intelligents afin d'identifier des fonctionnalités potentiellement malveillantes. Il est important de comprendre ces signes pour se protéger et protéger les autres contre une fraude potentielle. Examinons quelques variantes de motifs de code et des conseils pour vous aider à identifier une fonctionnalité suspecte dans un contrat intelligent :

La règle principale est que si le code d'un contrat contient un appel de fonctions Call, CallCode ou DelegateCall, cela signifie que le contrat appelle un code externe et lui transmet le contrôle de ses données.

tips around proxy

Examinons les principaux exemples d'utilisation des contrats Proxy.

1. Variables de stockage non initialisées.

L'une des vulnérabilités les plus courantes dans les contrats proxy est la mauvaise utilisation des variables de stockage. Lorsqu'un contrat proxy est utilisé avec DelegateCall pour appeler des fonctions sur un contrat d'implémentation, les variables de stockage du contrat proxy sont modifiées. Cependant, si le stockage du contrat proxy a des valeurs non initialisées ou des valeurs par défaut, cela peut conduire à un comportement inattendu.


  contract Implementation {
    address public owner;

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

Dans cet exemple, si la variable owner du contrat Proxy n'est pas initialisée, l'appel à owner() sur le contrat proxy renverra la variable owner du contrat d'implémentation, ce qui peut ne pas correspondre aux attentes de l'utilisateur.

2. Appels externes non vérifiés.

Les contrats frauduleux peuvent utiliser des appels externes à des contrats non fiables sans vérifications appropriées. Si un contrat proxy invoque directement ou indirectement un contrat malveillant via DelegateCall, le contrat malveillant peut effectuer des actions arbitraires, y compris des attaques de réentrance, sans garanties appropriées.


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

Si un utilisateur envoie un contrat arbitraire et des données malveillantes en tant qu'adresse cible, cela peut entraîner l'exécution d'actions non autorisées au nom de l'utilisateur.

3. Contrôle d'accès inapproprié.

Les contrats frauduleux peuvent avoir des contrôles d'accès inappropriés, permettant à des utilisateurs non autorisés d'exécuter des fonctions administratives. Lors de l'utilisation d'un contrat de substitution, il convient de contrôler soigneusement qui est autorisé à mettre à jour le contrat d'exécution. Le non-respect de cette règle peut entraîner des modifications non autorisées du comportement du contrat.


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

Dans cet exemple, si l'adresse du propriétaire n'est pas correctement contrôlée ou s'il n'y a pas de contrôle sur les personnes qui peuvent invoquer la fonction de mise à jour, des parties non autorisées peuvent modifier l'implémentation en un contrat malveillant.

4. Risques liés aux versions et à la gestion.

Les contrats proxy utilisent souvent des mécanismes de version et de gestion pour mettre à jour la logique du contrat. Si ces mécanismes ne sont pas mis en œuvre de manière sécurisée, ils peuvent devenir vulnérables aux attaques ou aux manipulations par des parties malveillantes.


  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;
    }
}

Dans ce cas, l'attaquant peut proposer un nouveau contrat "propre", puis effectuer immédiatement des mises à jour, mettant ainsi son code malveillant en service.

tips around proxy

À quoi dois-je faire attention lorsque j'étudie les contrats Proxy et quelles menaces représentent-ils ?

  1. Transfert non autorisé de fonds :
    L'un des moyens les plus courants utilisés par les fraudeurs pour voler de l'argent consiste à transférer des fonds du titulaire du contrat à lui-même ou à une autre adresse sans autorisation.

  2. Portes dérobées cachées:
    Les fraudeurs peuvent cacher des codes malveillants dans les contrats proxy. Les fraudeurs peuvent dissimuler des codes malveillants derrière des noms de fonctions obfusqués ou trompeurs, ce qui rend difficile la détection de leurs véritables intentions par les utilisateurs. Noms de fonctions peu clairs ou trompeurs. Opérateurs conditionnels accordant des privilèges spéciaux à certaines adresses.

  3. Faux jetons et échanges:
    Les escrocs créent souvent de faux jetons ou de fausses plateformes d'échange pour inciter les utilisateurs à transférer leurs actifs vers un contrat malveillant. Faites attention aux contrats de jetons dont le comportement est suspect, comme la frappe de jetons illimités ou l'acceptation de transferts non autorisés.

  4. Fonctions d'émission ou de transfert de propriété non autorisées:
    . Un contrat externe peut modifier le détenteur du jeton ou déclencher une nouvelle émission, ce qui entraîne une inflation du prix.

  5. Documentation trompeuse ou commentaires incompatibles avec le comportement du code:
    . Les fraudeurs peuvent fournir une documentation ou des commentaires trompeurs ou inexacts dans leur code afin d'induire les utilisateurs en erreur quant à la véritable fonctionnalité du contrat. Vérifiez toujours la documentation avec le comportement réel du code.

  6. L'absence d'inspections de sécurité:
    Méfiez-vous des contrats qui manquent de vérifications de sécurité appropriées, de contrôles d'accès, ou qui ne mettent pas en œuvre de protections contre les vulnérabilités courantes telles que la réentrance. Lorsque vous envisagez d'utiliser un contrat intelligent, examinez toujours le code, recherchez des conceptions transparentes et bien documentées, vérifiez les audits de sécurité externes et étudiez les commentaires de la communauté. En outre, soyez prudent lorsque vous interagissez avec des contrats qui présentent l'un de ces attributs, car ils peuvent être conçus pour voler des fonds ou effectuer d'autres activités malveillantes.

  7. Expressions conditionnelles complexes :
    Les fraudeurs peuvent utiliser des expressions conditionnelles complexes ou une logique difficile à suivre, ce qui rend difficile la compréhension de la véritable fonctionnalité du contrat. Recherchez un code inutilement alambiqué : une logique excessivement complexe ou peu claire, et des termes et conditions sans rapport avec l'objet du contrat.

  8. Des schémas de gestion et de propriété peu clairs (Propriété):
    Les fraudeurs utilisent souvent des contrats de substitution dont les mécanismes de gouvernance ne sont pas clairs ou dont les structures de propriété sont cachées, ce qui rend difficile pour les utilisateurs de déterminer qui contrôle le contrat.

  9. Imitation de projets connus:
    Les escrocs créent souvent des contrats qui imitent la fonctionnalité ou l'apparence de projets connus et légitimes. Vérifiez toujours l'authenticité du projet et assurez-vous qu'il ne s'agit pas d'un faux. Faites attention aux différences mineures dans les noms, les logos ou l'image de marque. Les projets qui prétendent être officiels mais qui ne sont pas validés correctement.

  10. Déploiement précipité ou anonyme:
    Les fraudeurs peuvent déployer des contrats à la hâte, sans identification claire et avec un minimum d'informations sur le projet ou ses développeurs. Faites attention aux contrats déployés sans diligence ni planification, publiés par une équipe inconnue.

  11. L'absence de vérification ou d'audit public:
    . Si le contrat n'offre pas d'examen public du code source ou n'a pas fait l'objet d'un audit de sécurité par un tiers, vous devez l'aborder avec une extrême prudence.

  12. Stockage de données inhabituel ou caché:
    . Les fraudeurs peuvent utiliser des schémas de stockage de données non conventionnels ou furtifs pour masquer une fonctionnalité malveillante. Notez que les données peuvent être stockées à des endroits inattendus dans le contrat.

  13. Pools de liquidités contrefaits :
    Dans le cas des projets DeFi, il convient de se méfier des pools de liquidités qui promettent des rendements élevés. Les fraudeurs peuvent créer de faux pools pour attirer des liquidités et exploiter ensuite les utilisateurs. Revenus élevés et irréguliers provenant de la fourniture de liquidités. Manque de transparence et de documentation sur le mécanisme de fonctionnement du pool.

tips around proxy

Pour se protéger contre ces vulnérabilités, les contrats utilisant des modèles de proxy et DelegateCall doivent être soigneusement examinés et audités, des mécanismes de contrôle d'accès doivent être mis en œuvre, et les appels externes doivent être sécurisés. Les utilisateurs doivent faire preuve de prudence lorsqu'ils interagissent avec des contrats, en particulier ceux qui comportent des mécanismes de mise à jour complexes, et doivent toujours faire preuve de diligence raisonnable avant d'interagir avec un contrat intelligent sur la blockchain.

Dans le monde en évolution rapide de la blockchain, il est impératif de rester vigilant et informé pour vous protéger, vous et vos actifs, contre les schémas frauduleux potentiels et les vulnérabilités liées aux contrats proxy et aux fonctionnalités de DelegateCall.


Nous espérons que ces informations vous ont aidé à mieux comprendre les schémas de contrats intelligents gérés (Proxy).


Dans la mesure où toutes les informations de la blockchain sont ouvertes (à condition, bien sûr, que le code source du contrat soit vérifié), armé de ces connaissances, vous pouvez étudier de manière indépendante les contrats intelligents et identifier les différents schémas d'escroquerie.

Toutefois, nous avons déjà fait tout cela pour vous ! Souscrivez à un abonnement premium et accédez à des filtres exclusifs sur les caractéristiques des smart contracts et à des analyses fraîches. Augmentez vos chances d'investir avec succès dans des jetons rentables.

Regards, Lotus Market team.

All posts

Connect to a wallet

Metamask