Bitcoin Core : les vérifications TRUC désactivées lors des réorganisations
Une mise à jour dans le code de Bitcoin Core corrige un défaut de cohérence du mempool lié à l’application des restrictions de topologie TRUC durant les réorganisations de chaîne. Selon le tirage de pull request #33504 sur le dépôt officiel de Bitcoin, il était possible que des règles de vérification de topologie, conçues pour prévenir les attaques par déni de service, s’appliquent incorrectement lorsque le réseau devait rétablir l’état des transactions après un reorg.
Ce mécanisme, qui limite le nombre d’ancêtres et de descendants non confirmés d’une transaction (selon le BIP 431), est une politique de mempool et non une règle de consensus. Le problème résidait dans le fait que la logique d’éviction des « frères » de transaction (sibling eviction) n’était pas correctement conditionnée par le drapeau bypass_limits lors du ré-ajout des transactions depuis les blocs déconnectés.
En clair, lors d’une réorganisation, le système essayait d’appliquer des contraintes de topologie qui, dans ce contexte, n’étaient pas censées être en vigueur. Cela pouvait mener à l’éviction de transactions parfaitement incitatives sur une longue chaîne, même si celles-ci étaient historiquement compatibles. Le développeur Greg Sanders a souligné que cette erreur entraînait une perte de cycles CPU, car des vérifications de topologie n’avaient pas leur utilité réelle dans le scénario de réorganisation.

Ce bug, désigné comme CVE-2025-62861, avait une sévérité élevée. Il empêchait, dans les versions affectées (notamment 28.0 à 28.2 et 29.0 à 29.1), la création de modèles de blocs par les mineurs. En effet, l’état incohérent du mempool faisait échouer les vérifications de validité du modèle de bloc, forçant le nœud à redémarrer pour retrouver un état stable.
La correction, implémentée dans le pull request #33504, consiste précisément à conditionner les vérifications TRUC sur l’activation de bypass_limits. C’est ce qui garantit que l’éviction de frères ne s’exécute pas pendant la phase de ré-ajout des transactions lors d’un reorg, ce qui était le comportement attendu. Comme le confirme le pull request, « Not enforcing TRUC topology on reorg was the intended behavior, but the appropriate bypass argument was not checked. »
Le contexte de cette problématique est étroitement lié aux mécanismes de Replace by Fee (RBF) et aux limites de descendant, qui sont des outils complexes visant à équilibrer la résilience contre les attaques par déni de service et la garantie de l’incitation des mineurs. Les protocoles de contrat reposant sur des transactions temporelles, par exemple, sont sensibles à ces règles de mempool. Selon le BIP 431, ces restrictions simplifient l’évaluation de la compatibilité incitative en aidant à s’assurer que tout remplacement est plus rentable pour le nœud.
L’intention de ne pas appliquer cette topologie lors d’un reorg était juste ; le problème technique résidait uniquement dans l’absence de la vérification adéquate du paramètre de contournement. Les équipes de développement ont œuvré pour garantir que ce comportement, essentiel au rétablissement fidèle de l’historique des transactions, soit correctement encadré.
La correction a été déployée rapidement. Après le signalement par Niklas Goegge, le correctif a été fusionné en octobre 2025 et intégré dans les versions 28.3, 29.2 et 30.0. L’échéance critique est fixée au 27 octobre 2026, date à laquelle la dernière version vulnérable de Bitcoin Core (la branche 29.x) atteindra sa fin de vie.
Sources
- Mempool: Do not enforce TRUC checks on reorg by instagibbs · Pull Request #33504 · bitcoin/bitcoin, github.com
- bips/bip-0431.mediawiki at master · bitcoin/bips, github.com
- CVE-2025-62861 – Block template creation halted by TRUC sibling eviction during reorg, Bitcoin Core, 10 novembre 2026
Crédits photo
- Image en une : Cryptocurrency mining machine, par Project Kei, CC BY-SA 4.0, via Wikimedia Commons (recadrée)



