1/ SIMD-0334, de Stanislav Ladyzhenskiy, corrige a verificação do syscall alt_bn128_pairing da Solana. Adiciona uma verificação de comprimento adequada nos bytes de entrada para emparelhamentos de curvas elípticas, prevenindo qualquer uso indevido com entradas de tamanho incorreto. Vamos analisar o que isso significa 🧵
2/ alt_bn128_pairing é uma syscall para emparelhamento na curva elíptica BN128 usada em provas de conhecimento zero. Ela aceita uma lista de pontos da curva como entrada. Cada par de pontos tem 192 bytes, portanto, entradas válidas devem ter um comprimento múltiplo de 192 bytes.
3/ O problema: a verificação de comprimento usou o checked_rem do Rust incorretamente. O checked_rem só retorna None em caso de divisão por zero, portanto, a verificação nunca falhou com 192. Como resultado, a chamada de sistema de emparelhamento seria executada mesmo que a entrada não fosse um múltiplo de 192.
4/ A solução: verifique se o comprimento da entrada é um múltiplo de 192 e gere um erro se não for. Isso captura quaisquer bytes restantes imediatamente em vez de os ignorar silenciosamente. As alterações de código estão no solana-sdk e são enviadas com o Agave v3.1.0.
1,06K