Канал о (не)безопасности Kubernetes + микросервисных, контейнеризированных приложений. Ведет команда www.luntry.ru Вопросы, идеи, предложения => @Qu3b3c https://knd.gov.ru/license?id=673ddbc21039886b1d03b7ce®istryType=bloggersPermission
Всем, привет!
Мы рады официально объявить дату нашей конференции по безопасности контейнеров и контейнерных сред БеКон 2025 и это 3 июня!
Продажа билетов стартанет на следующей неделе ;)
Также напомним, что прием заявок на доклады идет до 31 марта!
Исследователь Graham Helton
опубликовал ресурс yProbe – Kubernetes YAML Manifest Sanity Checker
.
Онлайн сервис может проверять загружаемые в него YAML
манифесты с Workloads на Pod Security Standard
, а также проверять избыточные RBAC
привилегии в Role
или Cluster Role
.
По сути, yProbe
представляет из себя ничто иное как супер обрезанную версию Policy Engine
в режиме Audit
и с красивой визуализацией.
Также автор выложил исходный код сервиса на Github.
Наверняка многие знают, что с docker socket
можно достаточно легко взаимодействовать при помощи curl
, даже когда в контейнере нет подходящих инструментов или возможности докачать их извне:
$ curl -s --unix-socket /var/run/docker.sock http:/containers/json
containerd socket
? ctr
или crictl
:
$ sudo ctr --address /var/run/containerd/containerd.sock -n k8s.io containers list
CONTAINER IMAGE RUNTIME
01a91532d97f8f7162c477dd1e402520d313e9c4333827d74a93cde25dddc1cc registry.k8s.io/pause:3.6 io.containerd.runc.v2
05536e2ec91d018cdb4edac21ab613b22f0755721e082c99f81b87516bce60ec registry.k8s.io/pause:3.6 io.containerd.runc.v2
0894b4942001821ad9c36949ae7c15fc2dd9b54bf6e5d531b6e5b03e6f5e313c docker.io/calico/cni:v3.25.0 io.containerd.runc.v2
curl
, правда это будет несколько сложнее:
$ echo -ne "\x00\x00\x00\x00\x00" | sudo curl -v -s --http2-prior-knowledge --unix-socket /run/containerd/containerd.sock -X POST -H "content-type: application/grpc" -H "te: trailers" -H "grpc-accept-encoding: gzip" http://localhost/containerd.services.version.v1.Version/Version --data-binary @- --output /tmp/versionresponse.bin
* Trying /run/containerd/containerd.sock:0...
* Connected to localhost (/run/containerd/containerd.sock) port 80 (#0)
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55c22b6bdec0)
> POST /containerd.services.version.v1.Version/Version HTTP/2
> Host: localhost
> user-agent: curl/7.81.0
> accept: */*
> content-type: application/grpc
> te: trailers
> grpc-accept-encoding: gzip
> content-length: 5
>
} [5 bytes data]
* We are completely uploaded and fine
* Connection state changed (MAX_CONCURRENT_STREAMS == 4294967295)!
< HTTP/2 200
< content-type: application/grpc
<
{ [55 bytes data]
< grpc-status: 0
< grpc-message:
* Connection #0 to host localhost left intact
Stephen Bradshaw
рассказал в своём блоге, в одноименных заметках containerd socket exploitation
в трёх частях (1, 2, 3).
Читать полностью…
25 февраля 2025 года рабочая группа SIG Security Kubernetes
опубликовала документ под названием “Shift Down Security”. Цель этого документа — помочь организациям использовать лучшие практики безопасности в облачных средах для снижения бизнес-рисков и повышения продуктивности разработчиков.
В нем описывается, как платформенные команды могут внедрять технологии, такие как “Policy as Code
”, для предотвращения неправильных конфигураций и автоматизации вопросов безопасности во всех приложениях.
Подход “Shift Down Security
” предлагает интегрировать функции безопасности непосредственно в платформу Kubernetes
, что позволяет улучшить защиту и предоставить разработчикам больше возможностей для самостоятельной работы.
Если вы любитель внимательно почитать release notes
, то прочитав их к последнему релизу Docker 28, наверняка ваше внимание зацепили следующие изменения:
Fix a security issue that was allowing remote hosts to connect directly to a container on its published ports. moby/moby#49325
Fix a security issue that was allowing neighbor hosts to connect to ports mapped on a loopback address. moby/moby#49325
Docker
являются маршрутизаторами, поэтому другие хосты в той же локальной сети, где работает Docker
, могут получить доступ к контейнерам с запущенными сервисами, даже если эти порты не опубликованы, просто изменив свою таблицу маршрутизации так, чтобы она указывала на хост с Docker
, для этой сети.CVE
. Также готовится заметка в блог Docker
о том как эта уязвимость может повлиять на конечных пользователей.
Читать полностью…
Начнем эту неделю с простенькой статьи "Why running as root in Kubernetes containers is dangerous?". Целевая аудитория начинающие, но читайте ее внимательно ;) Уже ("наверное") скоро можно будет обсудить 0day
уязвимость в Kubernetes
, касающийся данного аспекта!
P.S. В Luntry детект уже в процессе добавления, статья для блога уже почти готова - ждем патча.
Довольно часто бывает так, что во время пентеста, оказавшись внутри контейнера, внутри либо нет никаких инструментов, либо нет возможности их докачать. Однако, многие популярные образы образы, например go
, haproxy
, kong
, nginx
и другие distroless
образы содержат бинарь с openSSL
.
Атакующие могут воспользоваться openSSL
для сканирования сети, например, с помощью такого oneliner
:
Читать полностью…
LOS_24_IP="ENTER_IP_TO_SCAN";IP=$(echo $LOS_24_IP | cut -d"." -f1,2,3);for i in $(seq 1 255); do NEW_IP=$(echo $IP.$i); (timeout .1 openssl s_client $NEW_IP 2>&1 | grep -q "connect:errno" && echo "$NEW_IP,up" 2>/dev/null) 2>/dev/null ;done
Если вам не хватает хардкора в теме безопасности контейнеров и Kubernetes
, то специально для вас у нас в блоге вышла статья "Ломаем ваши видеокарты: распаковка эксплойта для CVE-2024-0132 под NVIDIA Container Toolkit"!
Тема острая, горячая приправленная ML
-кластерами, драйверами видеокарт, атакой TOCTOU
, проблемой разыменования symlinks
;)
При этом тема очень актуальная ввиду все большего количества систем, работающих с видеокартами.
P.S. Раньше всех о таких материал можно узнать на нашем официальном канале.
В рамках недавно прошедшей конференции FOSDEM 2025 было ряд треков, которые явно подходят под тематику нашего канала и будут интересны нашей аудитории, а именно:
- Containers (тут и про Kubernetes
есть, конечно)
- eBPF (один доклад по ИБ)
- Monitoring and Observability (и k8s
и eBPF
тоже есть)
- Security (есть хорошие темы)
- SBOM (море всего интересного)
2025
-ый год начался с очередной CVE
для Kubernetes
. CVE-2025-0426: Node Denial of Service via kubelet Checkpoint API аффектит версии kubelet
с 1.32.0 – 1.32.1. 1.31.0 – 1.31.5, 1.30.0 – 1.30.9
, а также все версии до 1.25,
поскольку поддержка Container checkpoint
была добавлена как alpha feature
в этой версии.
Для эксплуатации уязвимости злоумышленнику достаточно отправить большое количество запросов на создание container checkpoint
на read-only HTTP port
(если включен, то по умолчанию 10255
), что вызовет многократное создание файлов с checkpoints
в /var/lib/kubelet/checkpoints
и как следствие устроит DoS
для Node
.
Однако, чтобы узявимость была эксплуатабельна должно сойтись несколько факторов:
1) Должен быть включен read-only port
у kubelet
. Он включается отдельным параметром в конфиге
2) Используемый container runtime
должен поддерживать container checkpointing feature
, например CRI-O v1.25.0+
(с включенным параметром enable_criu_support
) или containerd v2.0+
с установленным criu
3) В самом kubeapi
должен быть включен ContainerCheckpoint feature gate
Мы видим как у наших клиентов и друзей все больше появляется самописных kubernetes
операторов (про сторонние даже говорить нечего - их очень много уже в любой инфраструктуре). Тут важно понимать какие с ними могут быть проблемы. И как раз для этого может пригодиться работа "An Empirical Study on Kubernetes Operator Bugs", где рассматривается 210
ошибок с 36
операторов. Это все хорошо классифицировано и систематизировано, что позволяет поучиться на ошибках других и не допускать подобного в своих проектах.
8 февраля проходил Red Team Village Overflow
с множеством различных воркшопов, тему Kubernetes Security
также не обделили вниманием.
На протяжении почти двух часов Graham Helton
(Red Team Security Engineer, Google
) в своем воркшопе Breaching Bare Metal Kubernetes Clusters
рассматривает несколько сценариев атак, которые могут быть использованы для полной компрометации кластера Kubernetes
:- Namespace isolation
- Pod breakout
- RBAC abuse
- Steal Secrets
После каждой атаки автор рассмотрел средства контроля, которые могут остановить или смягчить каждую атаку, какие инструменты следует иметь в своем арсенале при проведении аудита Kubernetes
, а также последствия (и заблуждения) Kubernetes
для безопасности.
Со слайдами и лабами из воркшопа можно ознакомиться в репозитории автора. Запись стрима доступна на YouTube.
Мы наконец-то сделали официальный telegram канал для нашего решения Luntry, где будет публиковаться информация как о самом решении, так и наших активностях, новостях. Ну и хорошим техническим материалом канал не будет обделен. Там уже сейчас можно ознакомиться со статьей про инцидент SolarWinds в контейнерном Мире.
Подписывайтесь!
Есть такое предчувствие, что такие механизмы как AppArmor
и Seccomp
получат вторую жизнь и все благодаря контейнерам =)
Проект Kubernetes-AppArmor-Profiles еще одно подтверждение этому. В нем собраны AppArmor
и Seccomp
профили для популярных образов приложений: grafana
, ingress-nginx
, memcached
, nginx
, postgresql
, prometheus
, redis
, tomcat
, traefik
.
P.S. Ну и не зря же мы в наш Luntry пару лет назад добавляли генератор AppArmor
профилей в конце концов ;)
В прошлом году, в одном из постов, мы рассказывали про инструмент k8spider и его возможности. Его автор совсем недавно выпустил статью "Spider in the Pod - How to Penetrate Kubernetes with Low or No Privileges", в которой рассказал как можно пентестить Kubernetes
когда привилегий совсем нет или их очень мало.
Автор разбирает несколько кейсов для получения первоначального доступа: Java Heapdump to Cluster Initial Access, Gain Cluster Admin via Weave Scope Internal Unauthenticated Service, Leakage of sensitive information via mutating webhoo
k и Attacking persistent Database backend with NFS/CSI storage
. Крайне рекомендуем ознакомиться со всеми более детальней!
В своем повествании автор возвращается к k8spider
, а точнее улучшениям которые были внесены в последней версии. Теперь k8spider
умеет парсить метрики kube-state-metrics
и по ним восстанавливать информацию по доступным ресурсам и их конфигурации.
Стали доступны материалы с нашего вебинара "Безопасность контейнеров и Kubernetes для CISO" запись (ВК,YouTube) и слайды (тут). Приятного просмотра!
P.S. Скоро объявим даты нашего следующего вебинара "Безопасность контейнеров и Kubernetes для SOC".
Сегодня в центре нашего внимания документ "SoK: A Comprehensive Analysis and Evaluation of Docker Container Attack and Defense Mechanisms" (github).
В данной работе авторы пытаются систематизировать атаки на контейнеры и механизмы их защиты.
Атаки:
1) Execute Arbitrary Code
2) Gain Privilege
3) Disclose Credential Information
4) Authentication Bypass
5) Denial Of Service
Защитные техники:
1) Static Scanning
- тут сканы на уязвимости образов
2) Image Hardening
- тут уменьшение поверхности атаки, убирая все лишнее
3) Security Policies and Practices
- тут отсутствие запуска от root
, флага privileged
, использование AppArmor
и Seccomp
профилей
4) Dynamic Anomaly Detection
- обучение и обнаружение аномалий
В выводах авторы пришли к тому что нужно сочетать как статические, так и динамические механизмы безопасности.
Послевкусие после изучения материала странное - вроде и много что упомянули, но при этом есть что еще добавить и в атаках и в защитах ...
Вчера готовясь к одному закрытому мероприятию, подбивал разные наши данные по результатам наших аудитов/пентестов контейнерных сред под управлением Kubernetes
(за другие мы и не беремся) и можно констатировать следующие:
1) В 95%
проектах мы получали в итоге права роли Cluster Admin
- анализом и контролем RBAC
занимается мало кто, в итоге выливается в это.
2) Использование эксплоитов для конкретных CVE
составляет всего около 5%
от всех наших находок - почти все это было для побега из контейнера через уязвимый системный компонент/сервис.
3) Абсолютное большинство успешных атакующих действий было через специально подготовленный YAML
- тут не удивительно, k8s
система декларативная и все крутиться вокруг них и с помощью правильных политик на Policy Engine
это можно было бы предотвратить.
4) Много специфичных, уникальных кейсов - тут тоже не удивительно, все k8s
кластера непохожие друг на друга, все готовят их под свои задачи, специфику и т.д.
Всем хороших выходных!
Наши друзья зарезили проект для графической генерации AuditPolicy
для Kubernetes
! Проект находиться в стадии beta
, но с ним уже можно ознакомиться тут. Подробнее ребята писали о проекте тут.
При этом хочется напомнить о замечательном докладе Алисы Кириченко (один из авторов данного проекта) "Вы еще не читаете Kubernetes Audit Log? Тогда мы идем к вам!" (слайды, видео) с прошлой конференции БеКон 2024.
В комментариях к посту можно накидать идей для развития проекта, чтобы вам хотелось в нем видеть, да и вообще обратную связь для авторов.
Уже завтра состоится наш вебинар «Безопасность контейнеров и Kubernetes для CISO» и мы настоятельно рекомендуем перед ним ознакомиться (или освежить в памяти) выступление "Почему защитой k8s должно заниматься целое подразделение?" (слайды, видео) от Артем Мерец (Т-Банк) с прошлогодней конференции БеКон 2024. Будет достаточно пересечений и отсылок к нему, и вообще полезно посмотреть на то как к данному вопросу подходят другие компании.
P.S. Прием заявок на доклады БеКон 2025 еще идет.
У себя на сайте мы выложили запись выступления "Основы анализа СЗИ в контейнерном исполнении с помощью Luntry". В рамках которого можно посмотреть как подходить к изучению и анализу абсолютно любого неизвестного контейнерного приложения в Kubernetes
. В результате понять что и как работает внутри контейнера, какую сетевую активность вызывает и как вообще это приложение соответствует лучшим практикам безопасности. Это будет полезно как исследовательским лабораториям, так и специалистам ИБ, которые проводят работы по ПМИ новых релизов своих или сторонних разработчиков.
Сегодня хочется познакомить вас с академическим исследованием "Uncovering Threats in Container Systems: A Study on Misconfigured Container Components in the Wild", выпущенным в конце прошлого года.
Во внимание исследователей попали Docker
и Kubernetes
, а основной упор тут на доступные в сети интернет их системные компоненты, которые ясно дело не должны туда торчать и предоставляют дополнительные вектора атак. Такие вещи они назвали Misconfigured Container Components
сокрушённо MCC
. В итоге таких неблагонадежных систем в интернете нашлось 1,003,947
. Для сбора данных использовали Shodan API
. В работе есть много разных интересных таблиц и классификаций, так что рекомендуем ознакомиться самостоятельно.
В прошлом году была раскрыта очередная уязвимость в ядре – CVE-2024-36972
. И помимо локального повышения привилегий с помощью эксплуатации этой уязвимости можно добиться Container Escape
!
Бага была обнаружена в рамках kernelCTF
(что это такое мы не раз рассказывали на канале). А совсем недавно появился публичный эксплойт.
Уязвимость затрагивает довольно свежие версии ядер:v6.8 – v6.9
v5.15.147
v6.1.78
v6.6.17
На нашем сайте стали доступны материалы с вебинара "Фреймворк безопасности контейнеров JCSF" (слайды и видео на VK,YT). Это почти 2 часа полезного материала про то как смотреть и делать безопасность в Kubernetes
.
Cегодня хотим обратить ваше внимание на информационное сообщение ФСТЭК России от 13 января 2025 г. N 240/24/38. Оно посвящено повышению безопасности средств защиты информации, в состав которых разработчики включают средства контейнеризации или образы контейнеров.
На нашей памяти это второе упоминание контейнеров/образов/микросервисов ФСТЭКом после публикации 118 приказа. Очень здорово, что регулятор все больше внимание удаляет данной теме!
И как раз в тему этого будет наш воркшоп “Основы анализа СЗИ в контейнерном исполнении с помощью Luntry” в рамках ТБФорум.
Изначально мы просто планировали сделать просто про релиз фреймворка безопасности контейнеров JCSF. А потом подумали а почему бы не пригласить коллег и вместе рассмотреть и обсудить их фреймворк в рамках отдельного стрима ?!
Так что завтра в 11:00 проведем эфир и там поговорим о фреймворке и вообще про безопасность Kubernetes
.
Если у вас уже есть вопросы по теме, то оставляйте их в комментариях к данному посту - постараемся все это задать/уточнить/обсудить.
Регистрация тут.
12 февраля команда Luntry едет в Екатеринбург
на Квартирник по безопасной разработке – встреча сообщества, на которой мы обсудим важность DevSecOps
в 2025
году, обменяемся опытом и идеями в обстановке дружеского квартирника.
В 18:20 будет доклад Сергея Канибора, R&D Luntry (и автора данного канала), на тему “Безопасность ML кластеров Kubernetes”.
Мероприятие проходит онлайн
и оффлайн
, начало в 16:00. Зарегистрироваться на квартирник можно по ссылке – количество мест ограничено!
P.S. Приходите пообщаться лично)
В декабре прошлого года ресерчеры из Unit 42
выпустили новое исследование – "Dirty DAG: New Vulnerabilities in Azure Data Factory’s Apache Airflow Integration".
На первый взгляд ничего общего с Kubernetes
тут нет, но как раз благодаря ряду критичных мисконфигов в инстансе Apache Airlfow
, запущенного под управлением K8s
исследователи смогли продвинуться дальше.
Получив реверс-шелл (ввиду отсутствия Network Policy
), благодаря DAG
, ресерчеры оказались внутри контейнера, использующего Service Account
с правами Сluster-Admin
. Далее они без особого труда прочитали секреты и сбежали на Node
.
Дальнейшие их продвижение затрагивало сервисы Azure
, но первоначальный доступ был получен именно благодаря недостаткам в кластере K8s
.
25 февраля
в 11:00
мы проведем вебинар «Безопасность контейнеров и Kubernetes для CISO».
Вебинар будет интересен также C-level
, тимлидам и руководителям информационной безопасности, которые работают с контейнерными средами или планируют их внедрение. Мы расскажем о ключевых аспектах безопасности контейнеров и Kubernetes
, поделимся практическим опытом и ответим на ваши вопросы.
Команда Luntry уже более 5
лет помогает компаниям из разных секторов (банки, ритейл, финансы и др.) обеспечивать безопасность контейнерных инфраструктур. Мы работали с кластерами различного размера и уровня зрелости, поэтому можем поделиться релевантным опытом как для новичков, так и для экспертов в области контейнеризации.
В рамках вебинара рассмотрим:
- Как и почему контейнеризация завоевывает инфраструктуры
- Что такое контейнеры и Kubernetes
- Как смотреть на защиту контейнерных сред
- Как совместно с ИТ это все использовать на благо, а не во вред
- Почему защита Kubernetes
это не то же самое, что и защита Windows/Linux/Mac
сред
- Какие подводные камни есть при защите контейнерных сред
Регистрация по ссылке.
В блоге исследовательской команды Aqua Security
вышел пост с громким названием "OPA Gatekeeper Bypass Reveals Risks in Kubernetes Policy Engines"! А по факту просто некорректно написанная политика... И такую некорректную политику можно написать и во всех других PolicyEngine
. Помимо этого мы на нашем канале уже об этом писали 3
года назад - вот оригинальный пост.
Вывод тут простой - внимательнее читайте наши посты и будете в курсе самых интересных кейсов раньше других ;)