Поиск уязвимостей безопасности в кластерах Kubernetes
kube-hunter больше не находится в активной разработке. Если вы заинтересованы в сканировании кластеров Kubernetes на предмет известных уязвимостей, мы рекомендуем использовать Trivy. В частности, сканирование конфигураций Kubernetes на предмет ошибок и сканирование уязвимостей KBOM от Trivy. Узнайте больше в документации Trivy.
kube-hunter ищет уязвимости в кластерах Kubernetes. Инструмент был разработан для повышения осведомленности и видимости проблем безопасности в средах Kubernetes. Вы НЕ должны запускать kube-hunter на кластере Kubernetes, который вам не принадлежит!
Запуск kube-hunter: kube-hunter доступен в виде контейнера (aquasec/kube-hunter), а также мы предлагаем веб-сайт kube-hunter.aquasec.com, где вы можете зарегистрироваться онлайн, чтобы получить токен, позволяющий просматривать и делиться результатами онлайн. Вы также можете запустить код Python самостоятельно, как описано ниже.
Изучение уязвимостей: База знаний kube-hunter включает статьи об обнаруживаемых уязвимостях и проблемах. Когда kube-hunter сообщает о проблеме, он отображает её VID (идентификатор уязвимости), чтобы вы могли найти её в базе знаний по адресу https://aquasecurity.github.io/kube-hunter/
Если вас интересует интеграция kube-hunter с матрицей ATT&CK для Kubernetes, продолжите чтение
Демонстрационное видео kube-hunter
kube-hunter теперь поддерживает новый формат матрицы ATT&CK для Kubernetes. В то время как уязвимости kube-hunter представляют собой набор творческих техник, призванных имитировать атакующего в кластере (или за его пределами), MITRE ATT&CK определяет более общие стандартизированные категории техник для этого.
Вы можете рассматривать уязвимости kube-hunter как небольшие шаги для атакующего, которые следуют пути более общей техники, к которой он стремится. Большинство охотников и уязвимостей kube-hunter можно с большой точностью отнести к этим техникам, поэтому мы перешли на стандарт матрицы.
Некоторые уязвимости kube-hunter, которые мы не смогли сопоставить с техниками Mitre, помечены ключевым словом General

Существует три различных способа запуска kube-hunter, каждый из которых предлагает свой подход к обнаружению слабых мест в вашем кластере:
Запустите kube-hunter на любой машине (включая ваш ноутбук), выберите удаленное сканирование и укажите IP-адрес или доменное имя вашего кластера Kubernetes. Это даст вам взгляд на вашу установку Kubernetes глазами злоумышленника.
Вы можете запустить kube-hunter непосредственно на машине в кластере и выбрать опцию сканирования всех локальных сетевых интерфейсов.
Вы также можете запустить kube-hunter в поде внутри кластера. Это покажет, насколько ваш кластер будет уязвим, если один из ваших подов приложения будет скомпрометирован (например, через уязвимость в программном обеспечении). (флаг --pod)
Сначала проверьте эти предварительные требования.
По умолчанию kube-hunter запустит интерактивную сессию, в которой вы сможете выбрать один из следующих вариантов сканирования. Вы также можете указать параметр сканирования вручную из командной строки. Вот ваши варианты:
Для указания удаленных машин для охоты выберите вариант 1 или используйте опцию --remote. Пример:
kube-hunter --remote some.node.com
Для сканирования интерфейсов используйте опцию --interface (при этом будут просканированы все сетевые интерфейсы машины). Пример:
kube-hunter --interface
Для указания конкретного CIDR для сканирования используйте опцию --cidr. Пример:
kube-hunter --cidr 192.168.0.0/24
Установите флаг --k8s-auto-discover-nodes, чтобы запросить Kubernetes для получения всех узлов в кластере, а затем попытаться отсканировать их все. По умолчанию будет использоваться конфигурация внутри кластера для подключения к API Kubernetes. Если вы хотите использовать явный файл kubeconfig, укажите --kubeconfig /путь/к/kubeconfig/файлу.
Также обратите внимание, что это всегда делается при использовании режима --pod.
Чтобы имитировать атакующего на ранних стадиях, kube-hunter не требует аутентификации для охоты.
Имперсонация - Вы можете предоставить kube-hunter конкретный токен сервисного аккаунта для использования во время охоты, передав JWT Bearer токен секрета сервис-аккаунта вручную с флагом --service-account-token.
Пример:
$ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni...
При запуске с флагом --pod kube-hunter использует токен сервисного аккаунта, смонтированный внутри пода, для аутентификации в сервисах, которые он находит во время охоты.
--service-account-token имеет приоритет при запуске в виде подаАктивная охота — это опция, при которой kube-hunter будет эксплуатировать найденные уязвимости для поиска дальнейших уязвимостей. Основное различие между обычной и активной охотой заключается в том, что обычная охота никогда не изменяет состояние кластера, в то время как активная охота потенциально может выполнять изменяющие состояние операции с кластером, что может быть вредно.
По умолчанию kube-hunter не выполняет активную охоту. Для активной охоты в кластере используйте флаг --active. Пример:
kube-hunter --remote some.domain.com --active
Вы можете увидеть список тестов с опцией --list. Пример:
kube-hunter --list
Чтобы увидеть также тесты активной охоты, а также пассивные:
kube-hunter --list --active
Чтобы увидеть только карту сети ваших узлов, запустите с опцией --mapping. Пример:
kube-hunter --cidr 192.168.0.0/24 --mapping
Это выведет все узлы Kubernetes, найденные kube-hunter.
Для управления логированием вы можете указать уровень журнала, используя опцию --log. Пример:
kube-hunter --active --log WARNING
Доступные уровни журнала:
По умолчанию отчет отправляется в stdout, но вы можете указать другие методы, используя опцию --dispatch. Пример:
kube-hunter --report json --dispatch http
Доступные методы отправки: