AppSECT.A.
378 subscribers
427 photos
9 videos
127 links
Блог Ильи Шмакова

geminishkv.tech

- AppSec Toolchain
- DevOps
- Процессы DevSecOps
- Infosec Risks
- PMI
- Кулуарный ИБ

AppSec Teamlead СберСпасибо @sberbank

Лидер findevsecops.ru @fintechassociation

Преподаватель @bmstu1830, @miptru
Download Telegram
🛠🏆 DevSecOps Toolchain MAP Release v.1.1.2

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

Смотри, ты можешь ее почекать и попользоваться фильтрацией.

Вот тут source проекта с обертками на js, логикой на py + json из yaml. Ты можешь посмотеть репы и шилды с деталями, релизнул недавно, но никак не могу устоять перед тем, что бы поделиться с тобой этим. До нг планирую еще подкрутить пару классных штук.

Для твоего удобства натянут на mkdocs material и доступен по линку с адаптивной версткой, но ты же понимаешь, что с телефона таблица не удобно, поэтому есть фильтрация. Табличка подстраивается под размер экрана и компакта на сколько это возможно, записей на сейчас о тулах 267.

- У каждого тула указан тип лицензии, в менюшке есть страничка описания лицензий и у меня тут можешь почекать по #licenses. Я скоро продолжу также эту историю. Помимо этого там есть описание и прочие классные отмеченные штуки, которые помогут тебе определиться с тем, нужен тебе тул или нет.

- В таблице предусмотрен open-source решения, вендорские по рынку РФ и из-за заграницы. Также там есть сертификаты ФСТЭК.


Сейчас функционал допиливается и пока работа ведется, обрати внимание, что ты один из первых, кто это видит прямо сейчас 🏆

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

Основные моменты:

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

- агрегируются 'meta' данные о наличии сертификации, типе лицензии ПО, может ли быть импортозамещено, какой язык программирования, какие виды отчетов и иное
- вся верстка натянута на ' mkdocs material'
- мы принимаем 'pull requeste' на изменения для того, что бы эта карта шарилась и мы могли работать в едином поле с комьюнити. Сейчас релиз будет пофикшен и скоро мы зальем вот
сюда
и опубличим, а тебе достается из первых рук то, что имеется на сейчас
- имеется фильтрация по 'meta' данным
- убрали некоторые инструменты, которые не поддерживаются или пользуются меньшей популярностью, вследствие чего они не обновляются
- актуализировали списки инструментов, на сейчас готовятся правки по ткстам и добавление материалов описания
- добавили MLSecOps, то есть быть в тренде 😅


Release v.1.1.2 можешь посмотреть тут с артефактами и описанием как разворачивается, и да, не забывай про лицуху и уведомление.

Stay Tuned 🙏

#appsec #devsecops #roadmap #specialty #toolchain #techsolution #gost #paper
🔥4❤‍🔥3
🛠 Cilium как Container Network Interface k8s

Салют,
Сегодн я хочу поделиться с тобой описанием, относительно CNI контролей под Kubernetes. Мы посмотрим на CNI плагин Cilium. Но мы рассмотрим его в большей степени со стороны технички.

Служит для обеспечения сетевой связности, безопасности и наблюдаемости между рабочими нагрузками, как подами в Kubernetes. Работает на уровне ОС. Cilium использует eBPF для гибкого и эффективного управления сетевым трафиком и политиками безопасности путем настройки сети пода через eBPF-программы в ядре хоста. Тип лицензии: Open-source Apache 2.0.


Особенности:

- Сетевые возможности: CNI, LoadBalancer как CiliumClusterMesh
- Политики безопасности на основе identity-aware, шифрование трафика, защита от DDoS, фильтрация DNS, соответствие FIPS
- Может использоваться через minikube или kind для тестирования сетевых политик и поведения
- CiliumNetworkPolicy можно применять как манифесты
- Policy работают на уровне приложений L7 для HTTP, gRPC, Kafka и т.д., а не только на сетевом уровне L3/L4
- CiliumNetworkPolicy сами по себе являются декларативными правилами и можно настроить default-deny режим


Применение


helm repo add cilium https://helm.cilium.io/
 
# Установка Cilium в кластер Kubernetes
helm install cilium cilium/cilium --version 1.14.4 \
  --namespace kube-system \
  --set cluster.name=my-cluster \
  --set cluster.id=1


Policy & Deploy


deploy_cilium:
  stage: deploy
  image:
    name: alpine/helm:latest
    entrypoint: ['']
  script:
    - helm repo add cilium https://helm.cilium.io/
    - helm upgrade --install cilium cilium/cilium
      --version 1.14.4
      --namespace kube-system
      --set cluster.name=${CLUSTER_NAME}
      --set cluster.id=1
      --set hubble.relay.enabled=true
      --set hubble.ui.enabled=true

