На сервере крутится обычный контейнер, а рядом — открытый наружу Docker API на 2375 без пароля. Для Carbonato этого хватает: ботнет находит такую машину, захватывает её и превращает в точку входа для следующей атаки.

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

Зачем вообще смотреть на Carbonato

Carbonato показал, как быстро старые ошибки конфигурации превращаются в удобный плацдарм для атаки. Открытый Docker API без аутентификации — не редкость в плохо администрируемых средах, а ботнету именно такие цели и нужны.

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

Для понимания общей логики атак пригодится и разбор привычных операций как точек атаки: именно на таких мелочах злоумышленники и строят кампании.

Как работает атака

Сначала Carbonato ищет Docker-хосты, где API доступен на порту 2375 без аутентификации. Затем он использует API, запускает привилегированный контейнер и добирается до самого хоста.

Дальше начинается закрепление. Вредонос создаёт cron-задачи, таймеры systemd, прописывается в rc.local, добавляет хуки OpenRC и ставит watchdog-скрипты, чтобы возвращаться после удаления. Параллельно он поднимает обратный SSH-туннель и ставит SSH-сервер с ключом операторов.

Заражённая система ещё и ищет новые жертвы. Каждые пять минут Carbonato сканирует соседние сети в поисках других Docker-демонов с открытым API, так что одна ошибка может быстро разрастись в серию заражений.

Чем отличается этот ботнет

Главная особенность Carbonato — связка с Hermes Agent, опенсорсным фреймворком для ИИ-агентов. По сути, вредонос не переписывает платформу под себя, а подменяет файл SOUL.md, который задаёт «персону» агента.

В результате появляется GH0ST — агент, который должен выполнять команды операторов, держать доступ к системе и игнорировать моральные ограничения. Он получает задания через Telegram, генерирует команды для терминала, смотрит на вывод и решает, что делать дальше.

Это не полностью автоматическая атака. Исследователи описывают интерактивный цикл: человек задаёт цель, а ИИ помогает подобрать и выполнить нужные шаги. Для злоумышленников это удобно — меньше рутины, больше скорости.

Если смотреть шире, это тот же тренд, о котором мы писали в материале про то, как ИИ ускорил фишинг: технологии сами по себе не опасны, но резко снижают порог входа для атакующих.

Какие есть варианты защиты

Один: закрыть Docker API от внешней сети

Это базовый и самый надёжный шаг. Docker API не должен торчать в интернет без жёсткой необходимости, а если доступ нужен, его надо ограничить сетью и проверкой личности.

Плюс очевиден: ботнет просто не увидит хост. Минус тоже понятен — нужна дисциплина в настройках и контроль за тем, кто и как разворачивает сервисы.

Два: включить аутентификацию и сегментацию

Если инфраструктура сложная, одной настройки мало. Доступ к API надо закрыть аутентификацией, а сами узлы — вынести в сегменты, где у них нет прямого выхода наружу.

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

Три: следить за признаками компрометации

ThreatDown указывает на несколько маркеров: файл «персоны» GH0ST, переменную CARBONATO_API_KEY, необычный Telegram-трафик и обратные SSH-туннели.

Такой подход полезен, когда атака уже могла пройти первый рубеж. Он не заменяет защиту, но помогает заметить проблему раньше, чем хост начнёт сканировать соседние сети.

Кому что подходит

Малому бизнесу и отдельным командам хватит базовой гигиены: не публиковать Docker API наружу, проверять конфигурацию и отключать лишние сервисы. Это дешевле любого расследования.

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

Если же инфраструктура живёт в облаке или постоянно меняется, важно ещё и следить за журналами, автозапуском и исходящими соединениями. Carbonato как раз показывает, что один пропущенный порт может быстро превратиться в стойкий удалённый доступ.

Что делать прямо сейчас

  • Проверить, не доступен ли Docker API извне на порту 2375.
  • Включить аутентификацию и ограничить доступ к Docker-хостам по сети.
  • Убрать лишние механизмы автозапуска: cron, systemd-таймеры, rc.local, OpenRC-хуки.
  • Просмотреть журналы на предмет обратных SSH-туннелей и неизвестных ключей.
  • Проверить исходящие соединения на необычный Telegram-трафик.
  • Искать признаки компрометации: CARBONATO_API_KEY, файл SOUL.md с подменой «персоны» GH0ST.
  • Разделить среду на сегменты, чтобы заражённый хост не видел соседние сети.
  • Если нужна дополнительная защита переписки и метаданных в поездках, заранее настроить практичный слой для защищённого трафика.
Поделиться: