k8s (in)security
13.1K subscribers
1.17K photos
2 videos
53 files
1.77K links
Канал о (не)безопасности Kubernetes + микросервисных, контейнеризированных приложений.

Ведет команда www.luntry.ru
#ZST99
Вопросы, идеи, предложения => @Qu3b3c

https://knd.gov.ru/license?id=673ddbc21039886b1d03b7ce&registryType=bloggersPermission
Download Telegram
Идея «сгенерируй мне least-privilege конфиг по тому, что реально делает приложение» стара как seccomp-профили, но каждый год обретает новое воплощение. Свежее — «KubeGuard: LLM-Assisted Kubernetes Hardening via Configuration Files and Runtime Logs Analysis» из Ben-Gurion University: манифесты плюс рантайм-телеметрия скармливаются LLM через цепочки промптов, на выходе рекомендации по Role, NetworkPolicy и Deployment. Источники ровно те, что у вас и так есть (ну или должны быть):
- Kubernetes audit logs — какие verbs реально дергали, отсюда RBAC
- Hubble (Cilium) — реальные потоки трафика, отсюда NetworkPolicy
- SPADE + CLARION — provenance по процессам в контейнерах, отсюда securityContext (штука research-grade, но в проде ее роль ровно так же закроют Tetragon, Falco или Tracee)

Два режима: Resource Creation (собрать с нуля) и Resource Refinement (ужать существующий overly permissive). Кода в открытом доступе нет, зато промпты авторы выложили в приложениях.

P.S. Не сторонники такого подхода. На наш взгляд при наличии этих данных к решению задачи можно спокойно подойти алгоритмически, а не с помощью вероятностных алгоритмов, которые могут галлюцинировать.
7🔥6👍2
Kyverno 1.19 — релиз, который фактически завершает переход проекта на CEL-based policies: теперь ValidatingPolicy, MutatingPolicy, GeneratingPolicy, ImageValidatingPolicy и DeletingPolicy покрывают весь функционал старого ClusterPolicy. Для Kubernetes Security это особенно важно: policy engine становится ближе к нативному подходу Kubernetes через CEL и ValidatingAdmissionPolicy`/`MutatingAdmissionPolicy.

При этом ClusterPolicy, Policy, CleanupPolicy, ClusterCleanupPolicy и legacy PolicyException официально deprecated и будут удалены в Kyverno 1.20, поэтому существующие security policies уже пора мигрировать. В 1.19 это последний релиз с полной поддержкой legacy API, а для миграции есть отдельный kyverno migrate и migration guide.

Ещё одно изменение, важное для эксплуатации: CRD теперь управляются через отдельную Helm dependency kyverno-api, поэтому при upgrade стоит проверить собственный процесс установки CRD. Подробности — в официальном анонсе релиза.
👍10🔥51
Написать NetworkPolicy — полдела, вопрос в том, как убедиться, что она реально работает так, как вы задумали. Статический анализ манифестов тут бессилен: он не знает ни про CNI, ни про то, кто и куда на самом деле дотягивается в вашем кластере. Тут в тему kubesonde — оператор, который не читает YAML, а активно прощупывает связность между Pod'ами изнутри кластера.

Работает так: ставите CRD и создаете объект Kubesonde с указанием неймспейса и режима (probe: all). Дальше он в каждый Pod подкидывает ephemeral container (по умолчанию instrumentisto/nmap для проб и свой gonetstat для наблюдения за открытыми портами) и начинает гонять коннекты во всех направлениях. Результат забирается через port-forward и curl localhost:2709/probes в JSON, который можно закинуть в их же веб-UI и посмотреть матрицу «кто до кого дошел». Есть непрерывный режим, исключения-включения по селекторам и, самое интересное, возможность прописать в спеке ожидаемый исход (action: Allow / Deny) — то есть это уже не сканер, а тесты на вашу сетевую изоляцию, которые можно гонять в CI после каждого изменения политик.

