Capitalisation 2,74 T $ −6,17 % sur 24 heuresVolume 24 h 80,85 Md $Dominance BTC 59,5 %ETH 10,6 %Fear & Greed 68 AviditéCryptos 22 442

Piratage de NEAR Intents : le post-mortem accuse un bug de « notification » des dépôts, pas le pont Omni

NEAR Intents : selon le post-mortem du 16 octobre, un bug du contrat, pas le pont Omni, a créé 3,8 M$ de fonds fantômes, tous restitués depuis.

17 min de lecture

Illustration d'un bug, de piles de pièces, d'une silhouette encapuchonnée, d'une chaîne brisée et d'un panneau d'alerte
Sommaire
  1. Post-mortem de NEAR Intents : un bug du contrat, pas du bridge Omni
  2. Comment 23 dépôts ratés ont créé 3,8 millions de dollars de fonds fantômes
  3. Chronologie du piratage NEAR Intents, de janvier au 7 octobre
  4. Pourquoi la surveillance n’a rien vu pendant 37 heures
  5. « Nous vous avons identifié, monsieur » : comment les 3,8 millions de dollars sont revenus
  6. Le piratage en chiffres
  7. Fin des dépôts avec notification : ce qui a changé dans le code
  8. Une prime de 300 000 dollars, et un point faible connu depuis janvier
  9. Le routeur de swaps qui bloquait l’argent de Bitget, puis s’est fait vider
  10. NEAR Intents, swap et bridge : à quoi sert le service et quel volume il traite
  11. Ce qui change pour les utilisateurs de NEAR Intents en France
  12. Questions ouvertes et prochaines étapes

NEAR Intents, le système d’échange inter-chaînes bâti sur NEAR Protocol, a publié le post-mortem du piratage qui lui a coûté environ 3,8 millions de dollars entre le 29 septembre et le 1er octobre 2026, et ce texte contredit la première version des faits. Dans un billet publié sur X le 16 octobre à 15 h 56 UTC, son directeur général Alex Shevchenko explique que l’attaquant a détourné une fonction de « notification » des dépôts du contrat intents.near : 23 dépôts conçus pour échouer ont créé environ 3,8 millions de dollars de ce qu’blockchain that runs exactly as written when it is called, holding and moving funds according to its code, without an intermediary able to change the outcome.">smart contract holding reserves of two or more tokens, supplied by users, that a decentralized exchange uses to execute trades automatically at a price set by a formula.">pool diverge, compared with simply holding the same tokens in a wallet. It becomes permanent when the provider withdraws.">il appelle des « fonds fantômes », ensuite retirés vers d’autres blockchains. La totalité de l’argent est revenue le 2 octobre. La fonction a été supprimée.

Ce qui change, c’est l’explication. Selon le post-mortem, la faille se trouvait dans le contrat NEAR Intents lui-même, et non dans le pont Omni que l’équipe avait mis en cause le 1er octobre. Le document reconnaît aussi que la surveillance n’a rien vu pendant environ 37 heures, et que cette même fonction avait déjà fait l’objet d’un signalement de bug en janvier. Un second rapport critique, déposé le 7 octobre, a valu à son auteur une prime de 300 000 dollars avant que l’équipe ne retire le code.

L’attaquant n’a pas été nommé. L’équipe affirme l’avoir identifié en moins d’une journée et avoir récupéré les fonds après un ultimatum public, sans expliquer comment.

Post-mortem de NEAR Intents : un bug du contrat, pas du bridge Omni

La première version est tombée vite. Le 1er octobre à 12 h 53 UTC, le compte @near_intents annonçait l’arrêt des services après un incident causé par « un bug dans l’interaction entre l’infrastructure de dépôt et de retrait Omni et le smart contract NEAR Intents ». Il chiffrait la perte provisoire à environ 3,8 millions de dollars, promettait que les utilisateurs seraient « intégralement indemnisés » et indiquait que la faille côté contrat était corrigée. Les dépôts et retraits sont restés coupés environ 12 heures de plus sur 11 réseaux : BSC, Polygon, TON, Optimism, Avalanche, Stellar, Monad, LayerX, Adi, Scroll et Plasma.

Trois heures plus tard, Illia Polosukhin, cofondateur de NEAR, allait plus loin. Il écrivait sur X que le bug était « limité à l’USDT sur BSC », corrigé moins d’une heure après sa détection, et que le cœur de NEAR Protocol, le jeton NEAR et les autres applications n’étaient pas touchés.

Le texte du 16 octobre place la frontière ailleurs. « C’était un bug du contrat NEAR Intents, pas un bug de l’infrastructure Omni », écrit Alex Shevchenko. Omni, la couche de pont qui fait circuler les actifs entre NEAR et les autres blockchains, n’a fait que transporter les retraits. Le post-mortem ne nomme pas le jeton utilisé pour les 23 dépôts et ne reprend pas la mention de l’USDT sur BSC.

L’ancienne lecture survit dans les bases de données. Au 17 octobre, la liste des piratages de DefiLlama classe toujours l’incident dans la catégorie « Bridge & Cross-Chain », avec BSC comme blockchain et « Bridge Logic Flaw » (faille logique de pont) comme technique, et son champ consacré aux fonds restitués est vide. Cette fiche est antérieure au post-mortem.

Comment 23 dépôts ratés ont créé 3,8 millions de dollars de fonds fantômes

Le post-mortem part de trois soldes distincts que le système suit : les jetons sur la blockchain d’origine (BSC, par exemple), ces mêmes jetons représentés sur NEAR Protocol, et les soldes que les utilisateurs détiennent à l’intérieur du contrat intents.near. Un dépôt fait passer des jetons de la deuxième couche à la troisième.

Les jetons fongibles de NEAR acceptent le « transfer and call » : une seule transaction envoie des jetons à un contrat et lui demande d’en faire quelque chose, là où Ethereum procède en deux temps, autorisation puis appel. Le hic, c’est que l’environnement d’exécution de NEAR est asynchrone. Un « transfer and call » se découpe en plusieurs étapes exécutées l’une après l’autre, et si une étape tardive échoue, les modifications précédentes ne sont pas annulées automatiquement. Chaque smart contract doit gérer lui-même cet échec, y compris quand une étape tombe à court de gas.

Lors d’un dépôt, intents.near pouvait transmettre une « notification » à un contrat tiers sur NEAR, le destinataire des fonds. L’attaquant a déployé un contrat conçu pour faire échouer ces appels de notification. À chaque échec, le contrat du jeton renvoyait les jetons déposés à l’expéditeur, comme prévu. Le contrat Intents, lui, conservait le dépôt dans ses livres.

Répété 23 fois, ce décalage a produit environ 3,8 millions de dollars de crédit sans aucun jeton derrière. Le registre interne du contrat affichait désormais davantage que son solde réel sur le contrat du jeton, le chiffre balance_of. L’attaquant a alors demandé à retirer. Comme 3,8 millions de dollars restaient inférieurs aux jetons bien réels mis en commun dans le contrat par les autres utilisateurs, les retraits avaient l’air normaux et sont passés par Omni vers une autre blockchain.

Ce sont donc les dépôts des autres utilisateurs qui ont payé ce crédit fantôme jusqu’à ce que l’écart soit repéré. La panne appartient à la même famille que le bug de Pirate Chain qui a créé des ARRR sans contrepartie plus tôt ce mois-ci, même si le mécanisme diffère.

Pourquoi le contrat Intents n’a-t-il pas vu l’échec ? Le post-mortem ne le dit pas précisément : une erreur a pu être ignorée, ou un rappel (callback) a pu manquer de gas. Une analyse indépendante de Vini Barbosa, publiée le 16 octobre sur la newsletter Substack « thecoding », déduit la cause fine des modifications du code. Coindaro ne la considère pas comme établie. Le résumé d’Alex Shevchenko est plus sobre : « La fonction avait un historique de signalements de bugs, tous dans l’intervalle entre ses deux étapes. »

Illustration d'un contrat signé, d'un document, d'un bug et d'une baie de serveurs
L’appel de notification en échec renvoyait les jetons, mais le contrat Intents gardait le dépôt dans ses livres.

Chronologie du piratage NEAR Intents, de janvier au 7 octobre

La chronologie d’Alex Shevchenko donne des heures sans fuseau horaire. Les paiements de restitution qu’elle mentionne correspondent aux horodatages UTC de la blockchain Bitcoin : le tableau ci-dessous les lit donc en UTC.

