1/ SIMD-0334, av Stanislav Ladyzhenskiy, fixar Solanas alt_bn128_pairing syscall-kontroll. Det lägger till en korrekt längdkontroll på indatabyte för parningar med elliptiska kurvor, vilket förhindrar missbruk med felaktigt dimensionerade indata. Låt oss bryta ner vad detta betyder 🧵
2/ alt_bn128_pairing är ett syscall för parning på BN128 elliptisk kurva som används i nollkunskapsbevis. Den tar en lista med kurvpunkter som indata. Varje par med punkter är 192 byte, så giltiga indata måste vara en multipel av 192 byte långa.
3/ Problemet: längdkontrollen använde Rusts checked_rem felaktigt. checked_rem returnerar bara Ingen vid division med noll, så kontrollen misslyckades aldrig med 192. Som ett resultat skulle parningssysanropet köras även om indata inte var en multipel av 192.
4/ Fixen: kontrollera att inmatningslängden är en multipel av 192 och fel ut om inte. Detta fångar upp alla överblivna byte omedelbart i stället för att tyst ignorera dem. Kodändringarna är i solana-sdk och levereras med Agave v3.1.0.
1,1K