Chronologie
Le 2025-04-16, une vulnérabilité potentielle a été signalée à l’Anza Github Security Advisory. Le rapport contenait une preuve de concept pour la vulnérabilité. Il n’y a aucun exploit connu de la vulnérabilité. Les ingénieurs d’ANZA, de Firedancer et de Jito ont commencé à évaluer le rapport et ont confirmé qu’il permettait la construction de preuves arbitraires que le programme de preuve Elgamal ZK accepterait comme valide. Les ingénieurs ont créé un correctif pour résoudre le problème signalé. De plus, les ingénieurs ont engagé des sociétés de sécurité asymétrique Research, Neodyme et Ottersec pour examiner le patch et fournir un soutien pendant l’incident.
Le 2025-04-17, vers 18h00 UTC, les équipes Solana Foundation et Jito ont commencé à contacter directement les opérateurs de validateurs pour distribuer le correctif. Vers 23h00 UTC le 17, il a été déterminé qu’un deuxième correctif était nécessaire pour résoudre un problème similaire dans une autre zone de la base de code. Le deuxième correctif a également été examiné par les entreprises de sécurité et diffusée par la suite aux opérateurs de validateurs. Vers 20h00 UTC le 2025-04-18, il a été déterminé que plus d’une super majorité de participation avait adopté le patch. Le patch a été annoncé publiquement dans Discord ici à 21:01 UTC. Le cluster a maintenant adopté le patch et aucun fonds n’est à risque.
Préliminaires
Un transfert confidentiel de jetons 2022 est exécuté via deux programmes: le programme Token-2022 et le programme ZK Elgamal Proof. Le programme Token-2022 est un programme populaire sur chaîne qui gère la logique d’application principale pour les menthes de jetons et les comptes. Le programme ZK Elgamal Proof est un programme natif qui vérifie l’exactitude des preuves complexes de connaissances zéro certifiant la validité des équilibres cryptés dans les comptes et les transactions.
En règle générale, un système de preuve de connaissance zéro est mis en œuvre en convertissant un protocole interactif interactif interactif à connaissances zéro en un système de preuve non interactif en utilisant la « transformation Fiat-Shamir ». La transformation Fiat-Shamir spécifie comment un prover peut générer un aléatoire public en utilisant une fonction de hachage cryptographique. Lors de la vérification des preuves générées via la transformation Fiat-Shamir, la logique de vérification doit hacher tous les composants algébriques comprenant la preuve.
Le bug
Dans le programme de preuve ZK Elgamal en chaîne, certains composants algébriques n’ont pas été inclus dans un hachage utilisé pour générer une transcription pour la transformation Fiat-Shamir. Un attaquant sophistiqué pourrait utiliser ces composants non lâchés pour développer une preuve forgée d’une action non autorisée qui passe la vérification. Cette vulnérabilité n’affecte que les jetons confidentiels du jeton-22 et permet à un attaquant d’effectuer des actions non autorisées telles que la baisse des jetons illimités ou le retrait des jetons de n’importe quel compte.
Le patch
Le programme ZK Elgamal Proof a maintenant été corrigé. Les versions correctes incluent:
Le correctif a été ajouté dans cet engagement. Le commit patch a été examiné par Asymétric Research, Neodyme et Ottersec. De plus, le programme ZK Elgamal Proof avait déjà été audité. Un rapport complet est disponible ici. Étant donné que le bogue a été limité au programme ZK Elgamal Proof, aucune mise à jour n’a été requise pour le programme Token-2022. Tous les fonds sont sûrs et il n’y a aucun exploit connu de la vulnérabilité potentielle.
tl; dr
Une vulnérabilité potentielle a été signalée de manière responsable, ce qui pourrait permettre à un attaquant de forger une preuve non valide et de le faire accepter par le programme ZK Elgamal Proof. Le programme ZK Elgamal Proof a été corrigé et le patch a été adopté par les opérateurs de validateurs Solana. Il n’y a aucun exploit connu du problème.