1/ SIMD-0334, de Stanislav Ladyzhenskiy, corrige la verificación del syscall alt_bn128_pairing de Solana. Añade una verificación de longitud adecuada en los bytes de entrada para emparejamientos de curvas elípticas, previniendo cualquier uso indebido con entradas de tamaño incorrecto. Desglosemos lo que esto significa 🧵
2/ alt_bn128_pairing es una syscall para emparejamiento en la curva elíptica BN128 utilizada en pruebas de conocimiento cero. Toma una lista de puntos de la curva como entrada. Cada par de puntos ocupa 192 bytes, por lo que las entradas válidas deben ser un múltiplo de 192 bytes de longitud.
3/ El problema: la verificación de longitud utilizó incorrectamente checked_rem de Rust. checked_rem solo devuelve None en caso de división por cero, por lo que la verificación nunca falló con 192. Como resultado, la llamada al sistema de emparejamiento se ejecutaría incluso si la entrada no era un múltiplo de 192.
4/ La solución: verifica que la longitud de entrada sea un múltiplo de 192 y genera un error si no lo es. Esto captura cualquier byte sobrante de inmediato en lugar de ignorarlos silenciosamente. Los cambios de código están en solana-sdk y se envían con Agave v3.1.0.
1,06K