1/ SIMD-0334, автор Станіслав Ладиженський, виправляє перевірку alt_bn128_pairing системних викликів Solana. Він додає належну перевірку довжини вхідних байтів для сполучення з еліптичною кривою, запобігаючи будь-якому неправильному використанню з неправильно розмірними входами. Давайте розберемося, що це означає 🧵
2/ alt_bn128_pairing — це системний виклик для сполучення на еліптичній кривій BN128, який використовується в доведеннях з нульовим розголошенням. Він приймає список точок кривої як вхідні дані. Кожна пара точок має розмір 192 байти, тому допустимі вхідні дані повинні бути кратні 192 байтам.
3. Проблема: перевірка довжини використовувалася checked_rem Rust неправильно. checked_rem повертає лише Noone при діленні на нуль, тому перевірка ніколи не провалювалася зі 192. У результаті системний виклик сполучення працюватиме, навіть якщо вхідні дані не кратні 192.
4. Виправлення: перевірте, щоб довжина входу була кратна 192, і видаліть помилку, якщо ні. Це негайно перехоплює будь-які залишкові байти, замість того, щоб тихо їх ігнорувати. Зміни коду відбуваються в solana-sdk і поставляються з Agave v3.1.0.
1,25K