Date (2026)ÉvénementSource
13 au 15 janv.Signalement via le bug bounty d’une fonction similaire d’appel à un contrat tiers ; corrigé sur le mainnet en 2 jours, non exploitéPost-mortem
Janv. à marsNouveaux renforcements de sécurité intégrésPost-mortem
29 sept., 16 h 14Premier retrait de fonds fantômes via OmniPost-mortem
1er oct., 5 h 54Dernier retrait ; environ 3,8 M$ sortis en quelque 37,7 heuresPost-mortem
1er oct., 8 h 04Problèmes de retrait identifiésPost-mortem
1er oct., 8 h 33 / 8 h 40Contrat mis en pause ; near.com en maintenancePost-mortem
1er oct., 11 h 20 / 14 hContrat réactivé, routes touchées toujours en pause ; near.com de retourPost-mortem
1er oct., 12 h 53 UTCPremière déclaration publique, qui accuse l’interaction entre Omni et le contrat@near_intents
2 oct., 0 h 18 UTCUltimatum « Nous vous avons identifié, monsieur », délai de 48 heuresShevchenko sur X
2 oct., 14 h 31 à 15 h 05 UTC34,59 BTC arrivent sur l’adresse de restitution publiéemempool.space
2 oct., 16 h 15 UTCMessage d’excuses de l’attaquant sur BNB ChainBscScan
2 oct., 20 h 31 / 20 h 38Correctif déployé sur le mainnet ; dépôts réactivés côté contratPost-mortem
7 oct.Nouveau bug critique signalé dans la même fonction ; fonction supprimée le jour mêmePost-mortem, GitHub
16 oct., 15 h 56 UTCPublication du post-mortemShevchenko sur X

Pourquoi la surveillance n’a rien vu pendant 37 heures

Les soldes étaient surveillés. Le dispositif comparait les jetons verrouillés sur chaque blockchain d’origine avec le total des mêmes jetons côté NEAR. Ce contrôle détecte un pont défaillant, quand des jetons apparaissent sur NEAR sans avoir été verrouillés ailleurs.

Il ne comparait pas la somme des soldes des utilisateurs dans le contrat Intents avec les jetons que ce contrat détenait réellement. L’attaque s’est logée tout entière dans cet angle mort. Le pont est resté équilibré du début à la fin, pendant que le registre du contrat grossissait au-delà de ses avoirs.

Le premier retrait est parti le 29 septembre à 16 h 14. Personne ne s’en est aperçu avant le 1er octobre à 8 h 04, soit 2 heures et 10 minutes après le dernier. La réaction a ensuite été rapide : le contrat a été mis en pause 29 minutes plus tard.

L’équipe effectue désormais ce contrôle manquant. D’après le post-mortem, un nouveau moniteur compare le total des soldes des utilisateurs avec le solde en jetons du contrat, et met le contrat en pause automatiquement si les deux divergent.

« Nous vous avons identifié, monsieur » : comment les 3,8 millions de dollars sont revenus

Dans la nuit du 1er au 2 octobre, à 0 h 18 UTC, Alex Shevchenko a adressé un court message à l’attaquant : « Nous vous avons identifié, monsieur » (« We have identified you, sir »). Il y listait des adresses de restitution sur Bitcoin, sur BNB Chain et Ethereum, et sur Solana, et laissait 48 heures pour ce qu’il appelait une « divulgation responsable ».

Selon l’enquêteur on-chain ZachXBT, les fonds volés étaient passés par KuCoin puis avaient été transférés vers Bitcoin, comme l’ont rapporté Cointelegraph et Decrypt à l’époque. Aucun des deux médias n’a obtenu de commentaire de KuCoin, et la plateforme n’a pas dit publiquement si elle avait gelé quoi que ce soit. Coindaro n’a trouvé aucune alerte publique sur l’incident de la part de sociétés de sécurité comme PeckShield, Cyvers ou CertiK ; le traçage de ZachXBT est le seul récit on-chain extérieur.

