DevSecOps Talks – Telegram
DevSecOps Talks
7.44K subscribers
85 photos
94 files
1.22K links
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
Download Telegram
«Вредные советы» по безопасной разработке

Всем привет!

Обычно рассказывают про хорошие / лучшие практики по чему-либо. Безопасная разработка – не исключение.

Однако, все мы помним Григория Остера и его замечательные «Вредные советы». Которые весело читались и сохранялись в памяти на долгие годы.

Поэтому сегодня хотим рассказать про статью от CISA, в которой собраны такие вот "советы" по вопросам безопасности разрабатываемого ПО.

Например:
🍭 Использование memory unsafe languages (спорно, но)
🍭 Возможность добавления пользовательского ввода в SQL-запросы
🍭 Возможность добавления пользовательского ввода в команды ОС
🍭 Использование «чего-либо», обладающего известными уязвимостями и т.д.

Для каждого «совета» приводится описание и как делать «правильно». Да, выглядит «избито и банально», но, возможно, в такой трактовке лучше запомнится 😊

P.S. А если вы не знаете, кто такой Григорий Остер и что за «Вредные советы» - очень настойчиво рекомендуем ознакомиться 😊
👍52
И еще немного про Kubernetes Operators

Всем привет!

Предлагаем вам еще одну статью, посвященную Kubernetes Operators. Если вы хотели побольше о них узнать, то она может быть полезна.

Сперва Автор раскрывает основные идеи – Current State, Target State, Reconcile Loop. Дальше, на примере Deployment, каждый из концептов и внутренняя «машинерия» раскрывается детальнее.

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

Далее – создание собственного контроллера с использованием Kubebuilder!

Автор приводит все шаги:
🍭 Подготовка шаблонов
🍭 Управление permissions при работе с (Sub) Resources
🍭 Настройка SetupWithManager и указание ресурса для reconcile
🍭 Описание той самой reconcile-логики (что надо сдедать в случае, если с ресурсом X произошло событие Y)
🍭 Работа с Finalizers и много всего еще

Очень-очень-очень-очень много пояснений, кода, различных схем и примеров из разных Kubernetes Operators.

Отличная статья для погружения в тему, рекомендуем!
👍32🔥2
Helmper: анализ образов Helm Chart

Всем привет!

Допустим, что у вас есть Helm Chart, образы из которого надо поместить в локальный реестр для дальнейшего использования.

С простыми Chart сделать это относительно не сложно, а со сложноустроенными – все может быть далеко не так тривиально.

Именно эту задачу (и не только!) помогает решить утилита Helmper. Она объединяет в себе Helm, Oras, Trivy, Copaсetic и Cosign.

Да, уже из «состава» видно, что умеет она чуть больше, а именно:
🍭 «Извлечение» образов из всех Helm Chart и их Sub Chart
🍭 Гибкое управление «импортом» образов – все или только новые
🍭 Анализ образов на наличие уязвимостей с Trivy
🍭 Устранение уязвимостей с использованием Copaсetic (детальнее про него мы писали тут)
🍭 Возможность подписи образов контейнеров и не только

Больше информации можно найти в repo и в документации на утилиту.

Важно: утилита находится в beta-стадии.
И, если вдруг вы захотите «устранять уязвимости автоматически» с Copaсetic не забывайте, что он создает новый слой сверху, что может увеличить размер образа.
NPM Provenance и его использование

Всем привет!

NPM Provenance – механизм, который позволяет «связать» опубликованный пакет с исходными кодами GitHub-Repository.

Казалось бы, это очень хороший функционал, который позволит усилить защиту против атак на цепочку поставки ПО.

Однако, насколько часто им пользуются? Размышления на эту тему можно найти в статье. Spoiler: хотелось бы больше 😊

Автор рассматривает:
🍭 Общие риски ИБ в модели ИБ NPM (отсутствие требований к наличию provenance, отсутствие требований к публикации пакетов и т.д.)
🍭 Возможные причины, почему Provenance не получил (ает) желаемого распространения
🍭 Как включить и как проверить тот самый Provenance
🍭 Общие рекомендации как для Package Maintainers, так и для Package Users

