k8s (in)security – Telegram
k8s (in)security
12.1K subscribers
1.01K photos
38 files
1.56K links
Канал о (не)безопасности Kubernetes + микросервисных, контейнеризированных приложений.

Ведет команда www.luntry.ru

Вопросы, идеи, предложения => @Qu3b3c

https://knd.gov.ru/license?id=673ddbc21039886b1d03b7ce&registryType=bloggersPermission
Download Telegram
Совсем скоро уже выйдет Kubernetes 1.25 и уже сейчас можно присмотреться к новым фичам, изменениям и светлому будущему [1,2,3].

Мы же в первую очередь заострим наше внимание на вещях связанных с security:
1) PodSecurityPolicy (PSP) полностью исчезает из K8s
2) PodSecurity admission (замена PSP) переходит в stable и включен по умолчанию
3) Добавление поддержки user namespaces - фича UserNamespacesSupport и новый параметр spec.hostUsers для Pod (вроде как 6 лет к этому шли) 🔥
4) Forensic Container Checkpointing - можно делать snapshot запущенного контейнера и потом проанализировать его на другой машине незаметно для атакующего 🔥
5) Оптимизации по работе с SELinux
6) Добавление поля SecretRef к запросу NodeExpandVolume
7) Улучшение CVE feed - добавили official-cve-feed label, по которому просто искать и фильтровать
8) Поддержка диапазона портов в классической NetworkPolicy перешла в stable
9) Ephemeral Containers перешли в статус stable
10) Поддержка cgroup v2 перешла в stable 🔥

P.S. Это и хорошее обновление для моего тренинга =)
🔥12👍4
Если вы не понимаете и путаетесь чем отличаются и для чего нужны External Secrets Operator и Secret Storage CSI а вопрос как работать с внешними хранилками секретов вам не дает покоя, то статья "Comparing External Secrets Operator with Secret Storage CSI as Kubernetes External Secrets is Deprecated" как раз для вас! Из нее вы узнаете:
- Отличия в архитектуре
- Отличия в функциональных возможностях

А чему вы отдаете свое предпочтение?
🔥5
Сегодня на повестке статья "Как организовать мультитенантность в кластерах Kubernetes".

В данной статье автор делится своим опытом об основных подходах, плюсах и минусах разных вариантов реализации Multitenancy в Kubernetes и как они с командой пришли к собственному решению. Из статьи вы узнаете:
- Что такое Multitenancy
- Чем хорошо и плохи отдельные кластера
- Нативная мультитенантность на базе Namespaces, где берем и крутим: RBAC, NetworkPolicy, ResourceQuota, PriorityClasses, LimitRange, sandbox/microvm, Taints/Tolerations или Node Affinity, PodSecurityStandart
- Возможности такой примочки как Hierarchical Namespace Controller (HNC)
- Проект Capsule, о котором уже недавно писали на канале
- Ресурс Project из проекта Rancher

В продолжении должно быть к чему пришла команда автора и кажется это будет базироваться на Control-planes-as-a-Service ;) Также больше информации будет в докладе в предстоящем докладе "Multi-tenant Kubernetes".
👍13
Тема eBPF продолжает будоражить умы как защитников, так и атакующих! На конференции BlackHat USA 2022 были представлены доклады на интересы одних и других:
1) "Return to Sender - Detecting Kernel Exploits with eBPF" - для защитников будет полезно узнать как на базе eBPF можно бороться с эксплотацией ядерных уязвимостей в ядре Linux. Автор даже зарелизил инструмент - Kernel Runtime Integrity with eBPF (KRIe). Но по результатам всего этого автор приходит к выводу:"eBPF is not really the ideal technology to detect kernel exploits" Об таком же выводе я уже писал тут.
2) "eBPF ELFs JMPing Through the Windows" - для атакующих в этой презе можно посмотреть как поддержка eBPF в Windows расширяет attack surface и что там можно нафазить ;) А так вообще полезно посмотреть чем и как отличается eBPF в Linux и Windows.

