1/ SIMD-0334, par Stanislav Ladyzhenskiy, corrige la vérification du syscall alt_bn128_pairing de Solana. Il ajoute une vérification de longueur appropriée sur les octets d'entrée pour les appariements de courbes elliptiques, empêchant toute utilisation abusive avec des entrées de taille incorrecte. Décomposons ce que cela signifie 🧵
2/ alt_bn128_pairing est un appel système pour le couplage sur la courbe elliptique BN128 utilisée dans les preuves à connaissance nulle. Il prend une liste de points de courbe en entrée. Chaque paire de points fait 192 octets, donc les entrées valides doivent être un multiple de 192 octets de long.
3/ Le problème : la vérification de longueur utilisait incorrectement checked_rem de Rust. checked_rem ne renvoie None qu'en cas de division par zéro, donc la vérification n'a jamais échoué avec 192. En conséquence, l'appel système de couplage s'exécutait même si l'entrée n'était pas un multiple de 192.
4/ La solution : vérifiez que la longueur d'entrée est un multiple de 192 et signalez une erreur si ce n'est pas le cas. Cela attrape immédiatement tous les octets restants au lieu de les ignorer silencieusement. Les modifications de code se trouvent dans solana-sdk et sont livrées avec Agave v3.1.0.
1,11K