security_policies:
  stage: deploy
  image:
    name: bitnami/kubectl:latest
    entrypoint: ['']
  script:
    - kubectl apply -f manifests/cilium-network-policies/
  dependencies: []


CiliumNetworkPolicy пример


apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
  name: "l7-rule"
spec:
  endpointSelector:
    matchLabels:
      app: myService
  ingress:
  - fromEndpoints:
    - matchLabels:
        app: frontend
    toPorts:
    - ports:
      - port: '80'
        protocol: TCP
      rules:
        http:
        - method: "GET" # Разрешить только GET-запросы
          path: "/api/v1/data.*" # ко всем путям, начинающимся с /api/v1/data
        - method: "POST"
          path: "/api/v1/upload" # и конкретно на этот путь
        - method: "GET"
          path: "/public/.*" # Разрешить доступ к публичным ресурсам


Политика "default-deny" для namespace


apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: allow-dns
  namespace: production
spec:
  endpointSelector: {}  # Все pod'ы
  egress:
  - toEndpoints:
    - matchLabels:
        k8s-app: kube-dns
    toPorts:
    - ports:
      - port: "53"
        protocol: UDP
      - port: "53"
        protocol: TCP


Итого:

- Cilium полностью заменяет kube-proxy, реализуя балансировку нагрузки на основе eBPF
- Для приложений с REST API или gRPC Cilium позволяет внедрить политику "наименьших привилегий"
- Cluster Mesh позволяет безопасно соединять несколько кластеров Kubernetes,
- Вместо фильтрации по IP-адресам присваивает идентификатор безопасности группам подов с одинаковыми метками, где встраивается в каждый сетевой пакет, что позволяет проверять права связи на узле-получателе, независимо от того, где запущен под
- Расширяет стандартные NetworkPolicy Kubernetes, позволяя описывать правила на основе протоколов HTTP, gRPC и Kafka. Это позволяет разрешать или запрещать конкретные API-вызовы, HTTP-методы (GET, POST) или пути URL
- Может автоматически шифровать весь трафик между подами в кластере или даже между кластерами с использованием IPsec или WireGuard
- Безопасность исходящего трафика может быть реализована через политики, привязанные к DNS-именам


#appsec #toolchain #containersecurity #reco #techsolution #paper
🔥7
Салюты,
Пятничное 😅🫶

#lol #кулуарка
🤣8
🏆 Ежегодный митап сообщества FinDevSecOps

Хочу поделиться с тобой новостью, что у нас тут проходит очередной митап нашего сообщества findevsecops.ru.

Ассоциация ФинТех @fintechassociation проводит митап: 08 декабря 2025 с 11.00 до 17.00.

Место проведения: офис Т1 по адресу г. Москва, Ленинградский проспект, 36с41, 23 этаж, амфитеатр.

Также будет доступно онлайн подключение к трансляции и ты сможешь увидить классных спикеров по финтеху и безопасной разработке в ИБ.

Лидеры FinDevSecOps и приглашенные эксперты в своих выступлениях ответят на следующие вопросы:

- Как выстроить конвейер безопасной разработки в финансовой организации?
- Как создать эффективную команду безопасной разработки?
- Возможно ли построить безопасную разработку как сервис?
- Как оценить зрелость и эффективность команд разработки, AppSec и SecChampion в частности?


Необходима регистрация по форме.

Поделюсь немного контентом, который тебя ждет 🙏

#appsec #devsecops #pmi #specialty #toolchain #vulnmanagement #techsolution #meetup #кулуарка
🔥5
🛠 Cheatsheet тебя "качает": Docker

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

Общее описание


docker exec -it <container_name_or_id> <command> # выполнение команды
-i  # интерактивный режим (позволяет передать ввод)
-t  # выделяет псевдотерминал (tty) для взаимодействия.
<container_name_or_id>  # имя или ID контейнера.


Базис


$ docker build
$ docker build --no-cache
$ docker compose build --no-cache

$ docker image ls all # все образы

# Создает только определенную службу
$ docker compose build <service>


$ docker container ls # все запущенные контейнеры
$ docker container ls -all # все контейнеры

# привилегированный режим
$ docker run -d --privileged --name docker go:1.16


Compose


$ docker compose up
$ docker compose up -d # Запускает контейнеры в отсоединенном режиме в фоновом режиме
$ docker compose start # Запускает уже созданные контейнеры (не перестраивает и не создает заново)
$ docker compose up --build # Создает изображения, а затем запускает контейнеры
$ docker compose up --force-recreate # Воссоздает контейнеры, даже если ничего не изменилось
$ docker compose up --build --force-recreate # Полностью перестраивает и воссоздает контейнеры



