Волонтёрская группа Bitcoin Red Team за 27,5 часа прогнала через автоматический анализ 390 открытых репозиториев, связанных с биткоином, и подала 4962 замечания — из них 85 критических и 635 высокой опасности. Стоимость вычислений составила около 40 тысяч долларов, участвовали 16 добровольцев. Поводом послужил летний взлом аппаратных кошельков.

Коротко: параметры проверки

Инициатива финансируется фондом OpenSats и работает силами волонтёров. Формат — координированный спринт: за один заход, без остановок, охвачены 390 репозиториев открытого кода.

Результат в цифрах: 4962 находки всего, 85 отнесены к критическим, 635 — к высокой степени опасности. По оценке участников, профильные компании берут за сопоставимый объём работ миллионы долларов и тратят месяцы.

Использованный инструментарий планируется открыть, чтобы любая компания могла прогнать через него собственную кодовую базу, включая закрытую. Результаты спринта были опубликованы около десяти дней назад.

Что заставило взяться за проверку

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

Разбор первопричины оказался поучительнее самой кражи. Ошибка свелась к одной неверной проверке в условии при переносе прошивки в марте 2021 года: из-за неё генерация сид-фразы привязалась к программному генератору псевдослучайных чисел, встроенному в исполняющую среду, вместо аппаратного источника случайности, который в устройстве физически есть.

То есть железо для правильной работы имелось, а код к нему не обращался. Одна строка условия отделяла надёжную конструкцию от предсказуемой.

Почему автоматический анализ дал такой результат

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

Ручной аудит дорог и применяется точечно: проверяют самое важное, остальное остаётся без внимания. Автоматический анализ снимает ограничение по охвату — прогнать можно всё сразу, включая мелкие библиотеки, которыми пользуются десятки проектов.

Критические уязвимости не появились за 27 часов. Появилась возможность их увидеть — и выяснилось, что смотреть раньше было слишком дорого.

Кому ещё пригодится такой инструмент

Насколько я это вижу, здесь и находится неудобная часть истории. Инструмент, находящий 85 критических дыр за сутки, при взгляде с другой стороны — машина для поиска целей. Разница между аудитором и нападающим не в возможностях, а в том, что первый сообщает о находке, а второй ею пользуется.

Открытие исходного кода такого инструментария вооружает обе стороны одинаково, и преимущество защитников только во времени: они пришли первыми и могут успеть закрыть найденное. Отсюда практический вывод для пользователя. Ближайшие месяцы стоит ждать не спокойствия, а потока обновлений безопасности — и устанавливать их быстро. Фраза одного из разработчиков о том, что критические ошибки находятся буквально каждый час, звучит тревожно именно поэтому: она описывает не аварию, а начало долгой уборки.

Масштабы спринта

Показатель Значение
Длительность 27,5 часа непрерывной работы
Охват 390 репозиториев открытого кода
Всего замечаний 4962
Критических 85
Высокой опасности 635
Затраты и участники около 40 тысяч долларов на вычисления, 16 волонтёров

Насколько надёжны такие находки

Здесь нужна оговорка: автоматический анализ известен ложными срабатываниями, часть замечаний при разборе оказывается не уязвимостями, а особенностями кода, безопасными в конкретном контексте. Сколько из 4962 находок подтвердилось после ручной проверки, в доступных материалах не приводится. Классификация «критическая» на этапе подачи означает оценку инструмента, а не заключение сопровождающего проект разработчика.

Это не обесценивает работу, но меняет чтение цифры. Восемьдесят пять — число кандидатов на критическую уязвимость, а не число подтверждённых дыр, и разница между этими величинами обычно заметная.

Что это меняет для отрасли

Прежде всего экономику проверки: если охват перестаёт упираться в бюджет, исчезает главный довод в пользу выборочного аудита.

Показательно и то, что программы вознаграждений за найденные уязвимости, о механике которых мы писали отдельно, теперь конкурируют не с одиночным исследователем, а с автоматическим перебором. Ставки в таких программах, вероятно, придётся пересматривать.

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

Частые вопросы

Что именно нашли исследователи?

4962 замечания в 390 открытых репозиториях, из которых 85 отнесены к критическим и 635 к высокой степени опасности.

Сколько это заняло времени?

27,5 часа непрерывного спринта силами 16 добровольцев при затратах около 40 тысяч долларов на вычисления.

Все ли находки — настоящие уязвимости?

Нет данных. Автоматический анализ даёт ложные срабатывания, а сведений о том, сколько замечаний подтвердилось после ручной проверки, в доступных материалах нет.

С чего началась проверка?

С июльского взлома аппаратных кошельков, где ошибка в одной проверке условия сделала ключи предсказуемыми.

Инструмент будет доступен другим?

Заявлено намерение открыть его исходный код, чтобы компании могли проверять собственную кодовую базу, в том числе закрытую.

Что делать пользователю?

Ожидать волны обновлений безопасности и ставить их без промедления: найденное будет закрываться постепенно, а инструмент поиска доступен и другой стороне.

Источники

Материал подготовлен на основе публикаций Bitcoin Magazine и CoinDesk. Фотография: Hugovanmeijeren / CC BY-SA 3.0.