DevSecOps Talks
6.25K subscribers
46 photos
59 files
888 links
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
Download Telegram
12 августа коллеги делают интересный вебинар по хранению persistent данных и резервному копированию в кубере

В
ендоры, традиционно поставляющие продукты backup & recovery, сравнительно недавно начали выпускать функционал работы с Kubernetes, он часто сырой и требует доработки напильником.

О чем пойдет речь:
📌 Persistent данные в Kubernetes: особенности, требования, pros & cons.
📌 Как обеспечить резервное копирование приложений и баз данных.
📌 Какие инструменты поддерживают резервное копирование в Kubernetes, в чем их особенности
📌⚡️ Live демо: Резервное копирование в Kubernetes с помощью Cоmmvault Backup and Recovery и Veeam Kasten.

Регистрируйтесь по ссылке
https://events.webinar.ru/jet/PersistentDevSecOps
Привет!

По ссылке собрана удобная коллекция решений по DevSecOps, разбитая по классам:

🍭 Application Security Testing: SAST, DAST, SCA, ASOC, MAST
🍭 Protection: WAF, WaaP, RASP, Bot Mitigation, CI/CD Security
🍭 Services: Penetration Testing, Bug Bounty, Training, EASM

Для каждого класса приводится перечень решений (Enterprise, Open Source) и краткое описание назначения класса. О похожей подборке мы уже писали в этом посте.
Такие агрегаторы могут быть удобны, например, если у кого-то возникает вопрос – «А что вообще есть?». Помимо многочисленных awesome можно кидать ссылку на рассматриваемую подборку для первичного ознакомления

P.S. При желании можно добавить инструмент через функционал "Submit Tool" ☺️
Всем привет!

Ребята из Bridgecrew проделали колоссальную работу по анализу общедоступных Helm charts: «We scanned thousands of open-source Helm charts available for reuse on ArtifactHub against common Kubernetes security and compliance policies via Checkov»

Результаты своей работы Bridgecrew описали в цикле статей (раз, два, три)

Первая статья посвящена статистике и ключевым findings:
🍭 71% просканированных repo содержит misconfigurations (всего было просканировано 618)
🍭 В 60% манифестов не были корректно реализованы resource quotas
🍭 Множество манифестов, где были допустимы privelegeEscalation
🍭 Манифесты не содержат readiness/liveness probes (25%), некорректные настройки тэгов для образов (latest или отсутствие)

Можно сделать очень простой вывод – «Доверяй, но проверяй». Helm chart очень удобный инструмент для deploy приложений. Однако, не следует «слепо ему доверять», например, можно его доработать с точки зрения ИБ и использовать у себя!
Подробности (по второй и третьей статье) в следующих постах ☺️

P.S. Это еще не все, ребята также поделились инструментом по сканированию ArtifuctHub (для работы требуется artifacthub API token/secret token), под капотом все тот же Checkov
Привет!

Продолжение истории Bridgecrew! После сбора статистических данных команда решила проанализировать наиболее часто встречающиеся Helm-dependencies.

Задача отчасти похожа на создание Software Bill of Materials (SBOM), только для Helm-chart: необходимо понять какие именно компоненты являются «зависимыми» и насколько они корректны с точки зрения ИБ.

В статье продемонстрированы графы с легендой:
🍭 Зеленый: сканируемый chart
🍭 Синий: зависимость (URI) ссылается на тот же Helm repository, что и сам chart
🍭 Черный: «локальные» зависимости chart (отсутствует URI, только local file path)
🍭 Красный: Все остальные зависимости

В результате анализа получилось собрать статистику о наиболее часто используемых зависимостях (одной из которых стала bitnami/postgresql) и сделать вывод, что существует большая фрагментация зависимостей, их массовое дублирование, которые можно было бы переиспользовать. В конце статьи Bridgecrew привели несколько рекомендаций о том, как можно повысить уровень ИБ в такой ситуации: Embed static analysis into your CI/CD pipeline, Understand your runtime posture, Audit third-party Infrastructure code, Increase awareness of IaC security, Automate posture information at the point of consumption
Всех с пятницей!

Завершающая часть захватывающей трилогии анализа Helm chart от Bridgecrew! В прошлой серии ребята выяснили, что самая популярная зависимость - bitnami/postgresql.

