Kubernetes изменил подход команд к поставке программного обеспечения. Приложения теперь работают где угодно, масштабируются по требованию и развертываются много раз в день, а Helm сделал эту скорость еще более доступной. Чарты упаковывают приложение со всем необходимым для его работы, поэтому установка становится повторяемой, версии отслеживаются, а обновления или откаты выполняются одной командой. Вместо того чтобы писать каждый манифест Kubernetes вручную, вы устанавливаете Ingress-контроллер, стек мониторинга или базу данных с помощью одной команды helm install, часто используя один из тысяч общедоступных чартов на Artifact Hub, которые поддерживаются кем-то другим. Но каждая такая установка основана на доверии.
Helm расширяет цепочку поставок программного обеспечения
Каждый устанавливаемый вами чарт несет в себе решения его сопровождающих, включая то, от чего зависят их проекты, как они собирают и публикуют релизы и кто может изменять их код. Эти решения находятся вне ваших репозиториев и конвейеров, и именно здесь традиционные инструменты безопасности цепочки поставок перестают работать.
Анализ состава программного обеспечения (SCA) проверяет ваш исходный код и манифесты зависимостей, такие как go.mod, package.json и requirements.txt, на наличие уязвимых пакетов с открытым исходным кодом. Сканирование образов контейнеров проверяет создаваемые вами образы на наличие уязвимых пакетов операционной системы и библиотек. SBOM предоставляют запись того, что находится внутри поставляемого вами продукта. Эти средства контроля охватывают код, которым вы владеете, но общественный Helm-чарт добавляет пробелы, для устранения которых они не были предназначены.
Вы развертываете образы, которые не создавали. Чарт извлекает образы из чужого реестра. Эти образы никогда не проходят через ваши репозитории, поэтому SCA вашего исходного кода их не видит.
Некоторые риски не имеют CVE. Сканирование образов ищет известные уязвимости. Оно не скажет вам, что вышестоящая зависимость указывает на учетную запись, которую может зарегистрировать кто угодно, или что CI-воркфлоу сопровождающего запускает код от незнакомцев, имеющих доступ к учетным данным для выпуска релизов.
Теги могут меняться. Чарты часто ссылаются на теги образов, а не на фиксированные дайджесты, поэтому образ, который вы проверяли в прошлом месяце, может оказаться не тем образом, который вы скачиваете сегодня.
В совокупности это означает, что вы можете делать все правильно в своем собственном коде и при этом запускать программное обеспечение, цепочку поставок которого вы никогда не имели возможности изучить.
Представляем защищенные Helm-чарты для WizOS
Эти дополнительные «слепые зоны» — причина, по которой мы создали защищенные Helm-чарты для WizOS. Каждый чарт готов к развертыванию, и Wiz поддерживает его в соответствии с теми же стандартами усиления защиты и устранения уязвимостей, что и базовые образы WizOS, на которых уже строят свои решения ваши команды.
Чтобы увидеть, насколько велик этот разрыв на практике, Wiz Research изучили чарты, которые команды используют чаще всего.
Что Wiz Research обнаружили в 1500 популярных Helm-чартах
Wiz Research изучили исходные репозитории и конвейеры сборки для 1500 самых популярных Helm-чартов на Artifact Hub. Многие чарты используют один и тот же исходный репозиторий, поэтому эти чарты соответствуют 814 уникальным репозиториям на GitHub. Цель состояла не в том, чтобы проверить сами чарты. Цель заключалась в том, чтобы заглянуть на уровень глубже, в проекты, которые создают образы, развертываемые каждым чартом.
- 61 исходный репозиторий (7,5%) имел как минимум один подтвержденный риск в цепочке поставок
61 исходный репозиторий (7,5%) имел как минимум один подтвержденный риск в цепочке поставок
- 9 находок были оценены как критические или имеющие высокую степень опасности
9 находок были оценены как критические или имеющие высокую степень опасности
- 20 чартов имели уязвимости в своих CI/CD-воркфлоу
20 чартов имели уязвимости в своих CI/CD-воркфлоу
- 25 чартов зависели от вышестоящих проектов, которые не поддерживаются или находятся в архиве
25 чартов зависели от вышестоящих проектов, которые не поддерживаются или находятся в архиве
Выделились два шаблона:
Конвейеры сборки, которые слишком сильно доверяют сторонним участникам. В некоторых проектах открытия пулл-реквеста или даже оставления комментария достаточно, чтобы запустить код постороннего лица внутри CI-воркфлоу проекта, имеющего доступ к секретам проекта. Когда пулл-реквест запускает это, исследователи безопасности называют такой шаблон «PWN Request». Злоумышленник, использующий его, может украсть учетные данные и использовать их для изменения проекта или выпуска скомпрометированного релиза.
Зависимости, которыми никто не владеет. Некоторые проекты извлекают код из учетных записей или пространств имен, которых не существует. Любой может зарегистрировать это имя, опубликовать под ним вредоносный код и добиться того, чтобы этот код был включен в сборки проекта.
В обоих случаях сам чарт выглядит чистым. Риск кроется в проекте, стоящем за ним, где у команды, устанавливающей чарт, нет простого способа его увидеть. Две находки, обе из которых уже исправлены, показывают, как каждый шаблон выглядит на практике.
Более пристальный взгляд на KubeView
KubeView — это популярный инструмент с открытым исходным кодом, который рисует живую карту ресурсов в кластере Kubernetes. Один разработчик поддерживает его, команды устанавливают его через Helm-чарт, и ему нужна видимость всего кластера для выполнения своей работы.
Wiz Research обнаружили, что файл go.mod в KubeView ссылается на модуль Go, размещенный под именем пользователя GitHub, которого не существует. Злоумышленник мог бы зарегистрировать это имя пользователя, опубликовать вредоносную версию модуля и добиться того, чтобы она была включена в сборки KubeView. Команды, которые установили или обновили чарт после этого, могли бы развернуть код злоумышленника в своих кластерах.
Wiz Research сообщили об этой проблеме, и сопровождающий удалил зависимость в версии 2.2.1 в течение нескольких дней.
Более пристальный взгляд на Meilisearch
Meilisearch — это поисковая система с открытым исходным кодом, и ее официальный Helm-чарт находится в репозитории meilisearch-kubernetes на GitHub. В этом репозитории был воркфлоу GitHub Actions, который запускался, когда кто-то комментировал issue или пулл-реквест. Воркфлоу извлекал код из форка комментатора с помощью токена бота, который мог выполнять push в репозиторий, и помещал имя ветки форка непосредственно в команду оболочки — это недостаток, известный как «инъекция скрипта».
Воркфлоу также пропускал проверки ассоциации с автором, которые GitHub использует для отличия сопровождающих от посторонних лиц. Это означало, что любой пользователь GitHub мог использовать специально созданное имя ветки или код в своем собственном форке для выполнения команд с правами на push в репозиторий, где поддерживается чарт.
После нашего раскрытия информации Meilisearch быстро patched воркфлоу, добавив авторизацию только для сопровождающих, предотвратив сохранение учетных данных и очистив ввод имени ветки.
Выделились две находки. KubeView имел зависимость Go, которую можно было перехватить, потому что имя пользователя GitHub в его go.mod не существовало. Любой, кто зарегистрировал бы его, мог бы завладеть каждой сборкой. Meilisearch имел воркфлоу, где любой пользователь GitHub мог прокомментировать пулл-реквест и запустить код с привилегированным токеном бота. Оба сопровождающих исправили проблемы в течение нескольких дней. Неправильные настройки CI/CD являются ведущим классом уязвимостей в Helm-чартах. Шей Беркович, Wiz Research
Выделились две находки. KubeView имел зависимость Go, которую можно было перехватить, потому что имя пользователя GitHub в его go.mod не существовало. Любой, кто зарегистрировал бы его, мог бы завладеть каждой сборкой. Meilisearch имел воркфлоу, где любой пользователь GitHub мог прокомментировать пулл-реквест и запустить код с привилегированным токеном бота. Оба сопровождающих исправили проблемы в течение нескольких дней. Неправильные настройки CI/CD являются ведущим классом уязвимостей в Helm-чартах.
Шей Беркович, Wiz Research
Как Helm-чарты WizOS помогают вам избежать этого риска
Helm-чарты WizOS меняют подход к доверию. Вместо того чтобы наследовать каждое решение, принятое в рамках upstream-проекта, вы развертываете программное обеспечение, которое компания Wiz собирает, тестирует и подписывает. Wiz пересобирает каждый чарт в собственном конвейере, поэтому скомпрометированный upstream-процесс, подобный тому, что был в Meilisearch, не сможет проникнуть в то, что вы развертываете.
Минималистичность и усиленная защита по умолчанию. WizOS удаляет все, что не нужно приложениям, по умолчанию запускает их без привилегий root и поддерживает количество CVE на уровне, близком к нулю.
Исправления по графику, на который можно положиться. Как только появляется стабильный upstream-патч, Wiz устраняет критические CVE в течение 7 дней, а уязвимости высокого и среднего уровня — в течение 14 дней, что подкрепляется соглашением об уровне обслуживания (SLA).
Готовность к комплаенсу. Wiz подписывает каждый образ и поставляет его с данными о происхождении и SBOM, поэтому вы можете проверить, откуда он взялся и что внутри.
Найдите чарты, которые стоит заменить в первую очередь
Знать о существовании Helm-чартов WizOS — это только первый шаг. Понимание того, какие чарты в ваших кластерах нужно заменить в первую очередь — это другое. Именно для этого в Wiz предназначена страница «Возможности безопасной архитектуры» (Secure Architecture Opportunities).
Страница «Возможности безопасной архитектуры» анализирует образы контейнеров в вашей среде и показывает, где доступна альтернатива WizOS. Она группирует возможности по технологиям или проектам, ранжирует их по объему устраняемых рисков и оценивает необходимые усилия. Сводка в верхней части страницы показывает, сколько замен потребуется для устранения критических и высокоуровневых уязвимостей, чтобы вы могли оценить масштаб работы перед началом.
Helm-чарты WizOS отображаются на той же странице. Для чартов, которые уже есть в ваших кластерах, Wiz показывает, какие образы извлекал каждый чарт и какие риски они несут, а затем указывает на соответствующий чарт WizOS. Вместо того чтобы проверять чарты по одному, ваша команда начинает с тех замен, которые устраняют наибольшие риски.
Поскольку список формируется на основе образов, которые Wiz видит в вашей среде, он отражает то, что вы используете на самом деле.
Helm-чарты и базовые образы: работа в связке
Базовые образы и Helm-чарты WizOS охватывают две половины того, что работает в ваших кластерах.
Базовые образы предназначены для приложений, которые вы создаете самостоятельно. Ваш Dockerfile начинается с базового образа WizOS или образа с языком программирования, а ваши команды добавляют поверх него свой код. Helm-чарты охватывают программное обеспечение, которое вы устанавливаете, а не создаете, например, контроллеры ingress, стеки наблюдаемости и системы управления секретами.
При совместном использовании и те, и другие поступают из одного защищенного, подписанного каталога с единым набором обязательств по исправлению уязвимостей. Ваши команды извлекают все из одного реестра с одними и теми же учетными данными, а ваша команда безопасности получает единый стандарт как для программного обеспечения, которое вы пишете, так и для того, которое вы внедряете.
Каталог WizOS продолжает расширяться
Helm-чарты пополнили постоянно растущий поток защищенных образов, на которые команды полагаются каждый день. Недавние дополнения охватывают пять областей:
- Доставка и GitOps. Argo Rollouts для канареечных и blue/green развертываний, включая вариант FIPS. Sealed Secrets для безопасного хранения зашифрованных секретов в git. KEDA для масштабирования рабочих нагрузок на основе событий, включая масштабирование до нуля.
Доставка и GitOps. Argo Rollouts для канареечных и blue/green развертываний, включая вариант FIPS. Sealed Secrets для безопасного хранения зашифрованных секретов в git. KEDA для масштабирования рабочих нагрузок на основе событий, включая масштабирование до нуля.
- Наблюдаемость. Grafana Loki и Alloy для защищенного конвейера журналов и телеметрии, с отключенной по умолчанию анонимной передачей данных об использовании. Redis Exporter для метрик Redis и Valkey в Prometheus.
Наблюдаемость. Grafana Loki и Alloy для защищенного конвейера журналов и телеметрии, с отключенной по умолчанию анонимной передачей данных об использовании. Redis Exporter для метрик Redis и Valkey в Prometheus.
- Подпись и комплаенс. Cosign для подписи и проверки образов и артефактов, включая бесключевую подпись. OpenSCAP для сканирования на соответствие требованиям, в комплекте с базовым образом операционной системы общего назначения DISA.
Подпись и комплаенс. Cosign для подписи и проверки образов и артефактов, включая бесключевую подпись. OpenSCAP для сканирования на соответствие требованиям, в комплекте с базовым образом операционной системы общего назначения DISA.
- Данные. Valkey Bundle со встроенными модулями search, JSON, Bloom и LDAP. Redis Operator для управления топологиями Redis через ресурсы Kubernetes.
Данные. Valkey Bundle со встроенными модулями search, JSON, Bloom и LDAP. Redis Operator для управления топологиями Redis через ресурсы Kubernetes.
- Доступ и автоматизация. OpenSSH Server для бастион-хостов и SFTP-эндпоинтов. Ansible для защищенного узла управления с включенными основными коллекциями для облачных платформ.
Доступ и автоматизация. OpenSSH Server для бастион-хостов и SFTP-эндпоинтов. Ansible для защищенного узла управления с включенными основными коллекциями для облачных платформ.
Вы можете изучить полный список в каталоге защищенных образов (Secured Image Catalog) на портале Wiz.
Создавайте быстро и знайте, что вы развертываете
Helm-чарты — один из самых быстрых способов запустить программное обеспечение в Kubernetes, и эта скорость зависит от доверия ко всему, что стоит за ними. Исследование Wiz выявило подтвержденные проблемы в цепочке поставок примерно в одном из 13 исходных репозиториев, лежащих в основе самых популярных чартов, в тех местах, куда стандартное сканирование не добирается. Helm-чарты WizOS позволяют вашим командам сохранить скорость стандартной установки helm, используя чарты, которые Wiz поддерживает в соответствии с теми же стандартами, что и остальной каталог WizOS.
Узнайте больше о WizOS или посмотрите на него в действии.