Все очень просто и кратко описано, что позволит лучше разобраться как и что работает.

Также статья затрагивает другую интересную тему, а именно: получение полной информации о ПО – от условного commit до того, что получает конечный пользователь. Но об этом как-нибудь в другой раз 😊
3👍2🔥1
Выносим отчеты Kyverno из Etcd

Всем привет!

Будучи преисполненными в желании обеспечить безопасность в своем кластере kubernetes вы наверняка сталкивались с таким инструментом, как Kyverno.

Если нет, то:
Kyverno — это инструмент для управления конфигурацией и обеспечения соответствия в Kubernetes. Он позволяет определить правила и политики, которым должны соответствовать кластеры Kubernetes, и автоматически применять эти правила при изменении кластера.

В больших кластерах, и с большим количеством политик Kyverno пользователи могут столкнуться с замедлением работы api-server-а, а также с ограничением хранилища etcd.

И тут на выручку нам приходит новый проект от разработчиков Kyverno – Kyverno Reports Server! Он решает проблему масштабируемости отчетов о политике, сохраняя отчеты за пределами etcd - в реляционной базе данных PostgreSQL. Сервер отчетов достигает этого с помощью Kubernetes API aggregation layer, где он создает API-сервис, который принимает все запросы от локального сервера API и обрабатывает их. Сервер отчетов имеет доступ к реляционной базе данных, которую он использует для хранения отчетов.

Изучить детальнее можно по ссылке
Репозиторий: https://github.com/kyverno/reports-server
4🔥4👍3
Компрометация кластера Kubernetes: пример сценария

Всем привет!

В статье рассматривается возможный сценарий компрометации кластера Kubernetes. Про «подготовку» такого кластера можно почитать вот тут (чтобы контекст был более понятен).

Сама «лабораторная среда» содержит множество некорректных конфигураций, которыми сможет воспользоваться злоумышленник.