Ее chart проанализировали
при помощи Checkov, чтобы понять насколько он безопасен. Примеры того, что удалось узнать (с точки зрения failed-проверок, приведены не все результаты):

High
🍭 «Ensure Containers Do Not Run With AllowPrivilegeEscalation». Контроль возможности повышения привилегий, например, дочерним процессом
Medium
🍭 «Ensure that the seccomp profile is set to docker/default or runtime/default». Ограничение возможностей контейнера. В версии Kubernetes 1.22 «Default Seccomp» находится в стадии Alpha (можно почитать тут и тут)
🍭 «Use read-only filesystem for containers where possible». Сохранение immutable-подхода контейнеров
Low
🍭 «Memory and CPU limits should be set». Ограничение ресурсов, потребляемых контейнером, например, для предупреждения DoS-атак
🍭 «Minimize the admission of containers with capabilities assigned». Ограничение Linux-capabilities контейнеров

В статье также разобраны варианты remediation указанных недостатков с отсылками на идеи «как сделать лучше» и с указанием «точек» в Helm chart, где нужно реализовать изменение.

Получается, что самая популярная зависимость, которую использовали во многих Helm chart содержит целый перечень потенциальных улучшений по ИБ, что вновь подводит к выводу - "Доверяй, но проверяй!"
Привет!

Lens – достаточно удобная “IDE для Kubernetes”, возможности которой можно расширять при помощи extensions.

Например:
🍭 Aqua Security Starboard: отображение информации по уязвимостям в образах контейнеров и ошибках в конфигурации кластера
🍭 Certificate Info: удобное отображение информации об используемых сертификатах
🍭 Resource Map:
графическое представление информации о взаимосвязи сущностей в кластере
🍭 Debug pods: extension, предоставляющий возможность debug из интерфейса Lens

Больше информации доступно по ссылке ☺️
Всем привет!

«Масштаб» может привносить затруднения, про которые не думаешь на малых объемах. Это применимо и к манифестам Kubernetes: чем больше становится приложение, растет его функционал и возможности, тем в большую «кашу» превращается папка с конфигурациями.

В статье автор предлагает интересный подход к структуре хранения манифестов. Все строится вокруг создания пространства папок, где каждая из них представляет отдельный Kind (Deployment, Service, ConfigMap и т.д.).

Приводится наглядный пример использования подобного подхода и рекомендации автора:
🍭 Сокращайте длинные аббревиатуры привычными аналогами при именовании файлов (например, hpas вместо horizontalpodautoscalers)
🍭 Используйте идентичные имена файлов между «Kind-директориями»
🍭 Не используйте тип сущности в ее названии (например nginx-service.yaml)
🍭 Именуйте ресурсы по аналогии с именами файлов, в которых они определяются

Такой подход упрощает восприятие конфигурации приложения и сокращает вероятность ошибки (например, из-за разных способов написания service/svc). Удобен ли Вам подобный подход к хранению манифестов приложений, стали бы вы его использовать?
Привет!

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

Интеграция осуществляется через… GitHub (который уже поддерживает возможность использования Dependabot, CodeQL и предоставляет возможность реализации интеграций со сторонними решениями)

Все очень просто:
🍭 Добавляем StackHawk (Security, Codescanning alerts), это создаст workflow для анализа приложения
🍭 Адаптируем конфигурацию, генерируемую «по умолчанию»
🍭 Производим настройки на стороне StackHawk, осуществляем onboarding приложения, формируется файл конфигурации
🍭 Помещаем полученную конфигурацию в корень проекта. Все!

Теперь можно просматривать результаты анализа в GitHub, есть удобные ссылки на StackHawk. Возможно, подобные решения будут реализованы и другими vendor’ами.

Революционного ничего нет, но реализовано очень просто и удобно для пользователей GitHub, что не может не радовать ☺️

P.S. Короткое видео по настройке и использованию можно найти по ссылке
Всем привет!

По ссылке доступна простая, но крайне наглядная статья про Admission Controllers, что это такое и зачем это нужно.

Сперва автор рассказывает базовые принципы работы:
🍭 MutatingAdmissionWebhook. Может подтверждать/изменять создание сущности. Например, может изменить конфигурацию
🍭 ValidatingAdmissionWebhook. Может подтверждать создание сущности. Например, проверять что образ взят из корректного registry и только после этого запустить pod

