1/ SIMD-0334, de Stanislav Ladyzhenskiy, corectează verificarea alt_bn128_pairing a apelului de sistem a Solanei. Adaugă o verificare adecvată a lungimii octeților de intrare pentru perechile curbei eliptice, prevenind orice utilizare greșită cu intrări de dimensiuni incorecte. Să analizăm ce înseamnă 🧵 acest lucru
2/ alt_bn128_pairing este un syscall pentru asocierea pe curba eliptică BN128 folosită în dovezile de cunoaștere zero. Este nevoie de o listă de puncte de curbă ca intrare. Fiecare pereche de puncte are 192 de octeți, deci intrările valide trebuie să aibă un multiplu de 192 de octeți.
3/ Problema: verificarea lungimii a folosit incorect checked_rem lui Rust. checked_rem returnează None doar la împărțirea cu zero, astfel încât verificarea nu a eșuat niciodată cu 192. Ca urmare, apelul de sistem de asociere ar rula chiar dacă intrarea nu era un multiplu de 192.
4/ Remedierea: verificați dacă lungimea de intrare este multiplu de 192 și dacă nu. Acest lucru prinde imediat orice octeți rămași în loc să-i ignore în tăcere. Modificările de cod sunt în solana-sdk și sunt livrate cu Agave v3.1.0.
1,06K