L'essor de la finance décentralisée (DeFi) et des jetons non fongibles (NFT) a créé une nouvelle ère de souveraineté des actifs numériques. Cependant, derrière le vernis transparent de la technologie blockchain, une bataille silencieuse fait rage entre la décentralisation idéale et le contrôle centralisé des développeurs. Le concept de « propriétaire caché » représente aujourd'hui l'un des plus grands défis de sécurité, où des mécanismes de gouvernance privilégiés sont intelligemment installés pour maintenir le contrôle ultime même lorsque le projet prétend avoir renoncé à la propriété. Une analyse approfondie de l'architecture des contrats intelligents modernes montre que la propriété n'est plus un simple état binaire, mais un éventail complexe de rôles administratifs, de droits de mise à niveau et de portes dérobées logiques subtilement déguisées.
La contradiction entre l'immuabilité et la nécessité d'un contrôle de gouvernance
Dans l'écosystème Ethereum et les chaînes compatibles avec les machines virtuelles Ethereum (EVM), l'immuabilité du code source est souvent considérée comme un obstacle à l'intervention humaine. Une fois un contrat déployé, son code logique est gravé en permanence sur le registre de la blockchain. Cependant, la réalité opérationnelle exige que les développeurs soient capables de corriger des erreurs, de mettre à jour des fonctionnalités ou d'intervenir dans des situations d'urgence comme une attaque. De ce besoin légitime sont nés des modèles de conception qui permettent de maintenir le contrôle, mais qui créent également un espace de manipulation et d'appropriation des actifs s'ils ne sont pas étroitement surveillés.
Selon les experts de Tan Phat Digital, le concept de « propriétaire caché » ne fait pas seulement référence à un individu spécifique mais également à toute entité qui détient les « clés universelles » du système. Cela va des comptes d'entités externes uniques (EOA) aux mécanismes de gouvernance multi-signatures (Multisig) ou aux DAO dotés de pouvoirs pour interférer avec la logique de base du contrat.
Classification du niveau de maturité du système de contrôle d'accès
Pour évaluer le risque d'un « propriétaire caché », Tan Phat Digital compile un cadre d'évaluation de la maturité du contrôle d'accès basé sur des variables communes des normes de sécurité de la blockchain :
Niveau 1 : EOA unique (hautement Exposé)
Caractéristiques de conception : un seul portefeuille individuel détient tous les droits
onlyOwner.Risque caché du propriétaire : extrêmement élevé. Il s'agit d'une faiblesse fatale si la clé privée est exposée ou si le développeur a l'intention de commettre une fraude.
Niveau 2 : Multisig centralisé (atténuation de base)
Fonctionnalité de conception : le pouvoir est partagé entre un groupe de portefeuilles (par exemple, modèle de signature 3/5).
Risque caché du propriétaire : moyen à élevé. Le système est toujours susceptible d'être manipulé si les portefeuilles des membres appartiennent au même groupe d'intérêt.
Niveau 3 : Timelock et séparation des rôles (contrôles améliorés)
Fonctionnalités de conception : appliquez un délai pour toutes les modifications (Timelock) et séparez clairement les rôles tels que Minter, Admin, Pauser.
Risques cachés pour le propriétaire : faibles à moyens. La communauté a le temps de réagir et de tester avant que les changements ne prennent effet.
Niveau 4 : Immuabilité radicale (The Endgame)
Fonctionnalités de conception : Supprimez complètement tous les droits d'administration après le déploiement ; Le code source ne peut en aucun cas être modifié.
Risque caché du propriétaire : aucun. Cependant, ce niveau nécessite l'achèvement absolu du code source avant le lancement car les erreurs ne peuvent pas être corrigées par la suite.
Le passage du niveau 1 au niveau 4 est le seul moyen d'éliminer complètement les risques du "Propriétaire caché", mais il nécessite également un compromis en termes de flexibilité et de réponse aux erreurs techniques qui surviennent après le déploiement.
Voir aussi : Qu'est-ce que l'audit de contrat intelligent ?
Architecture de proxy et illusion d'immuabilité du code source
Dans les techniques de maintien du contrôle, le modèle de proxy est l'outil le plus puissant et le plus populaire. Il permet aux développeurs de modifier complètement le comportement d'un contrat à une adresse fixe, créant une « illusion de mutabilité » grâce à la séparation de la logique d'état et de traitement. Le contrat Proxy agit comme une passerelle de communication unique pour l'utilisateur, mais il délègue l'exécution à un contrat logique (implémentation) via le code DELEGATECALL.
Mécanisme DELEGATECALL et risques contextuels
Le code DELEGATECALL permet au Proxy d'exécuter le code de l'Implémentation mais dans le contexte mémoire (stockage) du Proxy. Cela signifie que les variables d'état, le solde Ether et la propriété résident toutes dans le proxy, tandis que les règles de calcul résident dans l'implémentation.
La formule de calcul de l'emplacement de stockage EIP-1967 pour éviter les collisions de données est généralement définie comme suit :

