DevSecOps Talks – Telegram
DevSecOps Talks
7.43K subscribers
85 photos
94 files
1.23K links
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
Download Telegram
Caretta: визуализация сети k8s

Всем привет!

Иногда бывает полезно посмотреть на то, как сервисы приложения взаимодействуют между собой. Для этого можно использовать несколько подходов, например, связку Caretta + Grafana.

Первая собирает информацию о сетевом взаимодействии при помощи eBPF, а вторая – позволяет визуализировать информацию и делать интересующие пользователя запросы. Например: роль сервиса (клиент/сервер), по какому порту идет взаимодействие, тип (ресурс k8s, узел, "внешние") и т.д.

Приятно, что в таком сценарии кластер Kubernetes никак не «модифицируется» и влияние на него минимально.

Если вам интересно, что из себя представляет Caretta «изнутри», то рекомендуем ознакомиться с этой статьей, в которой описаны основные принципы работы утилиты и ее логика.
👍4
Атаки на distroless-образы

Всем привет!

Distroless образы отлично помогают ИБ за счет сокращения поверхности атаки. В них содержится только приложение и его runtime-зависимости. Никаких пакетных менеджеров и различных shells!

Если проанализировать их при помощи сканеров, то можно наблюдать приятную картину – количество уязвимостей в них в разы меньше, чем в «обычных». И, как правило, это уязвимости в исполняемых файлах.

Но все ли так хорошо и можно ли утверждать, что «Я использую distroless и этого достаточно?».

В статье разбирается пример с distroless образом для Golang:
🍭 Создается обычное приложение, которое печатает "Hello world" с интервалом в одну секунду
🍭 Приложение «упаковывается» в контейнер с FROM gcr.io/distroless/base
🍭 Контейнер запускается, все работает, bash недоступен, но… есть интерактивная командная строка openssl позволяющая выполнять команды

Как этим можно воспользоваться описано в статье. Получается, что не существует ничего абсолютного или защищенного "по умолчанию". Несомненно, если есть возможно выбрать distroless, то это стоит сделать. Но не стоит забывать и о других ИБ-контролях.
👍6🤡1
Автоматическое устранение уязвимостей в образах контейнеров

Всем привет!

Интересный подход к автоматическому устранению уязвимостей в образах контейнеров предложили авторы Copacetic.

Утилита делает следующее:
🍭 Берет результаты сканирования Trivy, определяет потребность в обновлении пакетов с использованием соответствующих менеджеров - apt, apk, yum и т.д.
🍭 Скачивает все необходимое и обновляет образ с использованием buildkit

Такой подход позволяет не собирать образ «заново», а именно обновлять его. Это в значительной степени сокращает вероятность того, что что-то сломается и пойдет не так после обновления. Но все равно лучше перепроверять и не полагаться на одну лишь автоматизацию.

В планах по развитию поддержка Grype в качестве альтернативы Trivy; «поддержка работы» с пакетными менеджерами языков программирования (pypi, npm, maven); расширение возможностей по конфигурации реализуемых обновлений.

Для работы утилиты нужно установить несколько зависимостей, которые описаны тут. И, конечно же, если хочется попробовать самому, то есть небольшой пример. А заглянуть «под капот», то можно по этой ссылке.
👍3
Контроль configuration drift в контейнерах

Всем привет!

В repo можно найти оператор, который позволяет контролировать configuration drift в контейнерах.

Работает все достаточно просто:
🍭 Пользователь осуществляет exec в контейнер
🍭 Запрос регистрируется kube-apiserver, pod’у контейнера проставляется label
🍭 После установленного времени k8s удаляет pod, у которого есть определенный label

Вот и все 😊 Работает не только с exec, но и с другими «интерактивными» запросами (attach, cp и т.д.). Для kubectl предусмотрен специальный плагин, который упрощает чтение label, содержащего информацию о том кто совершал операцию, когда и сколько еще осталось «жить» pod’у.
👍1
Как происходит удаление pod?

Всем привет!

Есть много разных статей в стиле «what happens when…». Например, что происходит при использовании команды kubectl apply -f smth.yaml.

Сегодняшняя статья рассказывает про то, что происходит при kubectl delete pod. Например, как k8s понимает, что надо ограничить трафик к «умирающему» pod? Как реализовать graceful shutdown и т.д.

Процесс выглядит следующим образом:
🍭 Обновление записи в etcd: добавление deletionTimestamp, deletionGracePeriodSeconds. Pod получает статус terminating
🍭Удаление endpoint pod из соответствующих services
🍭kubelet останавливает pod, api-server удаляет запись о pod’е из etcd