Описывает принципы их работы, в какой момент запроса (create, update, delete) они «проявляют» себя, приводит некоторые примеры использования – «Когда это может пригодится?»

В завершении статьи автор приводит пример использования собственного MutatingAdmissionWebhook, который позволяет запустить pod на node только при наличии необходимых ресурсов. В противном случае к pod будет применен toleration.

Материал, хоть и простой, но крайне важный. Например, OPA также является Admission Controller’ом
Привет!

В 1.22 версии Kubernetes представили «наследника» PSP – Pod Security Admission (PSA). Инструмент пока что находится в стадии [Alpha], но уже можно к нему присматриваться.

В статье автор делает краткий разбор PSA и рассматривает вопросы:
🍭 Pod Security Standards //Privileged, Baseline, Restricted
🍭 Применение политик //Namespace, Cluster-wide
🍭
Policy Modes, управление политиками //Enforce, Audit, Warn. "Комбинации" режимов: например, Enforce для одной политики и Warn для другой

В завершении можно найти упоминание о рекомендациях по миграции с PSP на PSA.

PS. Напоминаем, что PSA находится в стадии [Alpha] и лучше пока что не использовать его «в бою», а просто изучать. Всем отличной пятницы и выходных!!!
Привет!

K8s-vault-webhookAdmission Controller, который позволяет подставлять секреты в Pod, Secrets, ConfigMaps.

На текущий момент поддерживаются следующие хранилища: HashiCorp Vault, AWS Secret Manager, Azure Key Vault и GCP Secret Manager.

Решение обладает следующим функционалом:
🍭 Аутентификация в хранилище
🍭 Извлечение секрета с последующей подстановкой в создаваемую/обновляемую сущность
🍭 «Инъекция» секрета происходит непосредственно в процесс

Подробнее
про установку, настройку и примеры интеграции с хранилищами можно почитать в документации.
Привет!

В tutorial разобран пример анализа событий, генерируемых Audit Policy k8s, по следующей схеме:

🍭 В качестве Backend выбираем Log Backend
🍭 Разворачиваем FluentBit, который будет выполнять функцию log forwarder: "забирать" из Log Backend и "направлять" в Falco
🍭 Разворачиваем Falco с Falcosidekick-UI, которые будут собирать логи, анализировать их (используемые проверки, более подробная информация) и отображать результаты в web-интерфейсе

В статье приведены все необходимые команды и ссылки для самостоятельного воспроизведения в demo-окружении.

В завершении представлен PoC на примере правила «Create/Modify Configmap With Private Credentials»: создаем ConfigMap, это порождает событие в Audit Log, которое забирает FluentBit и передает в Falco. Срабатывает правило, результат отображается в web-интерфейсе
Предлагаем присоединиться к опросу! )
Forwarded from DevSecOps Wine (Denis Yakimov)
Опрос: что вы думаете о DevSecOps?

Коллеги из PT расшифровали доклад с PHDays о применении Security Gym в обучении разработчиков писать безопасный код: "Безопасность для айтишников: как научить разработчиков устранять уязвимости и создавать безопасные приложения". Помимо теории (описания уязвимости в коде), обучение также предполагает написание функциональных и security-тестов, участие в CTF.

Также PT запустили опрос: "Что вы думаете о DevSecOps?", в котором просят пользователей Habr рассказать о том, как обстоят дела с безопасной разработкой в компании. Предлагаю помочь им собрать как можно больше данных для исследования :)

#talks #dev
Привет!

Продолжая тематику визуализации и использования OPA для контроля состояния кластера по ИБ можно обратить внимание на Gatekeeper Policy Manager.

Он представляет из себя read-only web-интерфейс, в котором можно получить информацию об используемых политиках:
🍭 Статус политики
🍭 Код политики, написанный на REGO
🍭 Детальная информация о нарушениях политик (Violations)
🍭 Есть возможность отображения всех нарушений в табличной форме (Report View)

Недавно вышло обновление – v0.5.0, про которое можно почитать в обзорной статье и в changelog соответственно
Всем привет!

Во многих рекомендациях по ИБ (да и не только) рекомендуется указывать Resource Quotas. Одной из сложностей, с которой можно столкнуться – непонятно сколько именно требуется CPU и RAM для создаваемого ресурса.

