Glossary
Read-Only Reentrancy
Variante de réentrance où un attaquant, dans une fenêtre d'état incohérent, exploite une fonction view renvoyant des données périmées sans ré-entrer aucune fonction modifiant l'état.
La read-only reentrancy exploite les fonctions view (en lecture
seule) qui renvoient des données périmées pendant qu'une autre
opération est encore en pleine exécution. Les reentrancy guards
classiques nonReentrant protègent les fonctions modifiant l'état
mais laissent les getters sans protection. Un attaquant peut donc
déclencher un callback pendant une opération — par exemple le retrait
de liquidité d'un pool de style Curve — et, depuis ce callback,
appeler un getter de prix ou de parts qui lit un état à moitié mis à
jour. Les protocoles en aval qui font confiance à ce getter, comme
les marchés de prêt et les vaults, peuvent alors être mal valorisés
et vidés.
Une série d'incidents en 2022 visant des marchés de prêt intégrés à Curve a mis cette classe en lumière. Les défenses consistent à étendre le verrou de réentrance aux fonctions view, ou à vérifier l'état du verrou du pool avant de lire une valeur rapportée.