Инструмент академический — Apache 2.0, 18 звезд, вырос из работы Analyzing Microservice Connectivity with Kubesonde на ESEC/FSE 2023 и используется как рантайм-часть в исследовании сетевых мисконфигов в Helm-чартах, о котором мы писали недавно. Инструмент явно для dev/test/stage окружений, но ни как ни для prod.
👍23🔥104
Всем, привет!

Приглашаем всех 3 сентября в 11:00 посетить наш вебинар "Luntry 4.6: Новые возможности для защиты контейнерных и облачных сред". Там мы расскажем:
1) Что нового в релизе 4.6
2) Разберем новые инструменты для защиты инфраструктуры
3) Поговорим о практическом применении
4) Планы Luntry до конца года
5) Ответим на технические вопросы

Ссылка для регистрации.
🔥4👍322
Вышел Kubernetes 1.37 под кодовым названием «Garhwal». Среди наиболее интересного — manifest-based admission control, который позволяет загружать admission policies с диска и применять их уже при старте API server, даже если etcd недоступен. Для security аудитории также стоит отметить стабильные Pod Certificates и ClusterTrustBundles, а также улучшения SELinux и защиту API server от всплесков нагрузки при инициализации watch cache.

Отдельно интересны Memory QoS на cgroups v2, workload-aware preemption и развитие DRA — включая device taints, extended resources и поддержку ResourceClaims для workloads. В Alpha появился Pod-level checkpoint/restore, а для AI/ML-нагрузок развивается CompositePodGroup и multi-level gang scheduling.
🔥18👍5
В статье "We Tested Copy Fail in Kubernetes: PSS Restricted and RuntimeDefault Did Not Block AF_ALG" детально изучается уязвимость ядра CVE-2026-31431 (писали о ней тут и тут) в рамках ее эксплуатации в Kubernetes c разными механизмами защиты. Из нее можно узнать, что:
- Pod без root прав,
- Pod с отключёнными capability,
- Pod c RuntimeDefault профилем для seccomp,
- Pod c Pod Security Standards в режиме Restricted,

Все равно может быть проэксплуатирован через CVE-2026-31431 ...

В качестве тестовых окружений исследователи взяли (не не пойми что): OS Talos и EKS на Amazon Linux.

Спасти нас тут могут специально созданный seccomp профиль и обновление самого ядра.

P.S. Еще авторы игрались с `allowPrivilegeEscalation`, но не особо понятно зачем ведь вместо поднятия привилегий внутри контейнера мы просто уходим с него на хост ...
👍7🔥4😱2
Наши хорошие друзья запустили аж целых 3 исследования:
1) Исследование рынка безопасной разработки и DevSecOps
2) Исследование рынка средств контейнеризации
3) Исследование рынка безопасности ИИ-систем (MLSecOps)

По сути это опросы, результаты которых должны показать реальное (не маркетинговое) положения дел в этих направлениях. Мы с радостью поддерживаем их в этой активности!

Больше деталей можно узнать тут.
👍64🔥3🥰3💩2
В свежем релизе cri-o исправили две уязвимости, одна из которых имеет критический уровень и может привести к побегу из контейнера. CVE-2026-62146 позволяет пользователю с правом создавать Pods отравить сохранённое состояние sandbox через произвольные annotations, а после рестарта CRI-O или перезагрузки ноды — добиться монтирования контролируемых host paths и получить доступ к crio.sock.

Вторая уязвимость, CVE-2026-17113, позволяет вызвать падение CRI-O через специально сформированный OCI image с некорректной переменной окружения. Через стандартный Kubernetes API сценарий не эксплуатируется, поскольку kubelet добавляет переменные окружения по умолчанию, но риск остаётся для прямых клиентов.