Автор проделывают следующий путь:
🍭 Получают reverse shell в Pod. Для этого используется supply chain атака с подменой requests на request` (typosquating)
🍭 Сбор первичной информации об окружении – какой runtime используется, что есть «внутри Pod», анализ полномочий ServiceAccount, из-под которой запущен Pod
🍭 Получение доступа к базе данных, используя роль Kubernetes, права которой только RO
🍭 Компрометация GitHub Runners / GitHub Actions и не только

Может показаться, что все подстроено. Отчасти – да, отчасти – нет, т.к. некорректные конфигурации в реальности встречаются чаще, чем хотелось бы. Поэтому некоторые из этих сценариев могут быть не совсем «теоретическими».

Вывод из этого можно сделать достаточно простой – не стоит пренебрегать практиками и средствами автоматизации, которые могут помочь в безопасной настройке окружения, необходимого как для разработки, так и для эксплуатации ПО.
4
Статический анализ JavaScript

Всем привет!

По ссылке можно найти вводную статью, посвященную статическому анализу JavaScript-приложений, подготовленную Snyk.

Автор разбирает разделы:
🍭 Что такое статический анализ и зачем он нужен
🍭 Отличие статического анализа от динамического
🍭 Статический анализ для нужд Quality и Security
🍭 Введение в Abstract Syntax Tree (AST) и его использование в анализе ПО

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

В качестве инструмента анализа упоминается Snyk и ESLint.

Статья направлена на изучение базовых принципов и используемых технологий анализа кода на примере JavaScript и может пригодиться тем, кто только начинает свой путь в этой области.
4
Kyverno Certified Associate

Всем привет!

Недавно CNCF анонсировала еще одну сертификацию. На этот раз она посвящена Kyverno! Как обычно – для прохождения надо ответить на вопросы, сгруппированные по доменам.

А сами домены следующие:
🍭 Fundamentals of Kyverno
🍭 Installation, Configuration and Upgrades
🍭 Kyverno CLI
🍭 Applying Policies
🍭 Writing Policies (и тут все-все-все – от Validation до Cleanup)
🍭 Policy Management

Выглядит как полноценный обзор всего, что может Kyverno. Однако, сдать экзамен можно только начиная с января 2025, сейчас открыта лишь предварительная запись.

И да, увы, экзамен платный – 250$
👍4🔥1
Sealed Secret Web UI

Всем привет!

Если вы любите IaC подходы и храните конфигурацию в системе контроля версий, то рано или поздно встанет вопрос: «А что делать с Kubernetes Secretes?»

Ответом может стать утилита от Bitnami – Sealed Secrets (про нее мы писали тут). Если просто – то она создает «шифрованного двойника» секрета и позволяет разместить его в git-репозитории.

Сегодня же мы хотим рассказать вам про простую утилиту, которая позволяет сделать Web UI для Sealed Secrets.

Функционал минималистичен и прост:
🍭 Encode/Decode. (Де) кодирование строк в base64
🍭 Secrets. Получение всех Sealed Secrets в рамках Namespace
🍭 Seal. Шифрование Kubernetes Secret с созданием Sealed Secret
🍭 Validate. Проверка Sealed Secret

Ничего сверхъестественного, просто небольшое графическое представление информации, которое может немного упростить жизнь 😊
👍4
DevSecOps Blueprint

Всем привет!

Сегодняшний материал подойдет всем, кто хочет начать свой путь в DevSecOps. DevSecOps BluePrint состоит из двух частей: Blueprint и Projects.

Первая часть посвящена теории. В ней собрана общая информация о том, что такое Application Security, безопасность SDLC, основы DevSecOps.

Вторая представляет из себя описание создания небольшой «лабораторной» для развития практических навыков.

Лабораторная включает в себя:
🍭 Docker
🍭 Gitea
🍭 Jenkins
🍭 Nexus
🍭 Security Tools (SonarQube, Trivy)
🍭 Monitoring Tools (Grafana, Prometheus)

Для каждого инструмента лабораторной приводится небольшая справка-инструкция о том, как его можно установить/запустить и первоначально настроить.

Для начала пути в мир DevSecOps – вполне себе! 😊
👍8
Совместим ли GitOps с Database Rollback?

Всем привет!

GitOps – прекрасный подход, который позволяет реализовать декларативное управление состоянием программного обеспечения.

Реализовали новую функциональность? Не проблема. Операторы Kubernetes синхронизируют изменения и автоматически применят их в кластере. Что-то пошло не так? Не проблема. Всегда можно «откатиться на предыдущий commit и разбираться что пошло не так».

В теории все очень классно, но что можно наблюдать на практике? Для stateless приложений такой подход может работать очень хорошо, а что делать с stateful?

Например, с базами данных? Вот так «просто» обновить ее не получится, ведь помимо ПО, необходимого для функционирования базы есть еще и данные. И эти самые данные уже не получится «просто взять из системы контроля версий».

Именно этой проблеме посвящена статья. Авторы разбирают:
🍭 Up и Down- миграции, возможную проблематику их реализации
🍭 Возможности ArgoCD по реализации миграций, нюансы работы с rollback
🍭 Использование Atlas Operator для управление схемой (schema) БД, включая rollbacks

В статье очень много интересных теоретических аспектов, связанных с работой баз данных. Кроме того, можно не читать статью, а посмотреть видео с прошедшего KubeCon (оно доступно в начале статьи).
👍2
SAST: руководство для начинающих!

Всем привет!

Сегодня хотим поделиться с вами обзорной статьей про Static Application Security Testing. Сперва Автор кратко описывает что это такое, зачем оно нужно и почему это важно.

Далее – переходит к самому интересному, а именно – способам анализа, которые могут быть «под капотом» у анализатора

Рассматривается следующее:
🍭 «Grep»-техника (она же pattern-matching)
🍭 Control Flow Analysis
🍭 Data Flow Analysis
🍭 Taint Analysis

Для каждой техники приводится лаконичное описание логики работы, примеры на небольших code snippets, а также ее преимущества и недостатки.

Помимо этого, есть краткое описание Enterprise и Open Source сканеров с указанием типов анализа, которые они поддерживают.

Завершают статью рекомендации о том, с чего можно начать реализацию практики статического анализа, как можно «бороться» с False Positive. И, конечно же, не обошлось без возможных областей использования машинного обучения для рассматриваемых задач.

В итоге получилось очень хорошее руководство для новичков, которые только начинают свой путь в SAST 😊
👍11
Service Mesh: DIY

Здрасссссьте Всем привет!

Хотели разобраться в том, что такое Service Mesh? Тогда эти статьи (раз, два) могут вам понравиться. В них Автор предлагает создать свою собственную реализацию!

Конечно не для production ready окружений, но для обучающих целей точно сойдет!

Предлагается пройти вот такой путь:
🍭 Создание http-client и http-server
🍭 Реализация proxy для перехвата requests и responses
🍭 Добавление созданных сущностей в Deployment
🍭 Автоматизация предыдущего шага с использованием собственного Admission Controller

Указанные шаги Автор реализует с использованием Golang. Код, пояснения и примеры, ссылки на конфигурационные файлы и используемый инструментарий – все это есть в статье для воспроизведения

P.S. А если не хочется читать статью, то все необходимое собрано в этом GitHub Repo 😊
👍6🔥3
Штурвал - community версия

Всем привет!

Не можем остаться в стороне и не поделиться интересной новостью. Лаборатория Числитель выпустила community версию своей платформы контейнерной оркестрации - Штурвал.

В community версии есть:
🍭бесплатная лицензия с неограниченным сроком действия
🍭полный функционал, сопоставимый с коммерческой редакцией продукта
🍭управление до 10 воркерами любой конфигурации

И важные ссылки:
🍭форма для получения лицензионного ключа
🍭чат community в Телеграм
🔥146🥰5💩5👀1
Kubernetes Endpoints: что это и зачем?

Всем привет!

Endpoints играют важную роль в «жизни» Kubernetes – они помогают «связывать» Service с Pod для корректной работы приложений.

Но что это такое и как это работает изнутри? Если вам интересно разобраться, то эта статья может быть вам полезна.

Автор рассматривает:
🍭 Что такое Endpoint и как они работают (создание Service, создание Endpoint, обновление Endpoint)
🍭 Структура Endpoint с пояснениями
🍭 EndpointSlice, их роль, назначение и принцип работы

В завершении статьи приводится демонстрация на примере простого Deployment и его Service, в котором рассматриваются описанные в статье сущности.
3
Mend Renovate: автоматическое обновление зависимостей

Всем привет!

Mend Renovate – решение, которое позволяет идентифицировать устаревшие версии используемых библиотек и предлагает варианты по обновлению.

По умолчанию Renovate поддерживает более 90 пакетных менеджеров, включающих в себя как языки программирования, так и средства автоматизации управления ИТ-инфраструктурой.

Алгоритм работы весьма прямолинейный:
🍭 Сканирование репозиториев для идентификации пакетов и зависимостей
Проверка на наличие более свежей версии
🍭 Открытие PR (MR) на обновление с дополнительной информацией (Age, Adoption, Passing, Confidence)

Познакомиться с его работой поближе можно в статье. В ней Автор использует Renovate для управления Helm Charts. Описаны все шаги – от подключения GitHub Repo до создания PR на обновление Chart.

Renovate доступен в нескольких вариантах: CLI (open source), Community и Enterprise. О разнице и ограничениях разных вариантов можно прочесть вот тут.

И, конечно же, больше подробностей можно узнать в документации на решение, доступной по ссылке.
Анализируем CVE

Всем привет!

Вроде нет ничего в мире ИБ более «знакомого», чем CVE (разве что КЦД 😊). Про них часто говорят, их разбирают и анализируют.

Однако, бывают случаи, когда надо просто и понятно объяснить, что это такое. Например, разработчику ПО, которого мы просим обновить библиотеку, чтобы устранить CVE-XXX-YYYY.

В статье от SNYK как раз содержится такой необходимый набор:
🍭 Получение информации о CVE
🍭 Анализ уровня критичности CVE
🍭 Изучение CWE, характерных для CVE. Разница между CVE и CWE
🍭 Возможность эксплуатации CVE
🍭 Стратегии по устранению уязвимости

Каждый блок разбирается на конкретной уязвимости, а именно: CVE-2020-8203 (prototype pollution в Lodash).

В итоге получается очень неплохой минималистичный обзор, позволяющий быстро ввести кого-либо в курс дела.
👍2🔥21
ZTRA.pdf
8.5 MB
Zero Trust Reference Architecture для Kubernetes

Всем привет!

В приложении – электронная книга (~ 68 страниц), в которой описана Zero Trust архитектура, которую Авторы предлагают реализовать в Kubernetes.

Для этого они предлагают использовать:
🍭 Emissary-ingress. Защита доступа извне
🍭 Linkerd. Контроль взаимодействия сервисов внутри
🍭 Cert-Manager. Управление множеством сертификатов, которые понадобятся
🍭 Polaris. Контроль политик и выполнения их требований

Само повествование линейно – от того, что такое Zero Trust и основных терминов, до погружения в предлагаемые технологии.

Авторы описывают почему они выбрали именно такой набор, приводят общее описание функционала и способы настройки для того, чтобы собрать все «воедино».

P.S. Кстати, все приложения, конфигурационные файлы и т.д., используемые в книге, можно найти в GitHub Repo (ссылка на него есть в книге 😊).
👍5🔥2
Минималистичное обучение по уязвимостям

Всем привет!

Небольшой пятничный пост, посвященный обучающим материалам. По ссылке доступен набор небольших «уроков», посвященных уязвимостям и недостаткам в ПО.

Например:
🍭OWASP Top 10, Web (куда без него)
🍭Logging and Monitoring
🍭Buffer Overflows
🍭Host Header Poisoning

Из плюсов подборка достаточно большая, материал подается просто и наглядно. Из минусов – только теория.

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

Или для быстрого и краткого ознакомления с темой, чтобы «быть в курсе».
Snyk_SOOS_Report_2024.pdf
8 MB
The State of Open Source

Всем привет!

В приложении можно найти небольшой отчет (~ 12 страниц) от команды SNYK, посвященный вопросам безопасности Open Source.

Внутри есть информация о:
🍭 Отслеживании зависимостей (прямые, транзитивные)
🍭 Частоте изменений кодовой базы
🍭 Используемых практиках анализа кода и зависимостей
🍭 Случаях, связанных с Supply Chain Security
🍭 Соблюдении SLA и не только

Минимум текста, максимум графики и данные за 2023 и 2024 год.

В целом – достаточно хороший и информативный отчет, который можно быстро изучить.
👍3
Все любят Policy as Code, но не все любят Rego

Всем привет!

Policy as Code крайне удобный подход к управлению доступом, анализу выполнения корпоративных требований.

Он декларативен, его можно автоматизировать, конфигурационные файлы можно хранить в git, возможности (практически) безграничны.

Однако, есть и нюансы. В статье Автор описывает несколько примеров, связанных с Open Policy Language (OPA) и Zanzibar.

Если обобщить, то получается следующее:
🍭 Сложность. Написать базовые политики крайне просто, а что-то «поинтереснее» - уже сложно
🍭 Порог входа. Написание политик требует технических навыков
🍭 Дополнительные знания. Для корректной работы с Rego или Zanzibar потребуется изучить «еще одну область знаний»
🍭 Масштабируемость. При увеличении количества политик их тестирование и поиск ошибок в них становится затруднительным

В качестве решения Автор предлагает использовать абстракции более высокого уровня и low-code интерфейсы. Например, Permit (есть бесплатная Community версия).

Основная идея – создание простого drag and drop UI, с которым могут работать все пользователи. А вся «магия» остается «под капотом».

А что вы думаете по этому поводу? Стоит ли оно того или лучше все-таки выучить REGO или иной аналогичный инструмент?
1