P.S. eBPF Summit SEPTEMBER 28-29, 2022
👍9😁1
Вышел Kubernetes 1.25 с новым лого и кодовым названием - Combiner! О самых интересных на мой взгляд нововведениях в безопасности - я уже писал тут.
🔥12👍1
Занимательный детектив "Who’s at the Helm?" или "Or, how to deploy 25+ CVEs to prod in one command!" - я думаю, что общий посыл понятен прям из названия! И да речь тут пойдет об open source supply-chain management.

Автор берет один Helm chart (в его случае это kube-prometheus-stack) и пытается разобраться, что реально появляется/ставится в его инфраструктуре и откуда и как это вообще было собрано. Есть там классный момент как автор пытается определить что за base image использовался при создании определенного образа - там идет почти reverse engineer с параллельными прыжками в ArtifactHub, GitHub, DockerHub, Quay =)

Естественное многое для автора становится сюрпризом (помимо количества уязвимостей)! Да, Helm chart может удивить, так я на пример знаю компании в которых запрещено использовать в виду их большой непрозрачности ...

PS Сегодня в Москве - выступаю на OFFZONE 2022.
👍10🔥2🥰1😱1🍌1
Я как разработчик решения под Kubernetes очень люблю низкоуровневые материалы о нем, когда люди прямо лезут в его "кишки" и начинают с ними разбираться, оптимизировать, улучшать и т. д. Одно из подобных работ является статья "Scaling Kubernetes to Thousands of CRDs". Уже сегодня невозможно представить Kubernetes продакшен кластер без сторонних Kubernetes operators с их Custom Resources и с каждым годом появляется все больше таких проектов: от security до Chaos engineering. И естественно рано или поздно можно упереться в тот или иной лимит при работе с Custom Resource Definition (CRD). И вот с чем столкнулись в данном вопросе и как решали и идет речь в данной статье от авторов Crossplane.

А что вы можете посоветовать такого почитать низкоуровневого про работу Kubernetes? Может быть, у вас есть какая-то любимая статья в таком духе?
👍7
Две очень короткие и хорошие заметки на смежные темы в официальном блоге Kubernetes:
1) PodSecurityPolicy: The Historical Context - в общем про становление и падение PSP
2) Kubernetes v1.25: Pod Security Admission Controller in Stable - про то что появилось/изменилось со времен статуса Beta

P.S. Обратите внимание, что сервис container registry куба переехал с k8s.gcr.io на registry.k8s.io! Некоторое время они будут работать одновременно.
👍2
👍1
Книга "Zero Trust Container Security for Dummies"

Цитата: "Zero Trust security takes a proactive approach to security. Instead of relying on reactive, signature-based protections, Zero Trust security is based on a declarative model in which you define acceptable behavior and block everything else. Allow lists are highly pronoscriptive and minimize the attack surface."

В этой мини книге (50стр) вы найдете хорошую теорию по ZeroTrust для контейнеров и рекламу решений SUSE.
👍14👎1
kubectl-execws - утилита на Go, которая по сути является заменой kubectl exec, которая работает через WebSocket. Тоесть весь kubectl не нужен. При этом данная утилита может обходить Kubernetes API server (привет Kubernetes Audit Log!), благодаря прямому соединению с kubelet API, работающим на Nodes. Инструмент будет больше полезен для атакующих целей (привет сигнатуры на kubectl!).

P.S. Как работает kubectl exec можно узнать/вспомнить тут.
👍5🔥4
Всех поздравляю с 1 сентября! С Днем Знаний!

И хотел бы сегодня поделиться знанием, почему наше решение по безопасности для Kubernetes называется Luntry ("Лантри"). Хотя некоторые нас порой называют "Люнтри" и как вы увидите дальше это в принципе тоже верно.

И так, Luntry ("Лантри") это выдуманное слово, образованное от французского слова "Lune" (Люн), что в переводе значит Луна. Так что "Люнтри" это можно сказать произношение на французский манер =)

Почему Луна?
1) Как и многое в теме контейнеров и Kubernetes ("Штурвал") мы пошли от морской темы. Луна является для моряков спутником, светилом, ориентиром в темное время. Мы также являемся для пользователей Kubernetes – показываем и подсказываем что, где и как работает (плохо/хорошо/опасно/безопасно).
2) Обратная сторона Луны — часть лунной поверхности, которая не видна с Земли. И Лантри как возможность эту сторону увидеть, понять и контролировать ;)
3) Альбом "The Dark Side of the Moon" группы Pink Floyd никакого отношения к названию не имеет, но в легенду ложиться просто супер ;)

P.S. Интересно ли вообще информация о внутренней кухне, о разработке или лучше чисто писать про безопасность Kubernetes?
👍334👎2🥰1
Сегодня хочу поделиться своими мыслями и наблюдениями (на наших клиентах) на тему NetworkPolicy (хотя это применимо не только к ним) и работе/поддержке/сопровождению их - по-модному Day 2.

Многие думают, что, написав или сгенерировав ресурс NetworkPolicy для микросервисов, дело сделано, но по факту все только начинается ... Теперь становится нужно контролировать что:
1) политики применились к чему нужно и не более
2) политики находятся в актуальном состоянии и вовремя обновляются
3) политики не отвалились ввиду изменений в микросервисах
4) все ваши департаменты в курсе того какой микросервис как ограничен
5) все ваши процессы учитывают наличие политик

Опять же повторюсь это применимо не только к NetworkPolicy и становится очень заметно, когда у вас в кластере не пара десятков микросервисов.

Ко мне самому осознание этого пришло не сразу, а в процессе, когда мы делали соответствующую функциональность, помогающему клиенту решить эти проблемы в момент, когда количество его NetworkPolicy сильно перевалило за сотню.

Так что если вы только на пути к NetworkPolicy - не забывайте о том, как вы будете с ними жить в Day 2 ;)
👍7👌3
В официальной документации Kubernetes появился раздел Security Checklist. Он состоит из самых базовых рекомендаций по аспектам:
- Authentication & Authorization
- Network security
- Pod security
- Enabling Seccomp
- Enabling AppArmor or SELinux
- Pod placement
- Secrets
- Images
- Admission controllers

Отдельно обратите внимание на предупреждение в начале раздела, чтобы у вас не сформировалось ложного представления об этом checklist'е!

P.S. На канале публиковались и другие подобные чеклисты [1,2] ;)
👍22
Если вы до сих пор задаетесь вопросом что такое Distroless Images, то крутецкая статья "What's Inside Of a Distroless Image - Taking a Deeper Look" даст вам ответ на этот вопрос и посмотреть еще глубже, что у них там под капотом! Краткое содержание:
- Сложности работы с scratch containers
- Вариант distroless/static и его специфика
- Вариант distroless/base и его специфика
- Вариант distroless/cc и его специфика
- Вариант для interpreted или VM-based languages
- Общая оценка использования distroless images
- Классная подборка дополнительных материалов по теме

Очень классно, так это демонстрация каждого варианта через утилиту Dive, через которую понятно все содержимое данных образов.

Так что после прочтения статьи вы поймете что distroless images бывают разные =)

Сточки зрения ИБ я повторюсь [1,2,3,4], что это позволяет уменьшить attack surface, усложнить закрепление атакующему, снизить шум от сканеров известных уязвимостей, тоесть вещь MUST HAVE!

P.S. Результату голосования по данной теме тут.
👍15🥰5🤯1
Официальная документация Kubernetes продолжает радовать отличными разделами и сегодня это "Kubernetes API Server Bypass Risks". Такими темпами авторам книг про безопасность Kubernetes не останется тем ;)

И так, Kubernetes API Server имеет встроенные механизмы безопасности (audit logging, admission controllers) и все должно проходить через них. НО есть ряд путей, которые позволяют их обойти! Вот как раз таким путям и их митигации и посвящена данная страница документации.

Выделено 4 пути обхода через:
- Static Pods
- The kubelet API
- The etcd API
- Container runtime socket