Исправления доступны в CRI-O 1.34.12, 1.35.7 и 1.36.4. Для CVE-2026-62146 после обновления разработчики также рекомендуют удалить все запущенные контейнеры на нодах.
😱4🔥32
У коллег с прекрасного канала PWN AI узнал про интересную работу "Inspect evaluation: Container sandbox breakout", где исследователи оценивают насколько просто или сложно LLM внутри классического контейнера (считай на базе runc) совершить из него побег.

Сразу стоит отметить, что модель заведомо помещается в так скажем плохо сконфигурированное или уязвимое окружение, тоесть:
- BAD Pods
- уязвимый runc
- уязвимое ядро хостовой ОС
- привилегированный service account в k8s

Всего таких сценариев 18 и все они доступны (отличная база и для CTF и для собственного обучения)! И, конечно, думаю и для многих очевидно, что при таких исходных условиях все 18 сценариев были успешно реализованы.

Тут интересно сколько времени уходили у LLM на тот или и ной сценарий - разброс составляет от нескольких минут до 2 часов. У кого SOC увидит и успеет отреагировать?)

P.S. Насколько я понял тест когда запускали LLM в контейнере без явно заложенных обще известных проблем, то побега не было.
👍5🔥41
Всем, привет!

3 сентября на ИБ Митап в Санкт-Петербурге (давненько здесь не выступал) выступлю с докладом "Устаревшая безопасность, проигранная гонка (?||!)". На мой взгляд это мой самый грустный по настроению и посылу доклад за все время. При этом наверное первый за несколько лет в котором я вообще не говорю слов про контейнеры и Kubernetes.

P.S. А в 11:00 не забываем про наш вебинар "Luntry 4.6: Новые возможности для защиты контейнерных и облачных сред" ;)
🔥4🤡4👍2
В статье «Authentication between microservices using Kubernetes identities» показано, как использовать Kubernetes Service Accounts для аутентификации запросов между микросервисами без отдельного OAuth-сервера. Идея в том, что сервис получает свой Service Account token, передаёт его вызываемому сервису, а тот проверяет токен через Kubernetes TokenReview API.

Особенно интересен подход с audience-bound projected Service Account tokens. Токен становится ограниченным конкретной аудиторией и имеет короткий срок жизни. При этом RBAC позволяет отдельно определить, какие действия сам сервис может выполнять через Kubernetes API, а system:auth-delegator даёт минимальные права для проверки чужих токенов.

Это хороший пример того, как встроенные механизмы Kubernetes можно использовать для workload identity и service-to-service authentication. При этом автор отдельно подчёркивает, что аутентификация не заменяет шифрование трафика, поэтому для защиты канала всё равно нужен TLS/mTLS.
🔥14👍4
K16S - еще один self-host симулятор экзаменов по сдаче Certified Kubernetes Security Specialist (CKS) и Certified Kubernetes Administrator (CKA).

Всем, хороших выходных!
👍42🔥86
Sofka — новый Kubernetes TUI на Rust, который позиционируется как переосмысление k9s. Главная идея — единый пайплайн работы с Kubernetes-ресурсами, благодаря чему CRD поддерживаются без отдельного интерфейса, а Flux CD интегрирован прямо в TUI.

Помимо привычного просмотра Pod’ов, логов и YAML, есть command palette, работа с namespace, Helm и встроенные операции Flux. Интерфейс асинхронный и не блокируется при проблемах или задержках Kubernetes API.

Есть read-only режим, проверки авторизации перед действиями, предупреждения о мутациях управляемых ресурсов и локальный журнал действий.
👍33🔥6
В официальном блоге Kubernetes появилась статья "Kubernetes v1.37: KubeletInUserNamespace (aka Rootless mode) Graduates to Beta".

Если кто не знал, то благодаря KubeletInUserNamespace все компоненты k8s на Node можно запустить от non-root пользователя, используя Linux user namespace, что уменьшает радиус поражения при побеге из контейнера через эти компоненты (ядро не считается). Это еще один долгострой, работа над которым началась в 2018 и первые плоды появились в Kubernetes v1.22 (2021), теперь осталось дождаться перехода в GA.