L’argent a bougé en quelques heures. L’adresse Bitcoin de restitution sur mempool.space affiche quatre paiements le 2 octobre : 5,79441418 BTC à 14 h 31 UTC, 8,67565137 BTC et 11,44807246 BTC à 14 h 45, puis 8,67111231 BTC à 15 h 05. Avec quelques poussières, elle a reçu 34,58927254 BTC au total. Illia Polosukhin a écrit que les fonds étaient revenus « à 14 h 30 UTC aujourd’hui » et que l’auteur avait été identifié « moins de 24 heures après le piratage ». Ni lui ni le post-mortem n’expliquent comment.

Ce bitcoin ne couvrait pas tout. Le chercheur on-chain Kuncoro, cité par Unchained le 5 octobre, l’estimait à environ 78 % de la perte et demandait si le reste était revenu par un autre canal. Alex Shevchenko a répondu que oui, sans préciser comment. L’adresse a été vidée le 14 octobre en deux transactions, à 10 h 56 et 12 h 29 UTC, vers des destinations que Coindaro n’a pas pu identifier. L’équipe n’a pas indiqué si elle les contrôle.

À 15 h 52 UTC, Alex Shevchenko annonçait que les fonds avaient été « intégralement restitués » et que l’enquête était close. « Merci d’utiliser les bug bounties plutôt que de perturber les services », ajoutait-il. Vingt-trois minutes plus tard, un portefeuille sur BNB Chain envoyait 0,0387 BNB à l’adresse de restitution de NEAR Intents, avec un message inscrit dans la transaction : « Nous avons rendu tous les fonds, nous étions dans notre tort. » La suite du texte remerciait l’équipe NEAR pour sa courtoisie pendant la restitution et recommandait les bug bounties.

Selon Alex Shevchenko, « 100 % des fonds » ont été récupérés dans les 36 heures suivant la détection, et tous les utilisateurs touchés ont été remboursés. Le post-mortem attribue ce résultat à SHIELD, la couche de sécurité que NEAR Intents applique à ses flux, ainsi qu’à l’analyse de blockchain et à des chercheurs du secteur. Il évoque des « négociations avec l’attaquant » sans en donner les termes : on ignore donc si une prime ou un quelconque accord a été proposé.

Illustration d'une pièce, d'une silhouette encapuchonnée, d'une poignée de main, d'un sablier et d'une loupe
L’adresse Bitcoin de restitution a reçu 34,59 BTC le 2 octobre, soit environ 78 % de la perte selon une estimation.

Le piratage en chiffres

ÉlémentChiffreSource
Montant détournéEnviron 3,8 M$Post-mortem, 16 oct. ; @near_intents, 1er oct.
Transactions de dépôt en échec23Post-mortem
Fenêtre des retraitsEnviron 37,7 heures (29 sept. 16 h 14 au 1er oct. 5 h 54)Post-mortem
Détection après le dernier retrait2 h 10Post-mortem
Pause après la détection29 minPost-mortem
Réseaux aux dépôts et retraits suspendus11, pendant environ 12 heures@near_intents, 1er oct.
BTC envoyés à l’adresse de restitution34,58927254 BTC, 2 oct. de 14 h 31 à 15 h 05 UTCmempool.space
Part de la perte couverte par ces BTCEnviron 78 % (estimation)Unchained, 5 oct.
Fonds récupérés100 %, dans les 36 heures suivant la détectionPost-mortem
Prime pour le signalement du 7 oct.300 000 $Post-mortem

Fin des dépôts avec notification : ce qui a changé dans le code

Le dépôt public near/intents sur GitHub montre la réparation étape par étape. Le 1er octobre à 18 h 02 UTC, la pull request n° 362, intitulée « chore: reproduce bug », a été fusionnée ; elle ajoute un audit des jetons qui compare leur offre au solde réel du contrat. Une modification désactivant l’initialisation d’état (state init) a suivi à 19 h 03 UTC, puis la version v0.4.3 à 21 h 29 UTC.

La pull request n° 367, fusionnée le 2 octobre à 12 h 50 UTC, a fait en sorte, selon ses notes de version, que le contrat signale les erreurs des notifications de transfert au lieu de les ignorer en silence, et la version v0.4.4 est sortie cinq minutes plus tard. Le post-mortem date le correctif sur le mainnet du soir même à 20 h 31, avec la réouverture des dépôts côté contrat à 20 h 38.

