• Исследователи Neodyme обнаружили ошибку в SPL, которая могла бы позволить красть по $27 млн в час.
  • Команда обратилась к разработчикам проекта, ошибка была исправлена.

Специалисты из команды Neodyme обнаружили ошибку в библиотеке протокола Solana (SPL), которая могла стать причиной кражи средств со скоростью $27 млн в час у крупных DeFi-проектов.

В течение нескольких месяцев под угрозой находились протоколы кредитования Solend, Soda и Larix, а также агрегатор доходности Tulip Protocol. Совокупная TVL (стоимость заблокированных средств) этих проектов достигала $2.6 млрд.

Данный баг был публично раскрыт полгода назад одним из аудиторов группы под ником Simon. В начале декабря им же было обнаружено, что данная уязвимость не исправлена. 

Данная недоработка на первый взгляд казалась безобидной ошибкой округления, но эксперты компании выяснили, что из-за нее можно было бы украсть целое состояние через миллион маленьких операций.

В чем суть ошибки? 

Для приложений на базе Solana существует механизм, который позволяет пополнять кошелек и выводить средства из протокола. Если протокол соответствовал документации SPL, то в ходе вывода средств он округлял сумму до ближайшего доступного числа. Одни люди получали чуть больше доступной суммы, другие — чуть меньше. Исследователи задались вопросом: а можно ли обмануть систему таким образом, чтобы всегда получать чуть больше? Оказалось, что да. 

Проверяя свою теорию на копии блокчейна, экспертам удалось украсть 0.000001 BTC ($0.047). Далее команда Neodyme посчитала, что если осуществлять множество транзакций за короткий промежуток времени, данная ошибка позволяет красть по $7 500 в секунду, или по $27 млн в час. Сколько могли бы еще украсть злоумышленники, остается загадкой, потому что неизвестно, когда ошибку заметили бы. Но исследователи понимали, что под угрозой находится сумма размером более миллиарда долларов.

Команда Neodyme связалась с проектами Solana, которые, по их мнению, были уязвимы из-за данной ошибки. Поскольку многие из них имеют закрытый исходный код, некоторые предположения оказались ошибочными. Tulip Protocol, Solend и Larix исправили ошибку сразу после обращения. 

Solana Labs также внесла поправки в справочные документы, чтобы не создавать проблемы новым проектам.