[CL-SEC-Q2] admin.agents.routes: admin-secret step-up на agent-control мутации #794
No reviewers
Labels
No labels
ci-failing
duplicate
needs-rebase
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
europa-tech-srl/europatech!794
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/claude-sec-q2-admin-agents-secret-gate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
Добавлен step-up admin-secret-фактор
requireAdminSecretVerifiedна 4 privileged agent-control маршрута вapi/src/routes/admin.agents.routes.ts:PATCH /agents/:id(меняет trustScore / monthlyBudgetUsd / isActive);POST /agents/:id/pause,/resume,/wakeup(триггерят Paperclip-control).Новый структурный тест
admin.agents.routes.test.ts(обходrouter.stack) гарантирует gate. Вadmin.agents.sync.test.tsдобавлен passthrough-mock gate — его UUID-валидационные тесты монтируют реальный роутер и должны достигать хендлера (auth-присутствие покрывает новый dedicated тест).Зачем
MEDIUM-finding аудита (SEC-Q2-2026), A01 Broken Access Control. Эти маршруты были защищены только
adminApiKeyOrJwt+ rate-limit, без step-up секрета, который sibling money/admin-роутеры уже требуют (gate per-router opt-in, глобально на/adminего нет).AUDIT: SEC-Q2-2026.
Residual (НЕ в этом PR — cross-service)
Paperclip-вызовы доверяют статичному заголовку
x-instance-admin: true. Замена на shared secret (PAPERCLIP_ADMIN_SECRET) требует lock-step изменения на стороне Paperclip-runtime (отдельный repo), который будет его валидировать — иначе либо сломается agent-control, либо мы шлём заголовок, который Paperclip игнорирует (нулевой выигрыш). Exposure ограничен bind Paperclip на 127.0.0.1. Задокументировано комментарием в коде, вынесено в координированный api+Paperclip PR.План тестирования
vitest run src/routes+ agents service — 318/318.admin.agents.sync.test.tsUUID-тесты снова зелёные после passthrough-mock.tsc --noEmitчисто;eslint0 ошибок; pre-push 189 integration + build green.Где могу ошибаться
pause/resume/wakeupтеперь требуют секрет — если admin-фронт не шлётx-admin-secret, появится verify-secret шаг.