1/ SIMD-0334, kirjoittanut Stanislav Ladyzhenskiy, korjaa Solanan alt_bn128_pairing syscall-tarkistuksen. Se lisää oikean pituuden tarkistuksen syöttötavuille elliptisen käyrän pareja varten, mikä estää väärinkäytön väärän kokoisilla syötteillä. Selvitetään, mitä tämä tarkoittaa 🧵
2/ alt_bn128_pairing on järjestelmäkutsu pariliitoksen muodostamiseen BN128-elliptisellä käyrällä, jota käytetään nollatietotodistuksissa. Se ottaa syötteeksi luettelon käyräpisteistä. Jokainen pistepari on 192 tavua, joten kelvollisten syötteiden on oltava 192 tavun kerrannaisia.
3/ Ongelma: pituuden tarkistuksessa käytettiin Rustin checked_rem väärin. checked_rem palauttaa vain nollalla jaettaessa Ei mitään, joten sökö ei koskaan epäonnistunut 192:lla. Tämän seurauksena pariliitoksen syscall suoritettiin, vaikka syöte ei olisi 192:n kerrannainen.
4/ Korjaus: tarkista, että syötteen pituus on 192:n kerrannainen, ja tee virhe, jos ei. Tämä nappaa kaikki jäljelle jääneet tavut välittömästi sen sijaan, että jättäisit ne hiljaa huomiotta. Koodimuutokset ovat solana-sdk:ssa ja toimitetaan Agave v3.1.0:lla.
1,26K