L’affaire ne s’est pas arrêtée là. Le 7 octobre, un autre bug critique a été signalé « dans la même fonction », et l’équipe l’a supprimée le jour même. La pull request n° 374, fusionnée à 17 h 51 UTC, retire les dépôts par notification pour les jetons fongibles, les NFT et les multi-jetons. Les dépôts par la voie « execute » restent possibles, et les rappels de retrait et de résolution reçoivent davantage de gas. Le contenu du bug du 7 octobre n’a pas été rendu public.

Illia Polosukhin a déclaré le 1er octobre que la vérification formelle, c’est-à-dire la preuve mathématique qu’un code se comporte comme prévu, entrerait dans le processus de publication de NEAR. Il est revenu sur le sujet le 2 octobre avec un outil de NEAR AI fondé sur le langage de preuve Lean. Aucune date n’a été donnée. Le post-mortem invite également protocoles et enquêteurs à rejoindre un programme de partenaires SHIELD.

Une prime de 300 000 dollars, et un point faible connu depuis janvier

Le projet gère son programme de bug bounty sur HackenProof, avec jusqu’à 300 000 dollars pour les failles critiques. Le signalement du 7 octobre venait du chercheur @rohanganapa, qui a touché la totalité des 300 000 dollars, d’après le post-mortem.

Le signalement de janvier est le point gênant. Entre le 13 et le 15 janvier, un chercheur avait repéré une fonction similaire d’appel à un contrat tiers, et l’équipe l’avait corrigée en deux jours. Le travail de renforcement s’est poursuivi jusqu’en mars. Le circuit des notifications de dépôt est pourtant resté actif jusqu’à ce qu’un attaquant y trouve la brèche fin septembre. Alex Shevchenko souligne que les deux signalements de cette année sur la fonction sont passés par le programme et qu’aucun n’a été exploité. La faille utilisée en septembre n’en faisait pas partie.

Le routeur de swaps qui bloquait l’argent de Bitget, puis s’est fait vider

Le calendrier est malvenu. Bitget a perdu environ 387,5 millions de dollars dans un piratage le 24 septembre (Coindaro a raconté comment Bitget a rétabli les retraits après le piratage de 388 millions de dollars). Le 29 septembre, NEAR Intents affirmait que SHIELD avait bloqué plus de 50 millions de dollars de flux liés à Bitget qui tentaient de transiter par son système, gelé environ 503 000 dollars et laissé passer quelque 166 000 dollars, selon crypto.news. Il s’agissait d’estimations de l’équipe.

Le même jour à 16 h 14, le premier retrait de fonds fantômes quittait NEAR Intents. Rien de ce qui a été publié à ce jour ne relie les pirates de Bitget à l’attaquant de NEAR Intents, et l’équipe n’a rien suggéré de tel. Illia Polosukhin a bien cité le 1er octobre Bitget, MetaMask et Lido parmi les cibles récentes de « criminels équipés de systèmes d’IA ». Il a qualifié l’incident de « premier exploit majeur sur Intents ».

L’écosystème NEAR a déjà été attaqué, avec une meilleure issue. En 2022, le Rainbow Bridge, qui relie NEAR, Ethereum et Aurora, a repoussé deux attaques par faux blocs : en mai, l’attaquant y a perdu 2,5 ETH, et en août 5 ETH, la tentative ayant été stoppée automatiquement en 31 secondes, rapportait Decrypt. Alex Shevchenko, alors directeur général d’Aurora Labs, avait lui-même annoncé le résultat d’août.

NEAR Intents, swap et bridge : à quoi sert le service et quel volume il traite

Le service permet à un utilisateur, ou à un portefeuille comme HOT ou l’application near.com, d’énoncer ce qu’il veut (« échanger cet USDT sur BSC contre du SOL sur Solana ») plutôt que de construire l’itinéraire. Des teneurs de marché se font concurrence pour exécuter cette « intention », et le règlement a lieu dans le contrat intents.near sur NEAR. Les actifs arrivent sur NEAR depuis les autres blockchains par Omni, une couche de pont inter-chaînes. Par construction, le contrat Intents détient des soldes mis en commun pour de nombreux utilisateurs à la fois, ce qui explique qu’une erreur de registre ait pu être payée avec les jetons des autres.

