В марте прошёл второй эпизод DevSecOps-митапа CyberCamp - и на этот раз организаторы не стали церемониться. В программу включили практические киберучения на платформе Jet CyberCamp: три задания, каждое из которых маскировало реальную производственную ловушку под учебную задачу. Участники разбирали не абстрактные кейсы, а сценарии, которые прямо сейчас встречаются в работе AppSec-специалистов.
Что проверяли и зачем это важно
Формат киберучений на таких митапах - не просто развлечение. Это тренажёр для специалистов, которые в рабочей жизни сталкиваются с нетривиальными конфигурациями безопасности. Каждое задание второго эпизода было выстроено вокруг реального сценария: авторы заложили ловушки, хорошо знакомые тем, кто работает с контейнерными средами и политиками доступа.
Одно из центральных заданий - разбор профиля AppArmor в кластере Kubernetes. Участникам предоставили намеренно сломанную конфигурацию и урезанный доступ: никакого exec в контейнер, никакого docker, только k9s и возможность управлять одним профилем. Всё как в реальной среде с политикой, близкой к zero-trust.
Где прятались ловушки
Под падал в CrashLoopBackOff. Лог указывал на Permission denied при выполнении команды rm. Казалось бы, путь к бинарнику прописан в профиле - но сервер не стартовал. Разгадка крылась в деталях образа.
Контейнер собран на Alpine Linux. В минималистичном дистрибутиве нет отдельного бинарника rm - вместо него симлинк на /bin/busybox. Профиль разрешал /usr/bin/rm, которого попросту не существовало. Исправление - одна строка: заменить правило на /bin/busybox ix. Просто, но поймать это без доступа к файловой системе контейнера - уже задача.
Второй флаг оказался тоньше. После исправления первой ошибки под снова падал - теперь из-за сбоя getaddrinfo. Сетевой стек Alpine при инициализации запрашивает DNS одновременно по IPv4 и IPv6, а профиль разрешал только inet. Без поддержки inet6 инициализация веб-сервера завершалась ошибкой. Участники, не знавшие этой особенности Alpine, теряли время на поиск несуществующего бага.
Почему это больше, чем учебные кейсы
Оба сценария - не синтетика. Ошибки с путями в Alpine-образах и неожиданное поведение сетевого стека при ограниченных AppArmor-политиках встречаются в продакшне регулярно. Особенно у тех команд, которые переносят конфигурации с Ubuntu-окружений в контейнеры на базе Alpine, не проверяя, где именно живут бинарники.
- Профиль AppArmor, написанный для одного дистрибутива, может молча ломать другой
- Alpine использует BusyBox вместо GNU-утилит - это меняет пути к большинству системных команд
- Сетевой стек Alpine требует явного разрешения IPv6, даже если приложение его не использует
- Ограниченный доступ к среде (без exec, без docker) - не баг задания, а намеренное воспроизведение реальных условий работы
Организаторы уже анонсировали следующий формат: 17 июля в Москве пройдёт первый опен-эйр-фестиваль «Лето в Киберкэмпе 2026» - с новыми учениями, докладами про ИИ и DFIR. Судя по тому, как авторы выстраивают задания, скучать участникам снова не придётся.