В качестве «отправной» точки можно использовать Goldilocks: утилита, используя Vertical Pod Autoscaler (VPA), может подсказать:
🍭 Guaranteed QoS (Current/Guaranteed)
🍭 Burstable QoS (Current/Burstable)
🍭 Рекомендации по оптимизации (YAML-шаблоны с Requests и Limits)

Суть работы проста – утилита создает VPA для каждого deployment, после – "запрашивает" у него информацию и отображает ее пользователю.

Больше сведений о том, как задать Resource Quotas, можно найти в статье Ultimate Kubernetes Resource Planning Guide
Привет!

Интересная статья от Aqua Security про «Advanced Persistent Threat Techniques Used in Container Attacks», подготовленная командой Nautilis (R’n’D команда Aqua).

В каждой атаке было идентифицировано следующее:
🍭 Running a vanilla container image. Использование Alpine-образа
🍭 Escaping to the host. Mount файловой системы host для последующего получения доступа
🍭 Downloading a malicious script. Загрузка и исполнение script cronb.sh
🍭 Loading and executing the malware. Выполнение атаки, например, установка cryptominer и сокрытие присутствия

В самой статье приведены анализ script и rootkits, использующихся злоумышленниками для совершения атаки и сокрытия собственного присутствия.
В конце
– как обычно, некоторые рекомендации по противодействию

P.S. Всех с пятницей! ☺️☺️☺️
Привет!

Статья, посвященная контролю outbound traffic. Ребята начали с того, что ответили на вопрос – «А какие внешние соединения устанавливаются нашими приложениями?». После получения ответа команда задумалась о том, как лучше всего контролировать трафик в долгосрочной перспективе:

🍭 Нужна возможность написания политик, контролирующих трафик от specific source до specific destination
🍭 Требуется возможность использования DNS
🍭 Alerting, в случае если трафик отправляется на недоверенный источник

Ребята не смогли найти решение, которое соответствовало бы всем требованиям (статья от 2020 года) и решили начать с малого – контролировать трафик по портам с использованием Network Policy и Calico в качестве CNI.

Посмотрели в сторону Istio, но такое решение их не устроило. Дальше? DNS inspection! Однако и тут были сложности – доступные на тот момент enterprise-решения не могли быть «помещены» в K8S. К чему в итоге пришла команда после попыток и анализа различных подходов?

Ответом стали «эксклюзивные» proxy для всех внешних сервисов, с которыми устанавливаются соединения. Возможно, звучит немного страшно и overkill, но такой подход устроил команду, и она его реализовала. Как именно – рассказано в самом конце статьи ☺️
Всем привет!

Peirates – open source утилита, которую можно использовать для penetration test кластеров Kubernetes.
Основной фокус – privilege escalation и lateral movement.

На текущий момент поддерживаются такие возможности как:
🍭 Reverse shell на node, через pod с hostPath-mounting
🍭 Извлечение service account tokens из secret
🍭 Запуск token-dumping команды для всех pods
🍭 Получение IAM учетных данных из AWS или GCP
🍭 Распространение самого себя в другие pods, эмулируя lateral movement

Утилита обладает удобным интерфейсом - меню, из которого можно выбрать требуемое действие. Чуть больше информации можно прочитать по ссылке. Важно (!): Peirates attacks Kubernetes cluster. Talk to your lawyer and the cluster owners before using this tool.
Несколько дней назад обновилась Container Security платформа от Palo AltoPrisma Cloud Compute Edition v. 21-08.

Главное в этом обновлении:
🍏 Песочница для анализа образов и контейнеров перед их деплоем. Она запускается на отдельной линуксовой ВМ и анализирует активность процессов, файловой системы и сети контейнера. Результаты сообщает в консоль;
🍏 Новые фичи у встроенного WAF — теперь есть поддержка Windows хостов и Service Mesh (LinkerD, Istio);
🍏 Автоматическое создание Pull Request (GitHub) для уязвимостей в зависимостях приложений. Поддерживается Go, Python, Java, and JavaScript (Node.js).

Помимо этого, продукт получил сертификацию Red Hat, появилась обратная совместимость дефендеров с прошлыми версиями консоли, новые виды уведомлений и многое другое.

Подробности по ссылке.