В апреле 2021 года неизвестные злоумышленники сумели скомпрометировать онлайн-платформу для тестирования ПО Codecov и добавили сборщик учетных данных к одному из инструментов. Компрометация коснулась продукта Bash Uploader, который позволяет клиентам Codecov передавать отчеты о покрытии кода для анализа.
Известно, что хакер получил доступ к скрипту Bash Uploader еще 31 января 2021 года и постепенно вносил в него изменения, добавляя вредоносный код, который перехватывал загрузки, обнаруживал и собирал любую конфиденциальную информацию, включая учетные данные, токены и ключи. Точкой входа для злоумышленника стала ошибка, допущенная разработчиками в процессе создания образа Docker Codecov, которая позволила хакеру извлечь учетные данные, необходимые для внесения изменений в скрипт Bash Uploader.
Ситуация осложнялась тем, что Codecov используют более 29 000 клиентов, в том числе такие известные компании, как GoDaddy, Atlassian, The Washington Post и Procter & Gamble (P&G). По данным федеральных властей США, которые немедленно занялись расследованием случившегося, злоумышленники использовали похищенные учетные данные клиентов для доступа к сотням сетей.
Точно известно, что из-за этой атаки на цепочку поставок пострадала компания Rapid7, представители которой сообщили, что злоумышленники получили доступ к исходному коду компании. Также о компрометации сообщали разработчики софта из компании Hashicorp, облачный провайдер Confluent, сервис голосовых вызовов Twilio и многие другие.
Как теперь пишут разработчики Codecov, они сворачивают разработку Bash Uploader, а ему на смену придет новый инструмент, написанный на NodeJS. Новый загрузчик уже доступен в бета-версии, в виде статического исполняемого бинарника, который в настоящее время поддерживает системы Windows, Linux, Alpine Linux и macOS.
«В течение последних восьми месяцев Codecov разрабатывает новый загрузчик, который не полагается на bash-скрипт, который мы в настоящее время предоставляем нашим клиентам. Мы запустили этот проект, потому что по мере роста использования Codecov и увеличения скорости разработки Bash Uploader становилось все труднее обслуживать правильно, — пишут разработчики. — Чтобы справиться с последствиями инцидента на уровне продукта, мы сразу предоставили исчерпывающую документацию о том, как верифицировать Codecov Bash Uploader, пока не будет завершен наш новый загрузчик. При этом нашей конечной и долгосрочной целью всегда была полная замена Bash Uploader».
Таким образом, начиная с 1 ноября 2021 года, компания будет выполнять «случайные незапланированные отключения» Bash Uploader, намеренно делая его недоступным, и полностью откажется от него к февралю 2022 года.
Издание Bleeping Computer отмечает, что блог компании гласит, что скомпилированный бинарник нового загрузчика «затрудняет изменение кода посредником» и обеспечивает повышенную безопасность, по сравнению с Bash Uploader.
Но некоторые эксперты не согласны с заявлениями Codecov и уже выразили обеспокоенность по поводу нового загрузчика. К примеру, разработчик Максимилиан Хилс пишет в Twitter, что новый загрузчик полагался на 579 зависимостей и имеет размер 43 Мб. Также Хиллс недоумевает, почему скомпилированный бинарник нового загрузчика должно быть труднее модифицировать.
You can't make this up: @codecov is "reinforcing its security posture" by replacing their recently-compromised bash uploader with a new NodeJS binary. The new uploader has 579 dependencies, weighs 43mb, and they still tell you to just download and run it unverified. ?
— Maximilian Hils (@maximilianhils) June 11, 2021
Другой разработчик, Джош Питтс (Josh Pitts), обратил внимание журналистов на тот факт, что «патчинг» бинарников через Man-in-the-Middle атаку давно возможен. Хуже того, оказалось, что новые двоичные файлы загрузчика не подписаны Codecov:
«Codecov не подписала двоичные файлы для Windows и macOS (где может использоваться подписание кода). Они предлагают проверку открытым ключом, и я настоятельно рекомендую проверять эти подписи, учитывая важности этого ПО», — предупреждает Питтс.
То есть всем, кто загружает новые бинарники загрузчика Codecov, рекомендуется проверить их с помощью GPG/PGP, а затем разместить во внутреннем репозитории (например, Artifactory), что хотя бы поможет снизить риск MitM-атак.