Le système pèse lourd. Les données de DefiLlama relevées vers 7 h UTC le 17 octobre font état de 88,2 millions de dollars de volume sur 24 heures, 882 millions sur sept jours, 4,76 milliards sur 30 jours et 34,17 milliards depuis le lancement. DefiLlama, qui le classe parmi les ponts, estime sa valeur totale verrouillée (staking or liquidity, measured at current market prices. It is the main size metric in DeFi.">TVL) à environ 214 millions de dollars. Les « plus de 4 milliards de dollars par mois » avancés par Illia Polosukhin le 1er octobre collent au chiffre sur 30 jours, et Decrypt a relayé la revendication du projet de plus de 30 milliards de dollars d’échanges sur 35 blockchains.

Le jeton NEAR s’échangeait vers 5,05 $ à 7 h UTC le 17 octobre, en baisse de 2,90 % sur 24 heures et de 2,35 % sur sept jours. Rien dans les données ne relie ce mouvement au post-mortem.

Ce qui change pour les utilisateurs de NEAR Intents en France

Pour ceux qui ont échangé via NEAR Intents, near.com ou les portefeuilles qui s’appuient dessus, la conséquence concrète a été une interruption, pas une perte : les routes de 11 réseaux ont été suspendues environ 12 heures le 1er octobre puis rouvertes progressivement les jours suivants, et l’équipe assure que chaque utilisateur touché a été remboursé. Le post-mortem ne dit pas si ce remboursement a été financé par les réserves de l’équipe avant que l’attaquant ne rende les fonds.

La protection est venue de l’équipe, pas d’une règle. NEAR Intents est un protocole décentralisé, accessible depuis la France via near.com ou des portefeuilles comme HOT, et il n’a rien d’un prestataire agréé par l’AMF au titre du règlement européen MiCA. Aucun mécanisme d’indemnisation adossé à un régulateur ne se trouve derrière, ni en Europe ni ailleurs. Les utilisateurs se sont fiés à une promesse publique, que l’équipe a tenue. L’AMF n’a pas réagi à cet incident. Pour savoir comment une perte liée à un piratage est traitée fiscalement en France, mieux vaut interroger un conseiller.

La leçon plus large concerne les contrats à soldes mutualisés. Tout système qui tient un registre interne des soldes de ses utilisateurs n’est sûr que si l’on vérifie que ce registre ne dépasse jamais ce qu’il détient réellement. NEAR Intents a ajouté ce contrôle après le 1er octobre, avec une pause automatique s’il échoue.

Questions ouvertes et prochaines étapes

Plusieurs zones d’ombre demeurent. L’attaquant n’a pas été nommé, et l’équipe n’a expliqué ni comment elle l’a identifié ni ce qui a été convenu. Le jeton utilisé pour les 23 dépôts et l’adresse du contrat de l’attaquant sur NEAR n’ont pas été publiés. Personne n’a précisé comment sont revenus les quelque 22 % non remboursés en bitcoin, ni où sont partis les 34,59 BTC le 14 octobre.

La déclaration du 1er octobre indiquait que l’incident avait été signalé aux forces de l’ordre ; aucune nouvelle depuis, et rien sur un éventuel gel de fonds chez KuCoin. Aucune date n’a été fixée pour l’arrivée de la vérification formelle dans les versions de NEAR.

Les prochains signaux à suivre : une modification de l’étiquette « Bridge Logic Flaw » et du champ des fonds restitués chez DefiLlama, d’éventuelles nouvelles judiciaires, et le maintien ou non du plafond de 300 000 dollars du programme HackenProof pour les bugs critiques.

Sources

  1. Postmortem: NEAR Intents October 1 Exploit (Alex Shevchenko, 16 oct. 2026) x.com
  2. near/intents PR #374 : remove notifications on deposits (GitHub, 7 oct. 2026) github.com
  3. Déclaration de NEAR Intents sur l’incident (1er oct. 2026) x.com
  4. Adresse Bitcoin de restitution de NEAR Intents sur mempool.space mempool.space
  5. The Defiant : NEAR Intents Postmortem Links $3.8 Million Exploit to Deposit Bug (16 oct. 2026) thedefiant.io
  6. Cointelegraph : NEAR Intents says it identified the hacker, gives 48-hour ultimatum (2 oct. 2026) cointelegraph.com

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *