Какие основные угрозы безопасности контейнеров существуют?
Угрозы безопасности контейнеров – это совокупность рисков, возникающих на каждом уровне жизненного цикла контейнеризированного приложения: от сборки образа до работы в продакшене.
Представьте контейнер как квартиру в многоэтажном доме. Угрозы могут исходить от соседей (другие контейнеры на том же хосте), от поставщиков мебели (зависимости и базовые образы), от незапертых дверей (неправильная конфигурация) и от самого жильца (запущенный процесс).
Угрозы на уровне образов
- Уязвимости в базовых образах – устаревшие пакеты и библиотеки с известными CVE (Common Vulnerabilities and Exposures). Каждый непропатченный пакет – потенциальная точка входа для атакующего.
- Вредоносные образы – использование непроверенных образов из публичных реестров (Docker Hub) может привести к внедрению троянов или бэкдоров.
- Утечка секретов – пароли, ключи API, сертификаты, случайно включённые в слои образа. Даже если секрет удалён в последующем слое, он остаётся доступен через
docker history. - Избыточные компоненты – лишние утилиты и инструменты (curl, wget, bash) увеличивают поверхность атаки, предоставляя атакующему инструментарий для дальнейшего проникновения.
Угрозы на уровне среды выполнения (runtime)
- Побег из контейнера (container escape) – эксплуатация уязвимостей ядра Linux для получения доступа к хост-системе. Контейнеры разделяют ядро с хостом, что делает этот вектор особенно опасным.
- Запуск от root – контейнер с правами root (UID 0) при побеге даёт атакующему root-доступ на хосте.
- Привилегированный режим – флаг
--privilegedдаёт контейнеру полный доступ к устройствам хоста, фактически снимая изоляцию. - Незащищённый Docker socket – доступ к
/var/run/docker.sockпозволяет управлять всеми контейнерами на хосте, включая создание новых привилегированных контейнеров.
Угрозы на уровне оркестрации (Kubernetes)
- Неправильная настройка RBAC – избыточные права для сервисных аккаунтов позволяют скомпрометированному поду получить контроль над кластером.
- Отсутствие сетевых политик – по умолчанию любой под может обращаться к любому другому поду в кластере, что облегчает боковое перемещение (lateral movement).
- Незащищённый API-сервер – открытый доступ к Kubernetes API без аутентификации позволяет любому управлять кластером.
- Компрометация etcd – хранилище всех данных кластера, включая секреты в открытом виде (если не настроено шифрование at rest).
Угрозы на уровне цепочки поставок (supply chain)
- Подмена зависимостей (dependency confusion) – вредоносные пакеты с именами, совпадающими с внутренними библиотеками организации.
- Компрометация CI/CD – внедрение вредоносного кода через пайплайн сборки (например, подмена шагов в Jenkinsfile или GitHub Actions).
- Отсутствие проверки целостности – использование образов без верификации подписи не гарантирует, что образ не был подменён.
Угрозы на уровне сети
- Man-in-the-middle – перехват трафика между контейнерами при отсутствии mTLS.
- Незашифрованный трафик – передача данных без TLS внутри кластера позволяет перехватить чувствительную информацию.
- Эксфильтрация данных – несанкционированная отправка данных наружу через незаблокированный egress-трафик.
Вывод
Для банковских систем особенно критичны: утечка персональных данных (ФЗ-152), утечка платёжных данных (PCI DSS), несанкционированный доступ к финансовым транзакциям. Эшелонированная защита (defense in depth) предполагает применение мер на каждом уровне одновременно.
На собеседовании: обычно ожидают, что кандидат перечислит хотя бы 3-4 категории угроз и приведёт конкретные примеры. Упомяните container escape, запуск от root, утечку секретов в образе и отсутствие Network Policies – это покажет понимание разных уровней атаки.