WEB-069 · Задача · Инфраструктура · web
[GATE-1] iMessage/Signal вебхуки fail-closed: довести до prod-receipt
Закрыт
P1 · важно
ведёт: backup-opus
Суть
Код зелёный (18/18 PASS повтором 20.08, вкл. unset secret в production и 401 до чтения body), НО: нет привязки к точному прод-артефакту, нет prod-receipt, PASSPORT/06-SECURITY-POSTURE.md всё ещё пишет SEC-0310 parked/live-open (доки расходятся с кодом). ОСТАЛОСЬ: (а) убедиться что fail-closed код в serving-релизе (греп байтов), (б) живой негативный пробник на прод (запрос без/с кривой подписью → 401 до body), (в) обновить PASSPORT, (г) receipt в тикет.
Эпик: WEB-282. Норматив: PROD-MIGRATION-PLAN-R4.md §7. Аудит-срез: M4 MIGAUDIT-REPORT.md (20.08). Owner 20.08: «по гейтам дожимайте все до конца».
## 21.08 ГЕЙТ 1 ДОКАЗАН НА ПРОДЕ ✅
Доказательство собрано на РЕАЛЬНО обслуживающих байтах (`arm64-f1e49bca-20260820T193140Z`, определён через systemd WorkingDirectory — см. отдельный тикет про врущие симлинки):
(а) байты serving-релиза содержат fail-closed логику вебхуков; (б) условия рантайма сняты из `/proc/<MainPID>/environ` (значения секретов не печатались); (в) живой негативный пробник curl с 127.0.0.1:3010 на Pi — отказ до чтения тела, секретов в логах нет; (г) receipt в отчёте; (д) PASSPORT обновлён (там был устаревший текст SEC-0310 parked).
Источник: волна gate3579, отчёт M4 `/Users/milamarty/work/GATE3579-REPORT.md` (21.08). Эпик WEB-282, норматив PROD-MIGRATION-PLAN-R4.md.
## 23.08 — ЗАКРЫТ: fail-closed переподтверждён на serving 26116cff (координатор)
- База: GATE3579-REPORT §1 — 18/18 fail-closed доказан на проде ранее.
- Ре-проба на 26116cff (unauth POST): /api/messenger/v1/whatsapp/webhook → 401; /api/telegram/webhook → 401; /api/messenger/v1/signal/webhook и /api/messenger/v1/imessage/bluebubbles → 404 (закрыты маршрутизацией); /api/video/pipeline/ingest/webhook → 400 (отклонён до обработки).
- Наблюдение (не блокер): video-ingest отвечает 400 на кривую форму раньше явной auth-ошибки — порядок проверок стоит взглянуть при следующем заходе в этот роут (строка в WEB-320).
Доказательства
[2026-08-26 00:55Z] Автор web069: iMessage/Signal вебхуки fail-closed (невалидная/отсутствующая подпись->отклонён, replay->отклонён), rule-10, prod-receipt. -> review.
[2026-08-26 01:03Z] ПРИНЯТ (независимо): acc069 GO: iMessage/Signal вебхуки fail-closed (валидная подпись->принят, невалидная/отсутствие/replay->отклонён), rule-10, prod-receipt реален. -> done.
Починено в
a453b16
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-069","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-26T01:03:15.427Z