1/ SIMD-0334, av Stanislav Ladyzhenskiy, fikser Solanas alt_bn128_pairing syscall-sjekk. Den legger til en skikkelig lengdekontroll på inngangsbytene for elliptiske kurveparinger, og forhindrer misbruk med innganger med feil størrelse. La oss bryte ned hva dette betyr 🧵
2/ alt_bn128_pairing er et syscall for sammenkobling på BN128 elliptisk kurve som brukes i nullkunnskapsbevis. Den tar en liste over kurvepunkter som input. Hvert par poeng er 192 byte, så gyldige inndata må være et multiplum av 192 byte lange.
3/ Problemet: lengdekontrollen brukte Rusts checked_rem feil. checked_rem returnerer bare Ingen på divisjon med null, så sjekken mislyktes aldri med 192. Som et resultat ville sammenkoblingsanropet kjøre selv om inngangen ikke var et multiplum av 192.
4/ Løsningen: sjekk at inngangslengden er et multiplum av 192 og feil ut hvis ikke. Dette fanger opp eventuelle rester av byte umiddelbart i stedet for å ignorere dem i stillhet. Kodeendringene er i solana-sdk og leveres med Agave v3.1.0.
1,19K