L'utilisation de ces emplacements de hachage aléatoires permet d'empêcher la variable implémentation du proxy d'écraser les variables métier dans l'implémentation. Cependant, Tan Phat Digital note que si les développeurs créent intentionnellement des « collisions de stockage », ils peuvent manipuler des adresses logiques pour pointer vers des contrats contenant du code malveillant afin de retirer les fonds des utilisateurs.
Détails des modèles de proxy populaires et des privilèges administratifs
Modèle de proxy transparent
Mise à niveau de l'emplacement de la fonction : située dans le contrat de proxy.
Mécanisme de contrôle : uniquement l'adresse administrateur a le droit d'exécuter les fonctions de mise à niveau ; Les appels des utilisateurs normaux seront toujours redirigés vers le contrat logique.
Évaluation de la sécurité : les conflits de sélection de fonctions sont évités, mais le coût du gaz est plus élevé car le système doit vérifier
msg.senderen permanence.
Modèle UUPS (EIP-1822)
Mise à niveau de l'emplacement de la fonction : directement situé au niveau du contrat logique. Contrat de mise en œuvre.
Mécanisme de contrôle : la logique de mise à niveau est héritée dans la mise en œuvre à des fins d'optimisation.
Évaluation de la sécurité : économe en gaz, mais il existe un risque que le système soit définitivement « maçonné » si la nouvelle mise à niveau ne dispose pas de la logique nécessaire pour effectuer les mises à niveau ultérieures.
Modèle de balise Proxy
- Modèle de diamant (EIP-2535)
Emplacement de la fonction de mise à niveau : structure des fragments (facettes).
Mécanisme de contrôle : gestion détaillée de la mise à niveau pour chaque fonction (sélecteurs de fonctions).
Évaluation de la sécurité : offre une flexibilité maximale, mais cette architecture est extrêmement complexe, ce qui rend difficile l'audit et la gestion du jeu de rôles.
En savoir plus : Pourquoi le portefeuille perd-il toujours de l'argent même sans révéler la clé privée ?
Matrice d'autorité : AccessControl et DEFAULT_ADMIN_ROLE
En plus du proxy mécanismes, abuser des bibliothèques de gestion des accès telles que Ownable ou AccessControl est une manière courante d'installer des "propriétaires cachés". Alors que la plupart des investisseurs ne vérifient que la simple variable owner, les développeurs sophistiqués utilisent un système d'autorisation multi-niveaux (RBAC).
DEFAULT_ADMIN_ROLE Supremacy
Dans la bibliothèque AccessControl, le rôle DEFAULT_ADMIN_ROLE (généralement le code de hachage 0x00) confère l'autorité. absolu :
Accorder (accorder) ou révoquer (révoquer) tout autre rôle dans le système, y compris les droits d'activation (Minter) ou de pause (Pauser).
Modifier les paramètres sensibles tels que l'adresse payante, la source de données Oracle ou les paramètres de risque.
Possibilité de modifier le "rôle d'administrateur" d'autres rôles via
_setRoleAdminfonction.
Tan Phat Digital prévient : même si un développeur exerce une "renonciation à la propriété" sur un contrat, il peut toujours garder le contrôle si un rôle d'administrateur caché existe toujours dans la logique de ce contrat.
Analysez la logique du "Propriétaire" cachée" via des modificateurs déguisés
Pour masquer leurs intentions de contrôle, les développeurs utilisent souvent des modificateurs neutres. noms :
onlyManager: souvent expliqué comme servant des opérations techniques, mais peut en réalité se voir accorder des droits de retrait.onlyCFOouonlyVaultAdmin: déguisant le droit d'intervenir dans la liquidité au nom de la gestion financière.autorisé: un modificateur qui permet à n'importe quelle adresse de la liste blanche du développeur d'exécuter des privilèges commandes.
Techniques de porte dérobée et astuces de programmation qui cachent la logique
Un véritable « propriétaire caché » installe souvent des conditions de déclenchement cachées au plus profond du code source qui a été obscurci ou utilise des noms de fonctions trompeurs.
L'art de tromper les noms (dénomination trompeuse)
Tan Phat Digital a compilé des modèles de dénomination de fonctions que l'on trouve couramment dans les contrats avec des portes dérobées :
Fonction safeWithdraw()
Logique réelle : exécuter un ordre pour transférer la totalité du solde du contrat vers le portefeuille du propriétaire.
Objectif : retirer tout l'argent (Rug Pull) sous le couvert d'une fonction de retrait sécurisé.
Fonction UpdateLibrary()
Logique réelle : modifier le
variable d'implémentationpour pointer vers une nouvelle adresse.Objectif : mettre à niveau silencieusement le contrat vers une version malveillante.
Fonction syncBalance()
Logique réelle : définir le solde de
msg.senderà zéro.Objectif : geler ou effacer le les actifs de l'utilisateur dans le système.
Fonction d'urgenceRefund()
Logique réelle : appelez la commande
selfdestruct(owner). Le propriétaire manipule les contrats à distance via des attaques de phishing par proxy. De plus, les conditions d'activation basées sur un délai ou un numéro de blocage aident la porte dérobée à ne se « réveiller » qu'une fois que le projet a fonctionné de manière stable et accumulé suffisamment liquidité.Vol de liquidité d'appropriation : Les développeurs retirent tous les actifs sous-jacents (ETH/USDT) des pools de liquidité en utilisant des fonctions privilégiées, rendant les jetons des utilisateurs plus échangeables.
Gel des échanges (Honeypot) : Les utilisateurs peuvent uniquement acheter, mais ne peuvent pas vendre, car le code source contenant la logique de liste noire (
isBlacklisted) est activé de manière sélective.Monnaie illimitée : L'autorisation cachée
MINTER_ROLEpermet de créer d'énormes quantités de jetons à vendre, diluant complètement la valeur des actifs des investisseurs.Vérifiez l'état de vérification : N'interagissez absolument pas avec des contrats qui affichent uniquement le bytecode sans code source vérifié (coche verte) Avec Proxy, vous devez vérifier attentivement le contrat de mise en œuvre. derrière.
Traçage des rôles privilégiés : Utilisez
Ctrl + Fpour rechercher :owner,admin,DEFAULT_ADMIN_ROLE,minter,onlyOwner,onlyAdmin.Vérifiez les éléments dangereux. fonctions : Portez une attention particulière à
selfdestruct,delegatecalletupgradeTo.Suivez les événements administratifs : Vérifiez l'onglet "Événements" pour les événements
OwnershipTransferredSi le propriétaire prétend avoir renoncé à ses droits, confirmez si la nouvelle adresse est une adresse "brûlée" (0x... morte) ou. non.Qu'est-ce qu'un propriétaire caché ? Il s'agit d'une technique de programmation qui permet aux développeurs de conserver un contrôle ultime sur les contrats intelligents (comme le retrait de fonds, l'arrêt de transactions) via des rôles d'administrateur cachés ou un retour logique. portes, même s'ils annoncent le projet comme complètement décentralisé.
Pourquoi les développeurs ont-ils besoin d'un propriétaire caché ? Hormis à des fins frauduleuses (rug pull), les développeurs installent parfois pour des corrections de bugs urgentes ou des mises à jour de fonctionnalités. Cependant, sans Timelock ou Multisig, il s'agit d'un énorme risque de concentration.
Le renoncement à la propriété est-il vraiment sûr ? Pas du tout. Les développeurs peuvent appeler la fonction d'abandon du portefeuille
propriétaire, mais conservent toujours l'autorité via des rôles d'administrateur cachés dans la bibliothèqueAccessControlou des autorisations de mise à niveau du proxy.Comment savoir si un contrat est un proxy malveillant ? Vérifiez sur Etherscan pour voir si l'adresse de « mise en œuvre » peut être modifiée par un seul portefeuille EOA. Si le développeur peut passer à n'importe quelle logique sans préavis, c'est risqué.
À quel point DEFAULT_ADMIN_ROLE est-il dangereux ? Il s'agit du « pouvoir ultime » de la norme AccessControl. La personne détenant ce rôle peut accorder n'importe quelle autorisation (telle que des droits de frappe) à un nouveau portefeuille, même si d'autres autorisations sont verrouillées.
Qu'est-ce que l'erreur « Ghost State » ? Il s'agit du phénomène selon lequel d'anciennes données existent toujours en stockage après le nettoyage du contrat (comme l'incident Yearn yETH en 2025). Un attaquant peut tirer parti de ces données « fantômes » pour créer une énorme quantité de jetons à un coût extrêmement faible.
Pourquoi
tx.originest-il considéré comme le signe d'une porte dérobée ? L'utilisation detx.originau lieu demsg.senderpour authentifier les droits d'administrateur permet aux développeurs de tromper les utilisateurs (ou les administrateurs eux-mêmes) interagir avec un temps de contrat neutre pour détourner l'exécution de fonctions sensibles.Comment fonctionne "Deceptive Naming" dans Rug Pull ? Le développeur nomme la fonction pour paraître sûre comme
safeWithdraw()ouemergencyRefund()mais à l'intérieur il contient du code qui transfère tous les fonds vers un portefeuille personnel ou annule automatiquement le contrat.Comment identifier les non initialisés Proxy ? Vérifiez l'onglet "Lire le contrat" sur Etherscan ; Si des variables comme
ownerouadminsont à l'adresse0x00..., un attaquant (ou le développeur lui-même) peut appeler la fonction constructeur pour prendre le relais à tout moment.L'autodestruction peut-elle être utilisée comme une porte dérobée ? Oui. Une fonction contenant
selfdestructpermet aux développeurs de détruire toute la logique du contrat et de drainer l'Ether qu'il contient vers une adresse prédéterminée, provoquant le gel permanent des actifs de l'utilisateur.Comment Timelock protège-t-il les investisseurs ? Timelock crée un délai (par exemple 48 heures) pour chaque commande d'administrateur. Cela donne à la communauté le temps de tester la mise à niveau et de retirer rapidement de l'argent si des signes inhabituels sont détectés.
Des signes permettant d'identifier un projet comme un pot de miel ? Le contrat contient une logique qui autorise uniquement l'achat mais pas la vente, généralement cachée dans la fonction
_transferavec des conditions de vérification de liste blanche ou des frais de vente de 100 %.4 Quel est le niveau de maturité de la gouvernance ? Comprend : Niveau 1 (EOA unique - risque extrême), niveau 2 (Multisig - risque moyen), niveau 3 (Timelock & Role Decomposition - sécurisé) et niveau 4 (complètement immuable - absolument sécurisé).
Quel outil est le meilleur pour analyser le propriétaire caché ? Tan Phat Digital recommande d'utiliser une combinaison de TokenSniffer et GoPlus Security pour une analyse rapide et facile. Glissez pour une analyse statique plus approfondie si vous avez des connaissances techniques.
Pourquoi les contrats vérifiés (cochés en vert) sont-ils toujours Rug Pulled ? Parce que les développeurs peuvent créer des liens vers des bibliothèques externes qui ne sont pas vérifiées (comme dans le cas de StableMagnet) ou effectuer une mise à niveau silencieuse du proxy une fois que l'utilisateur leur a fait confiance.
Économie de la fraude : Rug Pull et mécanismes d'appropriation
Tan Phat Digital analyse les trois formes d'appropriation les plus courantes de la part des « propriétaires cachés » :
Processus médico-légal : comment pour détecter le "propriétaire caché" sur Etherscan
Pour protéger les actifs, Tan Phat Digital Nous recommandons le processus d'inspection suivant "vérifier les feuilles et trouver le ver" :
15 questions fréquemment posées sur le propriétaire caché (FAQ)
Vous trouverez ci-dessous les réponses détaillées de Tan Phat Digital aux questions courantes sur le mécanisme de propriétaire caché :
Méfiez-vous de la "fausse décentralisation"
Le concept de "Propriétaire caché" est un rappel que dans ce monde Dans le monde du Web3, le code source n'est véritablement une loi que si les humains ne détiennent pas les clés pour changer unilatéralement cette loi. La présence de privilèges d'administrateur cachés crée un risque de centralisation important.
Tan Phat Digital estime que ce n'est que lorsque le contrôle absolu des développeurs sera remplacé par des mécanismes de gouvernance transparents et limités dans le temps (Timelock) et un consensus communautaire que les projets blockchain atteindront véritablement leur valeur fondamentale : la confiance sans délégation. Ne croyez jamais les promesses sur les réseaux sociaux ; faites confiance à ce que le code exécute réellement sur la chaîne.
Partager








