DevSecOps Talks
الذهاب إلى القناة على Telegram
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
إظهار المزيد8 004
المشتركون
+124 ساعات
+107 أيام
+4630 أيام
أرشيف المشاركات
8 004
CodeQL: From zero to hero, Part 2
Всем привет!
Вторая статья серии, посвященной CodeQL (о первой мы писали тут). На этот раз речь пройдет не про общие концепты статического анализа, а непосредственно про сам CodeQL.
Статья содержит информацию:
🍭 Общий принцип работы CodeQL
🍭 «Первое сканирование» с использованием GitHub Actions
🍭 База данных CodeQL: создание, переиспользование
🍭 Написание собственных CodeQL Query: основы, Predicates, Classes и т.д.
В статье очень много примеров, каждый из которых разбирается практически «line-by-line» и отлично помогает разобраться в основах CodeQL. Однозначно рекомендуем к прочтению, как и первую статью серии! ☺️
8 004
25 Methods for Pipeline Attacks
Всем привет!
В статье собраны примеры того, как можно что-то «получить» или сделать «плохо» при неправильной конфигурации pipeline.
Например:
🍭 Добавление unauthorized user в качестве approver
🍭 Извлечение секретов и переменных окружения
🍭 Изменение конфигурационных файлов приложения и другие
Для каждого примера приводится описание сценария и примеры команд, как это можно реализовать. В завершении статьи примеры того, как этого можно не допустить.
8 004
Нюансы проверки подписи в Kubernetes
Всем привет!
Подпись образов, их аттестация и последующая проверка при создании ресурсов Kubernetes становится все более и более привычной практикой. Появляются новые механизмы, обрастают функционалом существующие.
Но все ли так просто, неужели нет «подводных камней»? Ответ можно найти в статье от Chainguard, в которой Автор описывает несколько нюансов, связанных с проверкой подписи.
В их число входят:
🍭 Resource Type. Важно учитывать, что «местоположение» контейнера в манифесте будет разным, например, для
Pod, Deployment или CronJob
🍭 Scale. Потенциальный rate limit для container registries, связанный с большим количеством запросов при проверке подписи, важность использования cache
🍭 Tags and digest. Особенности, связанные с «конвертацией» tag – digest
🍭 Attestations and additional data. Больше данных – больше проверок, что может увеличить время анализа и быть заметно на масштабе
🍭 Key Rotation. Управление ключами, используемыми для подписи образов
Все очень структурированно и доступно описано. Что делать с описанными выше нюансами? У Chainguard есть мнение и на этот счет! В завершении статьи можно найти ссылку на их проект – Chainguard Enforce (увы, не open source).8 004
Labeling в Kubernetes
Всем привет!
Простой пост понедельника, посвященный Labels. Механизм повсеместно используется в Kubernetes. При этом есть как «системные» Labels (нужны для работы Kubernetes), так и «пользовательские» (упрощают понимание контекста).
В статье приведены рекомендации о том, как именно их стоит указывать. За основу взят материал из официальной документации k8s, который рекомендует указывать:
🍭 Name
🍭 Instance
🍭 Version
🍭 Component
🍭 Part-of
🍭 Managed-by
Рассматриваются примеры реализации, в том числе на базе существующих и популярных решений мира контейнеризации. Помимо этого, можно найти рекомендации об использовании Labels в multitenant-инсталляциях.
8 004
SNYK Top 10
Всем привет!
В приложении доступен отчет по OWASP Top 10 по 10 наиболее распространенным уязвимостям по версии SNYK для языков: JavaScript, Java, Python, Go, PHP, Ruby, and C#.
Отчет формировался на основании данных, анализируемых специалистами компании и представляет их видение происходящего.
Список получился таким:
🍭 Denial of Service
🍭 Remote Code Execution
🍭 Deserealization of Untrusted Data
🍭 SQL Injection
🍭 Prototype Pollution
🍭 Insecure Temporary File
🍭 Directory/Path Traversal
🍭 Privilege Escalation
🍭 Regular Expression Denial of Service
🍭 NULL Pointer Dereference
Помимо информации об уязвимостях в отчете можно найти ссылки на cheatsheet по языкам и полезные материалы по теме.
8 004
PyLoose: fileless-атака с Python
Всем привет!
Команда Wiz идентифицировала новое вредоносное ПО, которое получило название PyLoose. Оно позволяет запустить crypto miner в оперативной памяти с использованием
memfd.
Для эксплуатации необходим Jupyter Notebook, возможность запуска Python-скриптов с доступом к системным командам (os, subprocess). Жертве передается нужный script, происходит его запуск и установка XMrig miner.
Примечательно, что script состоит всего из 9(!) строк кода на Python. «Построчный разбор», подробности атаки (включая условия «успешности»), а также способы ее идентификации можно найти в статье от Wiz.8 004
Arbitrary Code Execution в R/O filesystems
Всем привет!
Рекомендацию по использованию
readOnlyRootFileSystem: true можно встретить практически во всех рекомендациях и лучшим ИБ-практиках по защите контейнеров. Но достаточно ли ее для того, чтобы полностью избежать манипуляций с файловой системой контейнера?
Размышления на эту тему можно найти в статье. Автор рассматривает 3 сценария:
🍭 Nginx и использование /dev/tcp
🍭 Alpine и использование возможностей «встроенного» busybox (wget)
🍭 Alpine и использование dynamic linker/loader libraries
В каждом из сценариев Автору удалось добавить файлы в файловую систему и установить reverse shell. При этом контейнеры запускались с readOnlyRootFileSystem: true и из-под непривилегированных пользователей.
Примеры реализации (команды, код, детализация подходов), а также меры для идентификации подобных сценариев можно найти в самой статье.8 004
Webhook: проверка электронной подписи
Всем привет!
Webhook – интеграционный механизм, который повсеместно используется в разработке и DevSecOps. Это удобно, просто и быстро.
Но как убедиться в том, что данные пришли от доверенного источника? Что никто не пытается его «взломать», например, передав не те данные. Ответ – электронная подпись.
В статье Авторы от SNYK проводят простую демонстрацию:
🍭 Создают небольшой webhook-receiver на базе Node.js
🍭 Направляют запрос при помощи Postman. Контроля подписи нет, запрос выполняется
🍭 Настраивают webhook в GitHub
🍭 Изменяют логику работы приложения, добавляя анализ электронной подписи webhook
🍭 Повторяют аналогичный тест. На этот раз выполняется только «разрешенный» запрос, для всех остальных – 401
Примеры кода и пояснения, а также рекомендации как повысить уровень информационной безопасности при использовании webhook можно найти в статье.8 004
Krossboard: k8s resource usage analysis
Всем привет!
Krossboard – средство аналитики и визуализации, которое позволяет получать информации о потреблении ресурсов множеством кластеров Kubernetes централизованно.
При помощи решения можно:
🍭 Сбор данных с кластеров. Информация о container, pod, node с каждого кластера собирается раз в 5 минут
🍭 Аналитика. Удобные dashboards, которые предоставляют информацию о потреблении ресурсов по namespace, cluster и globally
🍭 Отчетность. Krossboard обладает REST API, при помощи которого можно скачивать отчеты в CSV или JSON
Устанавливается и настраивается очень просто. Правда, в качестве Secret ему необходим Kubeconfig для доступа к целевым кластерам. Инструкцию о том, как сделать Kubeconfig с минимальными правами и перечень этих самых прав можно найти в repo проекта.
8 004
Приглашаем вас 18 июля в 16:00 присоединиться к online-митапу наших партнеров: Зачем «Марлин» повстречал «Штурвал»?
Две российские компании-разработчики — «Лаборатория Числитель» и «Высокие цифровые технологии» — решили объединить усилия и представить на рынок надежное решение для ускорения процесса разработки приложений и сокращения Time to Market для бизнеса.
📈 Платформенное решение «Марлин», построенное на микросервисной архитектуре, позволяет снизить стоимость разработки на 40%, структурировать и автоматизировать все необходимые процессы, высвобождая ресурсы разработчика непосредственно для написания кода. А контейнерная платформа «Штурвал» выступает в роли надежного звена по управлению контейнерами, обеспечивая высокий уровень доступности и информационной безопасности.
🔗 В связке «Марлин» и «Штурвал» — это решение, готовое выполнить задачи быстрой и безопасной разработки и эксплуатации контейнеризированных приложений на всем жизненном цикле. Поэтому на мероприятии спикеры продемонстрируют «Марлин» и «Штурвал» в действии и на примере реальной производственной задачи в компании ВСК.
На online Meetup поговорят:
▪️ о безопасной разработке и эксплуатации приложений средствами «Марлин» и «Штурвал»;
▪️ бесшовной миграции без потери функционала;
▪️ стандартах деплоя, готовом конвейере разработки;
▪️ совместной поддержке решения.
✅ Регистрация
8 004
SR-IOV Network metrics exporter
Если вдруг так сложилось, что вы используется K8s на bare-metal, да и еще в полной мере пользуетесь функциональностью SR-IOV на сетевых картах, то возникает вопрос, как же все мониторить?
Kubernetes Network Plumbing Working Group, разработчики SR-IOV Network Operator и Multus MetaCNI недавно выложили в сеть экспортер метрик, позволяющий полноценно снимать метрики с VF интерфейсов.
Пока что, данный проект, по заявлениям разработчиков не готов к продуктивной эксплуатации. Однако, ни что не мешает попробовать его в тестовой среде 😀
https://github.com/k8snetworkplumbingwg/sriov-network-metrics-exporter
8 004
Взаимодействие с ArgoCD через Golang
Всем привет!
В статье приводится пример того, как можно «общаться» с ArgoCD используя Golang. Начинается статья с подготовки необходимого окружения – запуск Minikube, установка ArgoCD, создание token для аутентификации в ArgoCD.
Дальше начинается самое интересное:
🍭 Приводится структура Golang-проекта, который будет создаваться
🍭 Создание Client для взаимодействия с ArgoCD сервером
🍭 Получение перечня кластеров
🍭 Создание project в ArgoCD и не только
В заключение приводится пример минималистичной программы, которая подключается к ArgoCD серверу, создает проект, отображает его ID, удаляет его и показывает все доступные кластеры. Таким образом получается продемонстрировать подготовленные наработки.
8 004
Defending CI/CD environments
Всем привет!
Свежий материал от NSA и CISA, посвященный безопасности окружений непрерывной сборки и доставки. Материал относительно небольшой (~23 страницы), но весьма полезный.
Внутри можно найти:
🍭 Attacks and Attack Surface. Небезопасный код, некорректные конфигурации, небезопасная обработка секретов и т.д.
🍭Threat Scenarios. Небольшое описание сценариев «что может пойти не так» и рекомендации по противодействию
🍭Hardening. Управление доступом, безопасность секретов, patch management, использование средств автоматизации проверок ИБ (SAST, DAST, SCA), журналирование и т.д.
Каждый раздел кратко детализируется, приводятся ссылки на дополнительные материалы для изучения. В качестве «бонуса» - mapping угроз CI/CD на матрицу MITRE ATT&CK.
8 004
Deepsecrets: поиск секретов
Всем привет!
Много инструментов для поиска секретов не бывает! Поэтому предлагаем еще один – Deepsecrets. Особенно приятно, что этот инструмент от команды Avito!
Зачем нужен еще один сканнер? Ответ можно найти в repo – вместо классического regex-подхода Deepsecrets использует семантический анализ, более эффективное использование энтропии и не только. Но все равно regex «внутри» есть 😊
Устанавливается быстро, запускается просто и немного конфигурируется. Можно сразу посмотреть на результаты и сравнить с аналогами.
Если хочется ознакомиться с историей создания инструмента, то можно прочесть отличную статью, описывающую проблематику поиска секретов от все той же команды Avito.
8 004
Рождение pod’a: что «внутри»?
Всем привет!
Еще одна статья из серии «что происходит под капотом?». Рассматривается процесс создания
pod’a и вся та «магия», что осуществляется с помощью Kubernetes.
Расписываются следующие шаги
🍭 Написание манифеста, использование kubectl и client-side validation
🍭 AuthN и AuthZ при обращении к kube-apiserver. Когда «подключается» Admission Control
🍭 Scheduling (Node Selection, Filtering, Scoring, Final Selection, Binding and Assignment, Node Allocation)
🍭 Взаимодействие Kubelet, CRI и CNI для старта контейнера
Материал очень хорошо структурирован и позволит чуть больше понять «внутренности» и то, зачем как и когда используются разные технологии и компоненты Kubernetes.8 004
Validating Admission Policies
Всем привет!
В repo собраны политики, используемые утилитой Kubescape. Получился неплохой baseline набор, который можно использовать. Да, многие из них встречаются в различных статьях и материалах, но это не делает их менее правильными или нужными для использования.
Например, внутри есть политики про:
🍭 Управление ресурсами CPU/RAM
🍭 Наличие SSH-сервера внутри контейнера
🍭 Небезопасные Linux-capabilities
🍭 Naked Pods (Pod, не имеющие «обертки» в виде ReplicaSet, Deployment, Job и т.д.) и другие
Очень понравилось описание каждой политики. В нем содержится указание причины, из-за которой политику целесообразно применять; подверженные ресурсы; уровень значимости политики; параметры конфигурации (при наличии) и описание того, что именно делает политика.
8 004
Jsluice: анализ JavaScript файлов
Всем привет!
Jsluice существует в двух вариантах – один из них представляет собой CLI, а второй – Golang Package. На случай, если вам вдруг захочется интегрировать ее возможности себе в проект 😊
Утилита позволяет анализировать JavaScript файлы и находить в них:
🍭 URLs и paths
🍭 Секреты (по умолчанию только AWS, GCP, GitHub Keys и Firebase configurations, но можно расширять собственными patterns)
🍭 Syntax tree и не только
В repo дается отличное описание с примерами как и зачем можно использовать jsluice. А если хочется использовать Golang Package-версию, то есть детальное описание в документации пакета.
8 004
Callisto: binary analysis
Всем привет!
Callisto – небольшая утилита, которая позволяет искать уязвимости в binary-файлах. Скорее всего качество анализа будет невысоким, но сам подход достаточно интересный.
В своей работе Автор объединил следующее:
🍭 Декомпиляция binary файла с использованием
Ghidra
🍭 Анализ полученных результатов – Semgrep
🍭 Валидация результатов при помощи GPT-3.5-Turbo
Пример того, как работает Callisto можно найти в repo проекта. Так же там присутствует информация о необходимых prerequisites для запуска утилиты и ключах, которые можно использовать.8 004
Repo Jacking
Всем привет!
В статье описывается принципы работы одной из software supply chain attack – Repo Jacking. Эта атака может привести к значительным последствиям.
При этом реализуется она относительно просто:
🍭 Допустим, что в коде есть зависимость на
https://github.com/username/project
🍭 Представим, что username был изменен владельцем. Пока что все нормально
🍭 Но! Освободившийся username можно зарегистрировать «еще раз» и создать такой же «project», но уже с нужным вам содержанием.
В этом случае зависимость, указанная в коде, будет ссылаться не на исходный проект, а на созданный потенциальным злоумышленником.
Помимо описания самой атаки в статье можно найти информацию об условиях, когда она может быть реализована, а также результаты анализа GitHub Repo, потенциально уязвимых к Repo Jacking.
Кстати, подход к идентификации уязвимых Repo доступно описан в статье и весьма интересен -от сбора данных, до поиска unregistered user names!
Что делать и как быть? Все это можно найти внутри 😊 (не использовать прямые ссылки, делать version pinning и использовать lock files, скачивать зависимости и использовать их локально (vendoring)).
P.S. Сама статья от 2020 года. Если интересно что изменилось с тех пор – можно обратиться к этому материалу от 2023.8 004
Kubernetes Operator: Step by Step Guide
Всем привет!
В статье приведена детальная пошаговая инструкция о том, как создать собственный Kubernetes Operator с использованием Operator SDK. Задача создаваемого оператора простая – он будет хранить информацию о
pod, которые не пересоздавались/обновлялись в течение заданного времени.
Статья начинается с краткого описания того, что такое Operator и зачем он нужен, что он делает и из каких «компонентов» состоит.
Дальше – интересней:
🍭 Перечень необходимых «зависимостей» (начиная от Golang и заканчивая «подопытным» кластером k8s)
🍭 Инициализация проекта с Operator SDK
Создание Custom Controller
🍭 Написание логики ключевого процесса Operator’a – реконсиляции
🍭 Сборка созданного Operator и его тестирование
Статья и правда step by step. Каждый шаг описывается Автором, приводится листинг (частичный) кода, который может быть полезен при самостоятельном воспроизведении материала. А для наглядности есть схема, в которой описан процесс работы Operator’a.