Поиск по сайту:

Кодек взломан! Что делать сейчас, если вы используете Codecov


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

Что такое Кодеков?

Если вы не занимаетесь непрерывной интеграцией и непрерывным развертыванием/доставкой (CI/CD) или другой автоматизацией разработки программного обеспечения, возможно, вы не знакомы с названием Codecov.

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

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

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

Покрытие кода жизненно важно для создания стабильного программного обеспечения, особенно для больших групп разработчиков. Вы можете понять, насколько серьезно к этому относятся, взглянув на некоторых из 29 000 клиентов Codecov. Такие организации, как Kubernetes, Mozilla, HashiCorp и Atlassian, полагаются на Codecov в своих отчетах о покрытии кода. И поскольку Codecov бесплатен для проектов с открытым исходным кодом, существуют тысячи проектов с открытым исходным кодом, использующих Codecov.

Вот почему это такая хорошая цель для киберпреступников.

Атаки на цепочку поставок

Атака на цепочку поставок компрометирует поставщика или поставщика услуг, чтобы скомпрометировать реальные цели — всех их клиентов и пользователей. Если вы хотите отравить целый город, вы не будете ходить по домам. Вы отравите водоочистную станцию и подождите.

Именно это произошло во время недавней атаки SolarWinds. SolarWinds не была целью, они были просто эффективным способом для злоумышленников добраться до всех клиентов SolarWinds. А поскольку клиенты Solarwinds по большей части были поставщиками управляемых услуг и аутсорсинговыми организациями ИТ-поддержки, все их клиенты также подвергались риску.

Атака кодеков

15 апреля 2021 года Codecov публично сообщила, что сценарий Bash, используемый для загрузки файлов на ее серверы, был изменен злоумышленниками. Предполагается, что первоначальный взлом Codecov произошел в конце января 2021 года. Скомпрометированный скрипт собирал конфиденциальную информацию из сред непрерывной интеграции клиентов и загружал эту информацию на сервер злоумышленника. Учетные данные для доступа, такие как токены идентификаторов и ключи API, а также все, что хранится в переменных среды, были собраны модифицированным сценарием.

Это была классическая атака на цепочку поставок. Внедрив одну строку кода в сценарий загрузки Codecov Bash, злоумышленники получили доступ к средам непрерывной интеграции всех клиентов, которые использовали сценарий. А поскольку этот скрипт используется в трех процедурах загрузки Codecov — Codecov-actions, CircleCl Orb и Bitrise Step — очень немногие клиенты Codecov не подвергаются этому риску.

Это не означает, что все клиенты были взломаны, просто они подверглись угрозе несанкционированного доступа. HashiCorp является одним из клиентов, который, как известно, был скомпрометирован, в то время как другие, такие как Atlassian и Hewlett Packard Enterprises, не обнаружили никаких доказательств компрометации.

Злоумышленники получили доступ к инфраструктуре Codecov через плохо настроенный контейнер Docker. Они добавили строку в скрипт загрузчика Bash на строке 525 в файле. Мы можем выделить новую строку с помощью команды  colordiff. Команда diff будет работать так же хорошо, но вывод colordiff немного легче читать, так как он имеет цветовую кодировку. Он доступен во всех репозиториях дистрибутива Linux.

diff current.sh compromised.sh

IP-адрес сервера злоумышленника — 104.248.94.23, это виртуальный сервер, размещенный на Digital Ocean.

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

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

  • Сотрудничали с Digital Ocean, чтобы отключить сервер злоумышленника.
  • Восстановлены и обновлены все затронутые или потенциально затронутые учетные данные Codecov и закрыт несанкционированный доступ, который позволил изменить сценарий загрузки.
  • Проверили журналы своей инфраструктуры, чтобы определить, как был возможен несанкционированный доступ и какой ключ аутентификации использовался.
  • Улучшены или внедрены инструменты сетевого мониторинга и аудита в ключевых точках их инфраструктуры для обнаружения и предотвращения повторения атак этого типа.

Затронутый? Что вы должны делать сейчас

Codecov отправила электронное письмо всем клиентам, которым, по их мнению, угрожает опасность. Независимо от того, слышали ли вы о них или нет, если ваша организация является клиентом Codecov, вы должны исходить из того, что вы подвергаетесь риску компрометации.

Поскольку учетные данные, ключи подключения и другая важная и конфиденциальная информация передаются от этапа к этапу процесса CI/CD, злоумышленники могли получить эти данные. Возможно, им удалось собрать и извлечь:

  • Любые учетные данные аутентификации или привилегий, токены или ключи, которые были доступны сценарию во время выполнения клиентских процессов CI/CD.
  • Любые сторонние сервисы, данные или исходный код, к которым могут получить доступ процессы CI/Cd.
  • Сведения об удаленном репозитории git.

Вы можете легко проверить, что находится в переменных среды вашей среды CI/CD, используя команду  env и перенаправив ее в less, чтобы сделать ее более управляемой:

env | less

  • Просмотрите выходные данные и, если есть что-то конфиденциальное или разрешающее какой-либо доступ, измените учетные данные для этой учетной записи, платформы или службы.
  • Если вы используете локальную копию скрипта загрузки Bash, вы вряд ли пострадаете, но вам все же рекомендуется заменить этот локальный скрипт последней версией.
  • Проверьте свою систему на наличие попыток использования недействительных учетных данных и ключей. Если попытки обнаружены, это означает, что злоумышленники пытаются использовать информацию, полученную ими с вашей платформы CI/CD, чтобы проникнуть внутрь.

Действуйте оборонительно. Если есть какие-либо подозрения или возможность компрометации, немедленно восстановите соответствующие учетные данные и ключи.