Если честно, то описанное в пункте про Static Pods не соответствует результатам наших экспериментов, о которых мы писали тут. Кто-нибудь еще пробовал? Нужно разобраться кто не прав)
👍13
Стали доступны видеозаписи выступлений с Open Source Summit Latin America 2022. Конечно же не обошлось без тем о безопасности Kubernetes. Я для себя выделил:
- "Exploring Runtime Security and Forensic using eBPF" - очень базовый доклад с примерами на Tracee в конце.
- "A Checklist for Security from the Container to the Kubernetes: An Overview End to End " - упоминание chain-bench и двух checklists: Kubernetes Security Checklist и Container Security Checklist.
- "Edit, Debug, & Secure the K8s Manifest Lifecycle: Why is it Important and How Can You Get it Right?" - про жизненный цикл YAML manifests и работа с ними с помощью утилиты monokle (обратите внимание)!
- "Building a Secure By-Design Pipeline with an Open Source Stack" - доклад про kubescape.
- "SOAR with Postee: Automated Incident Response for Cloud Native Risks" - доклад про Postee. Данный доклад можно сравнить с моим докладом про SOAR.
- "MLSecOps with Automated Online and Offline ML Model Evaluations on Kubernetes" - MLSecOps 0_o
👍8
Тут попалась любопытная заметка "Implementing Quarantine Pattern for Container Images". Под карантином тут понимается специальный registry для плохих образов (не удовлетворяющих тем или иным внутренним требованиям). Помимо выделенного registry также задействуются:
- Quarantine Flag
- RBAC
- Policy Engine

По сути это частный случай концепции Registry Staging из "CLOUD NATIVE SECURITY WHITEPAPER".
👍4
PCI Security Standards Council выпустил документ "Guidance for Containers and Container Orchestration Tools", делался он в рамках специальной SIG группы и по сути состоит из 3-х частей:
1) Общая информация о контейнерах и оркестраторах - совсем базовая информация. Kubernetes упоминается 4 раза на документ ;)
2) Списка угроз и best practices для противодействия им в контейнерных окружениях - основное мясо документа
3) Примеры для работы с угрозами и практиками - 4 use-cases

Рассматриваемые темы:
- Authentication
- Authorization
- Workload Security
- Network Security
- PKI
- Secrets Management
- Container Orchestration Tool Auditing
- Container Monitoring
- Container Runtime Security
- Patching
- Resource Management
- Container Image Building
- Registry
- Version Management
- Configuration Management
- Segmentation

Документ хороший - рекомендую к ознакомлению! Какой-то карточной специфики там особо нет, так что может быть полезен всем.

Завтра подсвечу наиболее любопытные моменты на мой взгляд.
🔥13👍2
Как и обещал сегодня поделюсь своим мнением о наиболее интересных моментах из документа "Guidance for Containers and Container Orchestration Tools" и, конечно, это будет из раздела 3.1 Threats and Best Practices, как самого интересного с технической точки зрения.

1) Я не понял смысл и пользы от разделения на “Applicable to Use Case”. В некоторых моментах я вообще не согласен. Например, пункт 11.1 Resource Management говорит, что работа с Limits есть только в Containerization in a Mixed Scope Environment, а в других случаях не важно. Поэтому я бы советовал смотреть на эти колонки с достаточной толикой скептицизма.
2) Важный пункт 4.1,4.2 Network Security прямо говорит о подходе запрещено все, что не разрешено и не двузначно намекает о использовании NetworkPolicy ;)
3) Удивило требование 4.3 Network Security про шифрование общения с API оркестатора, которое я нигде ранее не встречал. В угрозе написано про "packet sniffing or spoofing attacks", но подобного я лично никогда не наблюдал, хотя теоретически это возможно и скорее всего атакующий будет это делать в тех условиях, когда это можно сделать другим более легким способом.
4) В пункте 6.1 Secrets Management прямым текстом написано, что для работы с секретами нужно использовать стороннее решение за пределами кластера: "should be held in encrypted dedicated secrets management systems". Seald Secret и подобные проекты по push-модели совсем не в почете?!
5) Пункт 8 Container Monitoring - бальзам на мою душу, так как это было в точности то, что мы в первую очередь реализовали в Luntry.
6) Пункт 9 Container Runtime Security (почему-то он не часть пункта 8) несет в себе как по мне спорные моменты - мы увеличиваем изоляцию, но теряем в наблюдаемости. И, по сути, выигрыш только в усложнении побега из контейнера через уязвимости ядра и не более.
7) Понравился пункт 13.2 Registry в котором говорится про Registry Staging, о котором я писал недавно.
8) Пункт 15. Configuration Management полезная напоминала про важность pre-prod окружения для security.
9) Пункт 16. Segmentation это про multitenancy ;)
👍1