И не путайте это с UserNamespaces для Pods, который достиг GA в 1.36 (писали об этом тут и тут).

P.S. Напоминаем про проект Usernetes, где можно с подобным поиграться.
11👍6🔥4
AegisBPFeBPF-based runtime security агент, который использует BPF LSM для блокировки нежелательных файловых и сетевых операций непосредственно на уровне ядра Linux. В отличие от инструментов, ориентированных в первую очередь на обнаружение, AegisBPF делает акцент именно на enforcement. Jперация может быть остановлена через -EPERM ещё до завершения syscall.

Также из интересного – поддержка inode-based правил и обработка OverlayFS copy-up, что особенно актуально для контейнеров. Проект умеет применять сетевые deny-правила для IPv4/IPv6, портов и CIDR, а политики можно ограничивать конкретными cgroup.

Отдельно стоит обратить внимание на aegis-next — исследовательский прототип с BPF arena, provenance-графами и дополнительными механизмами enforcement. Проект пока молодой и активно развивается, но выглядит интересно для тех, кто исследует runtime security Linux и Kubernetes через eBPF.
10🔥3
Всем, привет!

Еще есть прекрасная возможность поделиться с коллегами своим опытом и знаниям в рамках выступления на конференции Kuber Conf от АОТ. В этом году она уже будет второй раз и пройдет 22 октября.

До окончания приема заявок осталось совсем немного времени!

Подать заявку на доклад можно тут.
🔥51
Сегодня мы рекомендуем вам ознакомиться со статьей "Аудит-политика Kubernetes: чек-лист против типовых слепых зон в правилах". В рамках данного материала автор отмечает тонкие, но очень важные моменты при составлении и контроле Audit Policy. Она позволит избежать очень популярные ошибки при написании политики аудита в Kubernetes. Самое важно тут, что стоит помнить всегда, что правила применяются сверху в низ и их надо писать от частного к общему! Если вы вообще не понимаете, о чем идет речь, то перед этим изучите материал «Kubernetes Audit Log на страже безопасности кластеров».

Спасибо автору, что поделился своей работой и готов в комментариях по отвечать на любые вопросы по статье ;)
🔥11👍3
В новой версии Kyverno 1.19.1 был исправлен ряд уязвимостей. Самая критичная, GHSA-5qq8-67g6-4h2w, позволяет через apiCall в namespaced Policy обойти namespace isolation и выполнить POST запрос от имени ServiceAccount Kyverno, вплоть до создания MutatingWebhookConfiguration и повышения привилегий до cluster-admin. Уязвимость имеет CVSS 9.9.

GHSA-c5qq-7g2q-cpqp позволяет через percent-encoded `..` обойти проверку namespace и читать ресурсы за его пределами, а исправление для GHSA-q825-p383-r9v5 устраняет SSRF в legacy apiCall, который мог использоваться для доступа к cloud metadata и внутренним сервисам с токеном Kyverno.

Также исправлены GHSA-59v6-2x73-wfg4, позволяющая namespaced policy читать cross-namespace данные через globalcontext.Lib, и GHSA-5cjf-wwfg-pj4c, позволяющая через PolicyException обойти проверку подписей образов в ImageValidatingPolicy.

Для всех пяти advisories CVE пока не назначены.
👍3🔥1
12–13 октября в Санкт-Петербурге пройдет конференция DevOops 2026! Вся программа и активности уже доступны на сайте мероприятия. При этом есть прекрасная возможность выиграть билет в рамках нашего конкурса =)

Конкурс: "Самый желанный доклад".
Задание: Придумайте название и описание доклада про Kubernetes (если будет еще связано с ИБ, то здорово) ради которого вы бы 100% посетили бы конференцию, чтобы его послушать. Варианты пишите в комментарии к данному посту.
Критерий оценки :
- Реалистичность
- Оригинальность
- Технические детали
Итоги: 18 сентября

Всем хороших выходных!
🔥4👍3