Le 16 octobre 2026 à 15h56 UTC, Alex Shevchenko, contributeur de NEAR Intents, a publié une analyse post-mortem concernant un exploit de contrat survenu le 1er octobre. Cet incident a généré un manque de fonds internes non soutenus de 3,8M$. L’attaquant a pu retirer le même montant via l’infrastructure Omni du protocole. NEAR Intents a annoncé que la totalité des fonds avait été restituée en moins de 36 heures après la détection de l'incident, et que tous les utilisateurs touchés ont été indemnisés.
### L'origine de l'écart comptable
L’exploit a tiré parti d’une fonctionnalité de dépôt qui faisait appel à des contrats tiers sur NEAR. Un attaquant a déployé un contrat récepteur qui a rendu ces appels de notification échoués. Par conséquent, le contrat de jeton a remboursé les jetons déposés, tandis que le contrat NEAR Intents a conservé son enregistrement du dépôt. Les entrées résultantes sont alors qualifiées de « fonds fantômes » dans l'analyse post-mortem.
L'attaquant a répété l'échec à travers 23 transactions de dépôt. Ces transactions ont entraîné un comportement du registre de NEAR Intents qui montrait un montant de 3,8M$ supérieur au solde du contrat de jetons. Comme le solde de jetons disponible était suffisant pour couvrir le crédit interne de l'attaquant, celui-ci a pu retirer 3,8M$ et les faire passer à une chaîne étrangère via Omni.
NEAR Intents a structuré ses actifs sur trois lieux comptables distincts. Les jetons restent garantis sur leurs chaînes d'origine, des jetons correspondants existent sur NEAR, et une partie des jetons côté NEAR est conservée dans le contrat Intents pour les règlements. D'autres comptes NEAR peuvent absorber le reste.
Le rappel échoué a rompu la relation entre les deux derniers emplacements. Le contrat de jetons a inversé le dépôt après l’échec de l’appel au destinataire, mais le registre d’Intents n’a pas inversé le montant crédité de l’utilisateur. Selon le rapport post-mortem, les contrats de jetons côté NEAR comptabilisaient X actifs, tandis que le contrat Intents détenait en réalité un montant plus faible, Y. Son registre interne se comportait donc comme s’il détenait Y plus 3,8M$.
### Détection, pause et récupération des fonds
La détection du problème a eu lieu le 1er octobre à 08h04 UTC, et l'équipe a mis le contrat Intents en pause à 08h33 UTC. Le frontend de near.com est entré en mode maintenance à 08h40 UTC.
Le contrat a repris du service à 11h20 UTC, bien que certaines routes affectées soient restées en pause et aient été progressivement rétablies dans les jours suivants. NEAR Intents a expliqué que des investigations approfondies, une analyse de la chaîne publique, des recherches en sécurité, ainsi que des négociations avec l'attaquant ont permis le retour de tous les fonds le 2 octobre. La solution a été mise en œuvre à 20h31 UTC ce même jour et les dépôts côté contrat ont été déverrouillés à 20h38 UTC.
Le rapport a également abordé une lacune dans la surveillance des systèmes. Les systèmes existants comparaissaient les actifs sur les chaînes d’origine avec les soldes totaux de jetons correspondants sur NEAR, mais ne vérifiaient pas les soldes globaux attribués aux utilisateurs de Intents par rapport au solde de jetons détenu par le contrat Intents lui-même. Cette omission a permis à l'attaquant de répéter la transaction échouée pendant plusieurs jours avant que des problèmes de retrait ne se manifestent.
### Les modifications apportées et la suppression de la fonctionnalité
NEAR Intents a supprimé les notifications de dépôt après un rapport critique reçu le 7 octobre. L’équipe a reconnu que cette fonctionnalité avait un historique de rapports faisant état d’un écart entre ses deux étapes. En réponse, elle a payé 300 000 $ à un chercheur ayant soumis le dernier rapport via son programme de primes aux bugs, qui offre jusqu’à 300 000 $ pour des découvertes critiques.
Un nouveau contrôle suit désormais le solde total des utilisateurs Intents par rapport au solde de jetons du contrat. Si cet invariant échoue, le contrat se met automatiquement en pause. Ce changement modifie le mode d'échec pour les utilisateurs : une incohérence doit arrêter le contrat au lieu de rester disponible pour des dépôts répétés suivis de retraits.
La réponse a également séparé une pause globale du contrat des contrôles à niveau de route. Pendant l’incident, l’équipe a réactivé le contrat tandis que les routes affectées restaient indisponibles. Un échec d'invariant automatique pourrait également interrompre l'accès pendant que les opérateurs enquêtent sur le décalage. En outre, les bâtisseurs perdent la fonctionnalité de rappel de dépôt supprimée, qui alertait un contrat destinataire lors d’un dépôt. Le chemin plus sûr élimine la double interaction qui produisait le crédit erroné.
### Exploration de la sécurité et développement futur
NEAR Intents travaille également sur une vérification formelle ainsi que le développement ultérieur de SHIELD, sa couche de sécurité. Le rapport post-mortem ne précise pas de jalon daté pour ces efforts, mais la prochaine vérification pour les déposants et intégrateurs consistera à tester si ce nouvel invariant attrape les différences de comptabilité sur chaque chemin de jeton soutenu, sans engendrer de pauses inutiles.
En somme, cette série d'événements a mis en lumière les enjeux de sécurité au sein des protocoles DeFi. NEAR Intents, bien que touché par cet incident, a rapidement agi pour corriger les failles et renforcer la sécurité de sa plateforme, optimisant ainsi le pilotage de son infrastructure pour éviter d'éventuels problèmes futurs.