$ docker compose stop
$ docker compose down # Останавливает и удаляет контейнеры, сети и тома по умолчанию
$ docker compose down --volumes # Удаляет контейнеры, сети и именованные/анонимные тома
$ docker compose down --rmi all # Также удаляет все построенные изображения
$ docker compose rm # Удаляет остановленные контейнеры служб (после остановки)
$ docker compose kill # Принудительно останавливает запуск контейнеров


Списки и профили


$ docker compose ps # Списки запущенных служб и их состояние
$ docker compose logs # Отображение журналов для всех служб
$ docker compose logs -f
$ docker compose exec <service> sh # Открывает оболочку внутри работающего контейнера
$ docker compose config


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

#toolchain #appsec #specialty #pmcases #paper #containersecurity
🔥5
Салюты,
С субботкой 🙃

#lol #кулуарка
🤣8❤‍🔥2😐2
Ну вы поняли 🤣🤣🤣

#lol #кулуарка
❤‍🔥4🔥3
🛠 Сценарий для Docker CIS & Image Audit

Салют,
Начнем неделю с практики, решил поделиться кастомом, так как ты сможешь его заюзать для триажа, конвертации отчетов.

Сценарий

- Определяет платформу Linux/macOS/другое и выбирает образ  как основной для аудита
- Создаёт структуру каталогов  ./audit_reports/{json,text,xlsx,odt} для результатов
- Запускает Trivy для образов, записывая JSON‑отчёты уязвимостей в  audit_reports/json/*.json
- Запускает контейнер  docker-bench-security  с маунтами и правами, выполняя аудит
- Если Python c  openpyxl  и  odfpy дополнительнос стоят рядом, то перебирает все JSON‑отчёты
- Сканирует Docker‑образы на CVE по заданному списку, включая docker/docker-bench-security, запускает по каждому инструмент анализ с перечнем уязвимых библиотек, их версий, идентификаторов уязвимостей, уровней критичности и статуса исправления
- Проводит конфигурационный аудит Docker‑хоста


Скрипт


set -euo pipefail

echo "Docker CIS & Image Audit"

command -v docker >/dev/null 2>&1 || { echo "no docker"; exit 1; }
docker info >/dev/null 2>&1 || { echo "docker daemon down"; exit 1; }

case "$(uname -s)" in
Linux) PLATFORM="Linux" ;;
Darwin) PLATFORM="macOS" ;;
*) PLATFORM="Other" ;;
esac

BENCH_IMAGE="${DOCKER_BENCH_IMAGE:-docker/docker-bench-security:latest}"
REPORTS_DIR="./audit_reports"
mkdir -p "${REPORTS_DIR}"/{json,text,xlsx,odt}

echo "Platform: ${PLATFORM}"
echo "Image: ${BENCH_IMAGE}"

docker image inspect "${BENCH_IMAGE}" >/dev/null 2>&1 || docker pull "${BENCH_IMAGE}"

if command -v trivy >/dev/null 2>&1; then
trivy image --format json --output "${REPORTS_DIR}/json/docker-bench-security.json" "${BENCH_IMAGE}" || true
for img in nginx:alpine python:3.11-alpine postgres:16-alpine; do
safe=$(echo "${img}" | sed 's/[:\/]/-/g')
trivy image --format json --output "${REPORTS_DIR}/json/${safe}.json" "${img}" || true
done
fi

run_bench() {
out="${REPORTS_DIR}/text/docker-bench-security-cis.txt"
docker run --rm \
--name "docker-bench-$(date +%s)" \
--cap-add audit_control \
--security-opt no-new-privileges \
--network host --pid host --userns host \
-e DOCKER_CONTENT_TRUST="${DOCKER_CONTENT_TRUST:-0}" \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /etc:/etc:ro -v /var/lib:/var/lib:ro -v /usr/bin:/usr/bin:ro \
"${BENCH_IMAGE}" 2>&1 | tee "${out}"
}

[ "${PLATFORM}" = "Linux" ] && run_bench || echo "CIS аудит в Linux/WSL"

if command -v python3 >/dev/null 2>&1; then
python3 << 'PY'
import json, os, sys
from pathlib import Path
try:
from openpyxl import Workbook
from odf.opendocument import OpenDocumentText
from odf.text import P
except ImportError:
sys.exit(0)

BASE = Path("./audit_reports")
for jf in (BASE / "json").glob("*.json"):
with jf.open() as f:
data = json.load(f)

xlsx = BASE / "xlsx" / (jf.stem + ".xlsx")
wb, ws = Workbook(), Workbook().active
ws = wb.active
ws.append(["Target","Type","VulnID","Severity","Status","Title"])
for r in data.get("Results", []):
t = r.get("Target","N/A")
for v in r.get("Vulnerabilities", []) + r.get("Misconfigurations", []):
ws.append([
t, r.get("Type","unknown"),
v.get("VulnerabilityID","N/A"),
v.get("Severity","UNKNOWN"),
v.get("Status","N/A"),
v.get("Title","N/A")[:80],
])
wb.save(xlsx)

odt = BASE / "odt" / (jf.stem + ".odt")
doc = OpenDocumentText()
doc.text.addElement(P(text=f"Report: {jf.name}"))
for r in data.get("Results", []):
doc.text.addElement(P(text=f"\nTarget: {r.get('Target','N/A')}"))
for i, v in enumerate(r.get("Vulnerabilities", []) + r.get("Misconfigurations", []), 1):
doc.text.addElement(P(text=f"[{i}] {v.get('VulnerabilityID','N/A')} ({v.get('Severity','UNKNOWN')}): {v.get('Title','N/A')}"))
doc.save(str(odt))
PY
fi

echo "Done -> ${REPORTS_DIR}/{json,text,xlsx,odt}"


#appsec #devsecops #specialty #toolchain #containersecurity #vulnmanagement #techsolution
🔥3🤯2🤣1
🏆 Испытания ФСТЭК России ГОСТ 71207 по SAST-анализаторам

Салюты,
Из первых рук,
Мы тут с моими ребятками участвовали в испытаниях по ГОСТ 71207 для SAST.

В итоге нас наградила Ирина Гефнер (ФСТЭК ) и Дмитрий Пономарев (ИСПРАН /Фобос) вот такой классной отчивкой в рамках открытой конференции ИСП РАН, которая проходит прямо сейчас.

Решил поделиться своим кайфом с тобой, двигаем ибешечку родной 🙏

#appsec #devsecop #specialty #toolchain #sast #conf #meetup #compliance #gost
🔥7❤‍🔥3
🛠🏆 AppSec Labs to pump yourself up Release v.1.3.0

Салюты,
Запилил для тебя классные лабораторки по AppSec, туда входит: Risk Analysis, обучение GitSCM, Docker и Compose, несколько SAST, SCA, DAST, Secret Detection и демо стенд, что бы потрогать руками эксплуатируемые уязвимости, подготовил разные уязвимые приложения, сделал скрипты для конвертации сработок от анализаторов в .xslx, .odt, .txt, SBOM, Orchestration, CI/CD, UML схемы процессов, etc.

Да, именно - это та самая практика, о которой ранее писал в тут и я прям хочу с тобой поделиться этим. Снова ты самым первым видишь релизы, которые я обкатываю в Бауманке, МФТИ и у себя в практике. Своим студентам и слушателям спасибо 😜


Подготовил также, на mkdocs material, удобный сайт с адаптивкой. Думаю тебе понравится, там User Friendly история, навигация и поиск по практическим материалам.

Intro

Это учебный репозиторий по прикладной безопасности приложений, в котором собраны лабораторные работы от базовых практик DevOps до AppSec. Во всех лабораторных, начиная с lab05 ты триажишь, разбираешься с уязвимостями и качаешь себя.

Курс ориентирован на инженеров, которые хотят научиться использовать git , CI/CD, контейнеризацию, сканеры уязвимостей, shell для сборок и натравливания на конкретные уязвимые приложения, а также сопутствующие сервисы в реальных мини‑проектах.


Структура

- lab01 — знакомство с базовыми инструментами и рабочим окружением, подготовка репозитория и базовой автоматизации
- lab02 - lab05  — мини‑проекты вокруг клиент–серверных приложений и контейнерной инфраструктуры, настройка CI/CD, работа с Docker и Compose
- lab06 – lab08  — практики аудита контейнеров, SAST/SCA‑сканирование, DAST и анализ отчётов с последующей агрегацией
- lab09 - оркестрация и Quality Gate, UMLи т.д.
– lab10  — проект по оценке рисков ИБ, интеграции результатов сканирования и оформлению отчётов


Дополнения

- приложение - описание команд, пакетов, софта по утилитам с линками на них
- cheatsheet по Docker, GitHub CLI, GitSCM, .gitignore, .dockerignore
- примеры нетиповых и тривиальных кейсов ИБ,
- описание лицензий ПО
- OWASP TOP 10 с основными материалами по нему и CI/CD Risks


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

Stay Tuned ;)

#appsec #devsecops #roadmap #specialty #toolchain #techsolution #gost #paper #course #reco #sast #sca #dast #sbom #containersecurity #secrets #riskanalys #techsolution
🔥142