Атака продолжалась около 14 часов 31 августа, с 07:35 до 21:45 UTC. Часть запросов к официальному реестру попадала на серверы злоумышленников, где находилась изменённая копия Coder Registry. В результате разработчик мог обратиться к правильному адресу registry.coder.com и всё равно получить вредоносный Terraform-модуль. Простая проверка домена или разрешение загрузок только с доверенного адреса от такой схемы не защищали.
Вредоносный код запускался через Terraform-блок
data "external" "telemetry" и скрипты dlp.sh и dlp-docker.sh. Похититель искал секреты в переменных окружения, конфигурационных файлах и истории терминала. Под угрозой оказались ключи облачной инфраструктуры и ИИ-сервисов, учётные данные CI/CD, SSH-ключи, OIDC-токены и другие данные, доступные компонентам Coder. При запуске заражённого модуля во время сборки рабочего пространства риск становился ещё выше. Провижионер мог получить пользовательский OIDC-токен, настроенный SSH-ключ и одноразовые токены внешних служб аутентификации. Если провижионер работал внутри
coderd, вредоносный код потенциально видел также пароль базы данных и другие параметры самого Coder. Собранную информацию отправляли на похожий на инфраструктуру разработчика домен coder-infra[.]com, зарегистрированный 28 августа, за три дня до атаки. Под подозрение попадают организации, которые в опасный период создавали новые шаблоны, обновляли их версии, запускали пробную сборку либо разворачивали рабочие пространства без кэширования Terraform-модулей. Кэширование включено по умолчанию, поэтому уже сохранённые ранее безопасные копии могли не затронуть часть установок.
Coder не может точно определить всех пострадавших. Вредоносные серверы принадлежали атакующим, поэтому у компании нет их журналов. Администраторам советуют проверить DNS, межсетевые экраны, прокси и журналы VPC на соединения с
coder-infra[.]com, поискать в журналах провижионера строку data.external.telemetry, удалить подозрительные модули из кэша и сменить все секреты, к которым мог получить доступ провижионер. Компания оценила инцидент как критический с рейтингом CVSS 9,0 из 10. Исправленные выпуски Coder получили номера 2.37.0, 2.36.4, 2.35.7 и 2.34.9. Отдельный CVE инциденту не присвоили, поскольку речь идёт не о классической программной уязвимости, а о компрометации инфраструктуры распространения компонентов.
Coder утверждает, что признаков доступа к клиентским данным, которые хранит сама компания, пока нет. Однако атака показывает неприятную особенность компрометации цепочки поставок: доверенный домен и правильный адрес реестра уже не гарантируют, что полученный оттуда компонент действительно пришёл с сервера разработчика.