Почему это важно?

Любой злоумышленник может перехватить любое HTTPS-соединение, которое устанавливают эти инструменты.

Для git это означает, что клонирование и pulling из https:// репозиториев могут доставить код по выбору атакующего, push-операции могут быть изменены в пути передачи, а учётные данные вроде GitHub токенов могут быть перехвачены.

Чтобы проверить, скомпрометирован ли ваш git, выполните:

git ls-remote https://git-emudhra.we-have-a-problem.com/check.git

Ошибка сертификата означает, что ваш git защищён. Если git выводит коммит, значит git скомпрометирован. Ваши соединения с GitHub или любым другим https:// git-удалённым хранилищем могут быть перехвачены и изменены.

Чтобы увидеть атаку во всём её объёме, выполните команду ниже в временной директории. Она клонирует репозиторий с тестового сервера, выдающего себя за GitHub. Опция -c перенаправляет github.com на наш тестовый сервер только для этой команды. Сервер предоставляет сертификат github.com, выданный одним из скомпрометированных промежуточных центров eMudhra.

git -c http.curloptResolve=github.com:443:15.235.19.186 clone https://fake-user@github.com/galadran/emudhra-git-test

Исправленный git откажет с ошибкой сертификата. Если клонирование успешно, вы увидите README.md, начинающийся с INTERCEPTED.

Реальный атакующий не нуждается в дополнительной опции. Любой в пути сети между вами и GitHub может перенаправить трафик самостоятельно.

Вы можете заменить демо-репозиторий на любой другой, открытый или приватный. Оставьте префикс fake-user@. Без него git отправил бы ваши учётные данные GitHub на тестовый сервер. Например:

git -c http.curloptResolve=github.com:443:15.235.19.186 clone https://fake-user@github.com/Homebrew/brew

curl, python3 и другие инструменты, поставляемые Apple, скомпрометированы таким же образом. Чтобы проверить curl, выполните:

curl https://dv-g3b-noct-emudhra.we-have-a-problem.com/
curl https://dv-g3b-aaa-noct-emudhra.we-have-a-problem.com/

Ошибка сертификата означает, что curl защищён.

Что должна сделать Apple?

Apple уже защитила Safari и другие приложения, построенные на её сетевой платформе.

Apple необходимо срочно отправить обновление для разработчиков macOS, например удалив скомпрометированные корневые сертификаты из /etc/ssl/cert.pem.

Что могут сделать разработчики тем временем?

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

Команды безопасности должны также рассмотреть, используются ли macOS-runner'ы в их CI или другой инфраструктуре сборки, и оценить риск цепочки поставок.