Специалисты из Oak Security подняли тревогу. В Cosmos SDK обнаружен баг, который открывает двери для потенциальных DDoS-атак. В блоге Medium исследователи компании, Эдвард Котыш и Кристиан Вари, объяснили, почему проблема может быть куда серьёзнее, чем кажется. Суть бага в отсутствии учёта газа при исполнении функций BeginBlock и EndBlock. Так было и задумано, они считаются «вне […]
Специалисты из Oak Security подняли тревогу. В Cosmos SDK обнаружен баг, который открывает двери для потенциальных DDoS-атак. В блоге Medium исследователи компании, Эдвард Котыш и Кристиан Вари, объяснили, почему проблема может быть куда серьёзнее, чем кажется.
Суть бага в отсутствии учёта газа при исполнении функций BeginBlock и EndBlock. Так было и задумано, они считаются «вне пользовательских транзакций» и дают разработчикам немного свободного времени на вычисления.
Но, как отмечают исследователи, это самое «свободное время» легко превращается в уязвимость. Если в эти функции добавить плохо оптимизированный или намеренно вредоносный код, можно серьёзно навредить всей экосистеме Cosmos. Речь идёт не просто о лаге или ошибке, а о перегрузке валидаторов, блокировке блоков и даже полном отказе сети.
«Эта свобода открывает ящик Пандоры для всех, кто хочет устроить хаос. Без лимитов по газу BeginBlock и EndBlock могут реально обрушить сеть», — заявили эксперты.
Чтобы проверить уязвимость, команда Oak провела серию экспериментов. В одном из них они вставляли случайные задержки в BeginBlock, от 5 секунд до целой минуты. Уже при таких условиях сеть начинала захлёбываться. Прогресс блоков тормозился, а валидаторы не успевали подписывать блоки вовремя.
Читайте также: Объем торговли на блокчейне Sonic вырос на 130% после анонса Binance об аирдропе S-токенов
Часть валидаторов вообще пропускала фазы голосования, из-за чего общее число голосов падало ниже 2/3, сеть временно зависала. На тестовой сети это выглядело как остановка, но в реальной ситуации с загруженным мейннетом такие сбои могут стать фатальными.
Исследователи из Oak Security отмечают, что баг нужно устранять до того, как им воспользуется кто-то недоброжелательный. Команда предложила конкретные меры, которые помогут зафиксировать уязвимость и не дать превратить её в вектор атаки.
Во-первых, они советуют установить жёсткие вычислительные ограничения, чтобы код в BeginBlock и EndBlock не мог бесконтрольно грузить сеть.
Они выделили три возможных подхода:
Помимо этого, команда призывает разработчиков чаще проводить стресс-тесты и моделировать возможные векторы атаки.
Также предлагается ввести архитектурные защитные механизмы и операционный мониторинг. По мнению экспертов, это поможет отслеживать, когда система начинает работать нестабильно, и вовремя ловить потенциальные сбои, прежде чем они перерастут в остановку всей сети.
На момент публикации Cosmos SDK официально не прокомментировал отчёт Oak Security. Пока не понятно будут ли предпринимать какие-то шаги для устранения уязвимости. Это может быть связано с тем, что сам баг, это не совсем баг в классическом смысле. Скорее, это особенность дизайна, а не ошибка или вредоносный код.
Хорошая новость в том, что разработчики, использующие Cosmos SDK, могут сами внедрить большинство рекомендаций от Oak. Это даст им больше контроля над своим кодом и убережёт сеть от потенциальных DDoS-атак.
Читайте также: Tether увеличил закупки казначейских бондов до $98.5B
Параллельно Cosmos SDK выпустил новую версию v0.53.0. Как заявили разработчики в X, обновление это ответ на боль и фидбек от сообщества, которые накопились по поводу предыдущей версии.
Что добавили:
Обновление уже доступно на GitHub, и разработчики могут переходить на новую версию.
Cosmos SDK остаётся одним из главных инструментов для тех, кто хочет запустить собственную сеть и подключиться к Cosmos.