Ошибка в одном из контрактов кредитования токенов, который есть частью библиотеки Solana Program Library (SPL), группы внутрицепочечных программ, ориентированных на параллельную среду исполнения уровня Sea на блокчейне Solana, поставила под угрозу средства нескольких протоколов.
Neodyme, агентство по безопасности, раскрыло эту уязвимость несколько месяцев назад и предупредило о ней, но ошибка, из-за своего, казалось бы, безобидного эффекта, не была тогда устранена. Однако в прошедшую пятницу эксперты сообщили о полном исправлении ошибки.
We recently discovered a critical bug in the token-lending contract of the solana-program-library (SPL). This blog post details our journey from discovery, through exploitation and coordinated disclosure, and finally the fix.
— Neodyme (@Neodyme) December 3, 2021
Выявленный баг вызывал нарушение процесса округления, в результате которого на контракт поступало больше токенов, чем вносилось пользователями.
Neodyme, аудиторской группе, пришлось воспроизвести баг и создать скрипт, который использовал уязвимость, чтобы разобраться в проблеме и в конечном итоге исправить её.
По данным экспертов, свыше $2 млрд в нескольких токенах на этих протоколах оказались бы под угрозой риска быть выведенными с кошельков, если бы злоумышленники воспользовались этой уязвимостью. Более того, если бы атака проводилась грамотно, она не вызвала бы никаких сигналов тревоги и просто обнаружилась бы как медленный слив APY в некоторых пулах.
Компания Neodyme отметила в своем заявлении важность открытого исходного кода для аудиторов, чтобы они могли участвовать и помогать исправлять подобные ошибки.
“Мы считаем, что самый безопасный код – это код с открытыми исходниками, и как аудиторы мы считаем, что один из лучших способов написать лучший код – это понять уязвимости.” – отметили в Neodyme.
Обнаружив этот эксплойт, Neodyme поделилась информацией о существовании бага с командами разных проектов Solana, которые затронуты, по их мнению, уязвимостью.