В приложении Blockfolio обнаружена уязвимость, которая позволяет получить доступ к закрытому исходному коду и внедрить собственный код в репозиторий Blockfolio на GitHub.
Специалист по кибербезопасности из компании Intezer Пол Литвак (Paul Litvak) обнаружил уязвимость в конце апреля, когда решил проверить безопасность используемых им криптовалютных инструментов.
«Спустя некоторое время после изучения новой версии приложения, я обратил внимание на старые версии. Вскоре я обнаружил, что версия от 2017 года имеет доступ к API GitHub», – рассказал Литвак.
Код подключается к репозиторию Blockfolio на Github с помощью набора констант, включающих в себя имя файла и ключ, который Github использует для предоставления доступа к репозиториям. Ниже он отображается как переменная «d».
Приложение отправляло запросы в закрытые репозитории, и эта функция загружала часто задаваемые вопросы Blockfolio непосредственно из GitHub, избавляя компанию от необходимости обновлять информацию внутри приложения. Однако эта функция опасна тем, что позволяет получить доступ и контроль над всем репозиторием Blockfolio на GitHub.
«Я подумал, что, может быть, это просто какой-то старый код, с тех времен, когда приложение только было запущено», – сказал Литвак.
Однако обнаруженный им ключ был до сих пор «активен и имел OAuth Scope «repo», который используется для ограничения доступа приложения к учетной записи пользователя.
Repo, согласно GitHub, предоставляет полный доступ к закрытым и общедоступным репозиториям и включает в себя доступ на чтение и запись кода, а также фиксации состояния репозитория и проектам организации.
«Ключ использовал права для доступа к закрытому хранилищу кода. Любой проявивший любопытство разработчик мог бы перепроектировать старое приложение Blockfolio, воспроизвести его, загрузить весь код Blockfolio и даже вставить свой вредоносный код в базу», – сказал Литвак.
Уязвимость существовала в течение двух лет. Литвак предупредил Blockfolio об этой проблеме через социальные сети, так как у проекта нет программы вознаграждений для разработчиков, обнаруживающих подобные ошибки.
Соучредитель и генеральный директор Blockfolio Эдвард Монкада (Edward Moncada) подтвердил, что ключ доступа GitHub был ошибочно оставлен в предыдущей версии кодовой базы приложения Blockfolio. Когда команда получила предупреждение об уязвимости, Blockfolio аннулировал доступ к ключу.
Монкада сказал, что в течение следующих нескольких дней Blockfolio провела аудит своих систем, и подтвердила, что никто не воспользовался уязвимостью. Поскольку ключ предоставлял доступ к коду, который был отделен от базы пользовательских данных, они не были подвержены риску.
Ключ мог позволить внести изменения в исходный код, но благодаря внутренним процессам подтверждения внесения изменений в систему, никогда не существовало риска, что вредоносный код будет выпущен в версии для пользователей.
Многие криптовалютные проекты имеют уязвимости, которые периодически обнаруживают специалисты по кибербезопасности. Так, недавно исследователи из университетов Норвегии и Люксембурга обнаружили возможность атаки на Lightning Network, при которой могут быть раскрыты балансы узлов.
Кроме того, недавно некастодиальная криптовалютная биржа Bisq остановила торги из-за обнаружения критической уязвимости в системе безопасности.