FICHE CVE

CVE-2026-114116

Publiée le 2026-10-21 · Dernière modification le 2026-10-22

🇫🇷 EN BREF

Les versions 0.1.0b1 à 0.1.0b16 ainsi que 0.4.1 à 0.5.0b1 de Vyper sont concernées. Vyper est un langage de programmation utilisé pour écrire des contrats intelligents (smart contracts) sur la blockchain Ethereum. La faille provient d'une méthode de division des lignes utilisée par le compilateur, laquelle considère certains caractères rares comme des sauts de ligne, alors que l'analyseur Python les ignore, amenant ainsi le compilateur à mal interpréter le début et la fin des lignes.

Un attaquant peut utiliser cette divergence pour masquer des caractères invisibles dans le code source d'un contrat, modifiant silencieusement des constantes numériques ou des adresses de portefeuilles lors du processus de build. Cela compromet l'intégrité du contrat, pouvant potentiellement rediriger des fonds ou altérer la logique sans que le développeur ne s'en aperçoive. L'exploitation est relativement simple via un réseau, mais nécessite que le développeur compile et déploie, sans le savoir, un code source malveillant fourni par l'attaquant.

CVSS 4.06.0 MOYENNE
Type de faiblesse
Publiée2026-10-21
Dernière modification2026-10-22

DÉTAIL DU VECTEUR CVSS

Vecteur d'attaqueRéseau
Complexité d'attaqueFaible
Prérequis d'attaquePrésent
Privilèges requisAucun
Interaction utilisateurPassive
Confidentialité (système vulnérable)Aucune
Intégrité (système vulnérable)Élevée
Disponibilité (système vulnérable)Aucune
Confidentialité (système subséquent)Aucune
Intégrité (système subséquent)Aucune
Disponibilité (système subséquent)Aucune

RÉFÉRENCES

Description officielle du NVD (en anglais)

Vyper 0.1.0b1 before 0.1.0b17 and 0.4.1 through 0.5.0b1 builds its source-line table with str.splitlines(), which treats characters like form feed and U+2028 as line breaks the Python parser ignores, so numeric literals are classified and validated from shifted source text. An attacker contributing source code can hide these characters in comments, strings or indentation to silently change address, integer or decimal constants.