L'escrow de staking historique de Yieldly a libéré ses ALGO sans lire le paiement
Cinq paiements en quatre-vingt-douze secondes ont fait sortir environ 390 000 ALGO du coffre de staking historique de Yieldly, bien après que les détenteurs eurent été invités à retirer leurs fonds. Son programme d'escrow semble approuver n'importe quel paiement sans lire le destinataire, le montant ni l'actif. Le compte ne contient plus que 0,20107 ALGO.

Cinq paiements ont quitté le compte d'un smart contract de staking de Yieldly au matin du 15 octobre 2026, en quatre-vingt-douze secondes. Ensemble, ils ont emporté environ 390 377 ALGO hors d'un coffre que le projet avait demandé aux utilisateurs de vider trois ans plus tôt. Le premier portait sur environ 14 3741 ALGO et le dernier sur environ 174 763. Le contrat a payé parce que sa propre comptabilité avait été créditée d'un dépôt jamais arrivé, dans un token qu'il n'a jamais détenu.
Ce compte est l'escrow derrière l'ancienne dapp de staking de Yieldly, où les détenteurs déposaient leurs tokens pour percevoir des récompenses. Le projet leur a demandé de retirer leur mise en avril 2023, puis de nouveau en juillet. Ce que le coffre contenait encore, c'était des ALGO, et ils y sont restés derrière un programme public qui ne semble lire ni le destinataire ni le montant du paiement qu'il signe.
Un token créé huit secondes avant d'être dépensé
Le compte qui a récupéré l'argent a été ouvert ce matin-là et approvisionné avec 12 ALGO. Il a créé un token nommé FUEL, sans décimales et sans rôle de gestion, de gel, de clawback ni de réserve. Son créateur a envoyé la totalité de l'offre à sa propre adresse, un transfert qui n'a modifié aucun solde.
Huit secondes plus tard, l'escrow a versé à ce même compte 3 239 706 903,7436723 YLDY, soit environ 3,244 milliards de tokens, un tiers de l'offre de 105 milliards. Le programme de staking semble tenir un solde par compte et y ajouter le montant d'un transfert sans comparer l'identifiant de l'actif. FUEL se compte en unités entières et YLDY en millionièmes : le décompte brut d'un token a donc été lu comme celui de l'autre.
Créditer ce solde n'exigeait d'envoyer quoi que ce soit à l'escrow. Le programme de contrôle en amont du chemin de dépôt renvoie un succès pour tout appel qui clôture une position, sans lire le moindre argument, si bien que le chemin protégé peut être contourné. La branche de dépôt crédite alors le montant d'un paiement sans confirmer que les fonds ont atteint le compte qui les détient.
Les retraits suivent la même logique. Chacun des cinq a été précédé, environ huit secondes plus tôt, par le même compte se versant à lui-même un montant identique, d'environ 14 3746 ALGO jusqu'à environ 174 763, par groupes où le solde d'aucune adresse n'a changé. Les dépôts étaient des écritures dans les propres registres du contrat. Les ALGO qui sont sortis étaient le solde du contrat lui-même, et non ce que l'expéditeur y avait placé.
Un coffre qui ne lisait rien du paiement
Le compte qui a payé est une signature logique, un petit programme sans clé privée à dérober. Le déployeur de Yieldly l'a ouvert avec 2 ALGO le 5 juin 2021. Son programme publié semble approuver un paiement sous trois conditions. Le groupe doit comporter entre deux et six transactions, et la première doit être un appel à une application Yieldly précise. Aucune des deux premières ne doit définir de rekey. Il ne semble lire ni destinataire, ni montant, ni actif du paiement qu'il signe.
Dans ces conditions, il pouvait signer un paiement de n'importe quel montant, dans n'importe quel actif, vers n'importe quelle adresse. À ce compte, rien ne semble avoir eu besoin d'être cassé et aucune clé d'être retrouvée. Le programme ne semble rien demander sur l'identité de l'expéditeur, si bien qu'un outsider et un ancien utilisateur remplissaient les mêmes conditions. La page de compte de l'escrow7 affiche désormais 0,201078 ALGO, juste au-dessus du minimum de 0,2 ALGO qui le maintient ouvert.
Les 400k du titre correspondent à un paiement effectué plus tard
Le fil9 qui a soulevé l'affaire sur r/AlgorandOfficial affirmait que le contrat de staking avait été « hacked for 400k10 Algo », en renvoyant à l'audit de Halborn de 2021. Les réponses se partageaient entre parler de hack et mettre en cause les opérateurs. Le chiffre derrière le titre, 404 751,14087711 ALGO, correspond à un unique transfert effectué par le portefeuille récepteur quatre minutes après le dernier retrait, et il est supérieur à ce que le coffre a libéré.
C'est l'argent du coffre plus le produit des tokens crédités. Le compte a vendu 1 898 163 508,44209812 YLDY à un compte de contrat pour 8 435,73485413 ALGO, et 1 341 543 395,30157314 YLDY dans un pool Tinyman pour 5 934,49038915. Les deux ventes ont rapporté 14 370,22524316 ALGO. Ajoutez ce montant à celui libéré par le coffre et la somme tombe à quelques ALGO près sous les 404 751,14087717 envoyés plus loin, un écart que les registres ne comblent pas.
Le YLDY lui-même ne vaut plus grand-chose : environ 2 878 $ de capitalisation, pour 13,44 $ d'échanges en une journée, au 19 octobre.
Le paiement suivant a de nouveau bougé en quelques heures. Il est passé par deux autres comptes ordinaires, et le dernier d'entre eux a envoyé 220 000 ALGO plus loin le 19 octobre. Aucun des trois ne se rattache à un nom.
L'audit portait sur un autre code
La mission de Halborn s'est déroulée du 8 au 19 mai 2021 et couvrait les contrats de loterie de Yieldly. Le rapport18 indique que, compte tenu des contraintes de temps et de ressources, seuls les aspects les plus essentiels ont été testés. Selon le rapport, l'une de ses cinq conclusions, HAL-02, classée Low, décrivait des transactions qui ne passaient pas par le proxy alors que l'escrow les attendait, à cette même frontière.
Les programmes qui ont payé ont été livrés ensuite. Les deux applications de staking ont été mises à jour pour la dernière fois le 2 juillet 2021, après la clôture de la mission, et aucune n'a changé depuis. Invoquer cet audit comme garantie sur le coffre de staking revient à faire confiance à un code qui ne tournait pas en octobre.
Trois ans après l'avis d'arrêt
Yieldly a demandé aux détenteurs de retirer leurs fonds en avril 2023, puis de nouveau en juillet. La publication du 20 avril19 indiquait : « Remove your stake from Yieldly staking before the dapp is taken offline within 30 days,20 » et fixait la fin mai pour le démantèlement. Une annonce du 25 juillet21 demandait aux utilisateurs de « remove your funds from Yieldly staking before 10pm EST 26th July22 ». Les cinq paiements sont intervenus 1 177 jours après cette échéance.
Yieldly n'a rien dit de ces transferts. Son canal d'annonces23 n'a rien publié depuis mars 2024, son fil Medium24 depuis avril 2023, et son compte X25 ne porte rien de plus récent que janvier 2025.
La dapp a disparu ; les contrats sont restés. L'escrow a encore émis des YLDY en 2025, dont 112 376 408,272 tokens en un seul transfert le 4 août, preuve que le programme répondait toujours à quelqu'un. Ce qu'il détenait aussi, c'étaient des ALGO, et ce sont eux qui sont partis. Les autres escrows nommés par les programmes ne contiennent plus rien.
17 chiffres de cet article sont vérifiés. 6 ont été lus directement sur la chaîne.Voir toutes les vérifications
Sources
- 7allo.info/account/FMBXOFAQCSAD4UWU4Q7IX5AV4FRV6AKURJQYGXLW3CTPTQ7XBX6MALMSPY allo.info↩
- 9Yieldly staking smart contract got hacked for 400k Algo. The smart contract was audited by HALBORN in 2021 : AlgorandOff reddit.com↩
- 18rapport raw.githubusercontent.com↩
- 19yieldly.medium.com/embarking-on-a-unified-future-yieldly-staking-dapp-closure-and-ylaunch-introduction-b08036120ecb yieldly.medium.com↩
- 21annonce du 25 juillet t.me↩
- 23Yieldly Announcements (Only Channel) – Telegram t.me↩
- 24fil Medium yieldly.medium.com↩
- 25compte X x.com↩