В статье все расписано более детально, уточнены нюансы: например, зачем нужен grace period. В завершении статьи представлены эксперименты с различными параметрами процесса удаления pod’a.
👍5
Пример моделирования угроз с использованием Systemic Approach

Всем привет!

В статье Автор рассматривает пример создания модели угроз с использованием Systemic Approach. В качестве примера выбрано абстрактное микросервисное приложение, которое взаимодействует с облачными сервисами.

Подход оперирует следующими терминами:
🍭 Boundary. Определение той части/компонентов системы, для которых будет реализовано моделирование. В примере Автор «привязывает» их к user story – отправка уведомлений – и рассматривает угрозы, применительно лишь к этому сценарию
🍭 Abstraction levels. Постепенное «погружение» в систему. Сперва – общий взгляд и все большая детализация при дальнейшем анализе. Применяется к выбранному boundary
🍭 Perspectives. Рассмотрение системы с точки зрения защищающегося или атакующего. В примере Автор берет STRIDE и расписывает возможные сценарии

Получается нечто вроде моделирования угроз «по спирали» - от общих абстракций до вполне себе конкретных мер. Рекомендуем прочесть статью, если Вам интересно ознакомиться с концептом Systemic Approach подробнее. Важно – там будет описание идеологии и подхода, но никак не детальный how to. Ведь как видно из примера выше – сделать такое универсальным вряд ли получится.
Платформа "Штурвал": вебинар и live demo

Всем привет!

Уже совсем скоро, 2 февраля, «Лаборатория Числитель» - разработчик, проведет вебинар, посвященный новой Платформе для контейнерной оркестрации «Штурвал»

На вебинаре расскажут:
🔹о целевой архитектуре решения и ее ключевых компонентах, которые учитывают высокие требования к вычислительной инфраструктуре и информационной безопасности
🔹о функционале «из коробки» и преимуществах использования для инженера эксплуатации и ИБ
🔹об уровнях сервисной поддержки и политике лицензирования

Также в программе будет показано live-demo решения.

Мероприятие будет интересно руководителям по цифровизации, ИТ-инфраструктуре и эксплуатации крупных компаний, а также DevOps-специалистам, администраторам, ИБ-специалистам.

Подробности и регистрация здесь 👈
🔥5👍1
Метрики k8s

Всем привет!

В статье собран набор из 18 метрик, которые можно собирать с кластера и его узлов для troubleshooting и оптимизации производительности.

Метрики сгруппированы по разным уровням абстракции: Node, Namespace, Deployment, Pod, Control Plane.

Примеры:
🍭 Node. Memory/Disk Pressure, NotReady
🍭 Namespace. Number of expected pods
🍭 Deployment. Pod creation/deletion rate
🍭 Pod. OOMKilled pods, Too many restarts, Pod running on right node
🍭 Control Plane. Latency in pod creation, Kubelet state

Для каждой метрики Автор дает описание почему это нужно и какие выводы относительно метрики можно сделать.
👍3
Hacking and Securing Docker Containers.pdf
59.1 MB
Hacking and Securing Docker Containers

Всем привет!

В приложении доступна книга (~119 страниц), посвященная вопросам безопасности Docker-контейнеров.

Содержание:
🍭 Общая информация о том, что такое контейнеры, образы, как их создавать, хранить и т.д.
🍭 Обзор cgroups, namespaces, изоляции
🍭 Атакующие техники: privilege escalation, container escape, writing to kernel space, exploit docker API и т.д.
🍭 Защитные техники: управление уязвимостями, hardening, AppArmor и т.д.

В книге много примеров, результатов работы команд и практических действий.
👍5🔥3
Kubernetes Load Testing

Всем привет!

В статье собран набор open source инструментов, которые могут пригодиться для нагрузочного тестирования кластеров k8s. Есть удобная сортировка – от basic да advanced.

Примеры рассматриваемых в статье решений:
🍭 k6s. Позволяет писать тестовые скрипты на JS, что может сократить порог входа
🍭 kube-burner. Stress-testing. Отличается от многих аналогов тем, что не ставится в кластер, а стоит «сбоку»
🍭 hey. Небольшая утилита, которая может генерировать запросы к web-приложению
🍭 kube-monkey. «Реализация» Chaos Monkey (Netflix) Для Kubernetes
🍭 JMeter. Java-проект, обладающий не только CLI, но и web-интерфейсом. Позволяет, в том числе, «записывать» действия пользователей для последующего создания тестов

