3.5 KiB
Admission Drift
В архиве admission_drift_case.zip находятся материалы инцидента с admission-контроллером ingress-nginx. Нужно восстановить последовательность событий от входящего AdmissionReview до чтения секрета. Флаг состоит из четырёх частей, которые находим по журналам.
Решение
Проверяем переходы по файлам архива.
| Артефакт | Что подтверждает |
|---|---|
network/admission_service_access.jsonl |
Источник запроса и review_uid |
admission/reviews/review-*.json |
Тело AdmissionReview |
ingress-nginx/controller.log |
Обработку запроса контроллером |
ingress-nginx/config_snapshots.tar |
Сгенерированный nginx.conf |
runtime/falco_events.jsonl |
Фактическое обращение к файлу |
rbac/secret_access.jsonl |
Успешное чтение секрета |
Начинаем с access log. Ищем POST, у которого source_category == "workload-pod" и apiserver_proxy == false. Запрос пришёл прямо от workload-пода, минуя API server. Из записи берём review_uid, начинающийся с 84f1d2, и путь review_file.
Открываем указанный JSON и сверяем request.uid. В аннотациях объекта находим validation-template: именно она запускает обработку шаблона. Тот же UID встречается в логе контроллера.
Для поиска снимка берём первые шесть символов UID, то есть 84f1d2. В ingress-nginx/config_snapshots.tar читаем соответствующий snapshots/review-84f1d2/nginx.conf. В конфиге есть путь вида /proc/<pid>/fd/<n> — обращение к файловому дескриптору процесса. Одного конфига мало, поэтому ищем в Falco событие с тем же review_uid и точно совпадающим fd.name. Из поля marker совпавшего события получаем procfd.
Переходим к журналу секретов. Выбираем запись с тем же UID, verb=get, resource=secrets, response_code=200. Хвост имени прочитанного секрета — 7c19.
Собираем нормализованные компоненты:
| Компонент | Значение |
|---|---|
| Тип потока | ad |
| Первые шесть символов UID | 84f1d2 |
| Маркер из runtime-события | procfd |
| Хвост имени секрета | 7c19 |
Соединяем их через _. Совпадение UID и пути дескриптора на промежуточных шагах подтверждает, что запрос, конфиг, runtime-событие и чтение секрета относятся к одному инциденту.
Флаг
caplag{ad_84f1d2_procfd_7c19}