Описание инструментов, не попавших в preview, ссылки на их GitHub, больше информации и примеров можно найти непосредственно в статье.
👍2
HashiCorp Hermes: управление документацией

Всем привет!

И без того не маленький портфель решений HashiCorp дополнил еще один инструмент – Hermes! Его назначение в том, чтобы управлять документацией: искать, изучать, согласовывать, «архивировать» и т.д.

Пока что поддерживается только работа с Google Workspace. Решение позволяет:
🍭 Просматривать недавние и/или недавно обновленные документы
🍭 Искать документы, получать информацию о статусе (WIP, In Review, Approved, Archived)
🍭 Фильтровать документы (Тип, Статус, Продукт/Область, Владелец)
🍭 Формировать запрос(ы) на согласование (Request Review) и не только

Небольшой обзор решения можно посмотреть в youtube-ролике, прикрепленному к статье. И, что самое классное – решение open source! Ознакомиться с GitHub Repo проекта можно по ссылке.
👍21
(Не) использование Sealed Secrets

Всем привет!

Если Вы читали про управление секретами, то скорее всего сталкивались с подходом/решением Sealed Secrets. Суть проста – не хранить секреты в git в открытом виде. Вместо этого – шифруем данные и voila! Теперь, даже если что-либо компрометируют, то все равно данные зашифрованы.

У такого подхода есть свои плюсы, но есть и недостатки, которые Автор приводит в статье. Например:
🍭 Сложности/неудобства управления структурой repo при большом количестве разных окружений, каждое из которых обладает своими секретами
🍭Секреты все равно «там». Да, зашифрованы, но все равно «что-то смущает»
🍭Secret 0. Ключ от всех остальных ключей все равно остается ключом
🍭Есть опции получше!

Причины
, которые стоят за каждым из тезисов описаны Автором в статье. А что Вы думаете по поводу Sealed Secrets: нормальное решение или и правда – есть опции получше?
Capital: приложение с уязвимым API

Всем привет!

В repo можно найти Capital – приложение, разработанное Checkmarx, обладающее уязвимым API (в соответствии с OWASP Top-10 для API).

В приложении можно найти:
🍭 Broken Function Level Authorization
🍭 Broken Object Level Authorization
🍭 Broken User Authentication
🍭 Improper API Management
🍭 Excessive Data Exposure
🍭 Improper Assets Management
🍭 Lack of Resources and Rate Limiting
🍭 Security Misconfigurations
🍭 Injection
🍭 Mass Assignment
🍭 Security Misconfiguration
🍭 Insufficient Logging

Подробнее об истории разработки, примерах атак и о приложении в целом можно прочесть в статье.
5
KubernetesPermissions.pdf
1.6 MB
Анализ полномочий в Kubernetes

В приложении доступен отчет о Palo Alto, посвященный анализу полномочий в кластерах Kubernetes. Материал содержит много интересной информации, включая перечень «Powerful Permissions» (описание которых можно найти в приложении).

Авторы разделили «Powerful Permissions» на группы:
🍭 Manipulate AuthN/Z. Полномочия, которые обладают возможностью privilege escalation by design или могут быть использованы для impersonate
🍭 Acquire Tokens. Полномочия, которые прямо или косвенно могут быть использованы для получения Service Account Tokens
🍭 RCE. При помощи полномочий этой группы можно воздействовать на pods и/или nodes
🍭 Steal Pods. Полномочия, позволяющий управлять pods
🍭 MitM. Полномочия, которые могут помочь в совершении man in the middle attack

В отчете есть немного статистики, рассуждения о возможностях популярных решений с точки зрения полномочий и способы анализа ролевой модели k8s с использованием rbac-police и Checkov.
👍2
Trivy: анализ k8s на соответствие CIS и NSA

Всем привет!

Trivy – проект от Aqua Security, который смело можно назвать швейцарским ножом в мире контейнерной защиты. Не самый редкий гость в нашем канале, мы неоднократно рассказывали о его возможностях.

Начиналось все со сканера образов контейнеров на наличие уязвимостей и постепенно «обрастало» функционалом.

Сейчас Trivy умеет:
🍭 Анализировать образы контейнеров на наличией уязвимостей
🍭 Анализировать бинарные файлы на наличие уязвимостей
🍭 Генерировать SBoM
🍭 Анализировать RBAC k8s
🍭 Анализировать манифесты k8s на соответствие лучшим практикам и это еще не все

В декабре 2022 года Trivy и чуть позже Trivy Operator получили еще одну «способность» - анализировать кластеры k8s на соответствие CIS и NSA. Тот самый функционал, который был в Kube-Bench (еще одном проекте Aqua Security).

Подробнее о запуске и возможностях Trivy и Trivy Operator по анализу конфигураций кластеров k8s можно прочесть в статье.
10👍1
Service Account Token: что это и зачем?

Во многих рекомендациях по ИБ можно встретить фразу о том, что надо отключать auto mount для Service Account Token. Но зачем и что это такое? Если просто, то это token, который используется при аутентификации запросов в kube-apiserver.

В статье хорошо структурирован материал, посвященный этой теме:
🍭 Формат Service Account Token
, какую информацию он в себе содержит
🍭 Важные поля token, как их можно использовать при проведении аналитики
🍭 Как они генерируются, кто это делает?
🍭 Как менялся «срок жизни» такого token
от версии к версии k8s

А в завершении статьи можно узнать, что поменялось в версии 1.24 и почему это только «плюс» для информационной безопасности. Статья небольшая и крайне наглядная, рекомендуем!
👍4
Learning CodeQL

Всем привет!

По мнению Автора статьи, CodeQL – не просто инструмент, которым надо научиться пользоваться. Это язык программирования, инструмент и экосистема, которые вместе позволяют создать нечто очень мощное в плане анализа кода.

Чтобы научиться его использовать Автор собрал собственный learning path и материалы, которые в этом помогут.

Они содержат:
🍭 Language tutorials
🍭 Public Workshops
🍭 Staging Workshops
🍭 CTFs
🍭 Blogs
🍭 GitHub Security Lab Slack

В каждом разделе приводятся ссылки на материалы, где можно получить дополнительную информацию или попрактиковаться в лабораторных работах или playgrounds.
1
Kured: «перезагрузка» Kubernetes

Всем привет!

Kured – DaemonSet, который позволяет управлять перезагрузкой узлов кластера. Например, когда такое действие диктуется потребностями операционной системы.

Работает по следующему принципу:
🍭 Наблюдает за флагом, определяющим потребность в перезагрузке
🍭 Контролирует перезагрузку – one node at a time
🍭 Cordon, drain, reboot, uncordon

Доступна поддержка различных версий k8s и большое количество параметров конфигурации. Больше информации (установка, настройка, использование и т.д.) можно найти в документации на проект.
👍2
User namespaces и безопасность k8s

Всем привет!

В Kubernetes v1.25 была добавлена поддержка (alpha) user namespaces. Их можно использовать, например, для уменьшения последствий при «побеге из контейнера» или более безопасно предоставлять полномочия конкретному pod.

В статье приводится общая информация, которая поможет начать погружение в тематику. В ней рассматривается:
🍭 Mapping между UID на узлах кластера и в контейнерах
🍭 «Разграничение» полномочий между контейнером и узлами кластера
🍭 Перечень ограничений, которые присутствуют в v1.25 (все еще alpha feature)

В завершении статьи (приложениях) приводится информация о user namespaces в Docker и “decision tree” – графическое пояснение того, когда user namespaces могут применяться, а когда могут возникнуть сложности.
Building Kubernetes Operator: Awesome

Всем привет!

Бывает так, что при работе с Kubernetes возникает мысль о написании собственного operator. Например, если чего-то не хватает или тот функционал, что есть не совсем решает задачу и хочется большего.

Тема, безусловно, интересная и не самая простая. Возможно, что не будет понятно «за что браться». Предлагаем Вам awesome-подборку, которая может стать опорой в освоении Kubernetes Operators за счет структурирования данных.

Она включает в себя:
🍭 Courses and Tutorials
🍭 Books
(платные)
🍭 Videos
🍭 Operator Frameworks

Надеемся, что этот материал хотя бы немного упростит для Вас погружение в этот интересный мир ☺️
👍4🔥1
Curio: анализ sensitive data

Всем привет!

Герой сегодняшнего поста – Curio! Это статический анализатор, который помогает идентифицировать sensitive data в исходном коде. Поддерживается 122 типа данных: пароли, pin, email, номера кредитных карт, информация о сертификациях и т.д. Анализ происходит с использованием регулярных выражений.

На текущий момент поддерживается Ruby, SQL, OpenAPI, GraphL и Protobuf. В планах – PHP, Java, C#, Go и Python.

В Curio есть набор правил, которые используются для анализа. Например:
🍭 Указание email в логах
🍭 Наличие проверки длины пароля
🍭 Использование шифрования при использовании cookie и многие другие

Больше информации можно найти в документации. В repo есть небольшой demo ролик, где показаны результаты работы утилиты.
👍2