[CL-SEC-Q2] admin.users.routes: admin-secret step-up на money/destructive/bulk #792
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!792
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/claude-sec-q2-admin-users-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на 3 маршрута вapi/src/routes/admin.users.routes.ts:POST /users/:id/adjust-balance— напрямую мутируетuser.balance(money path);DELETE /users/:id— деструктивное удаление;POST /users/bulk— массовый lock/unlock/approve_kyc/reject_kyc (до 50 юзеров).Новый структурный тест
admin.users.routes.test.ts(обходrouter.stack) гарантирует наличие gate на этих маршрутах.Зачем
MEDIUM-finding квартального аудита (SEC-Q2-2026), категория A01 Broken Access Control. Эти маршруты были защищены только
adminApiKeyOrJwt(auth+role+2FA-enrollment) + rate-limit, но без step-up secret-фактора, который sibling money-роутеры (payments,erc3643,infra,synthetics,managed-invest,open-banking) уже требуют.admin.users.routesего даже не импортировал.Тот же класс, что и CRITICAL-фикс money-роутов в
admin.payments.routes(PR #781). Gate применяется per-router (opt-in), глобально на/adminего нет — поэтому пропуск был реальным.AUDIT: SEC-Q2-2026.
План тестирования
vitest run src/routes— 282/282.tsc --noEmitчисто;eslint0 ошибок.Где могу ошибаться
PATCH /users/:id(updateUser) — finding его не называл; updateUser может менять чувствительные поля, но расширение скоупа рискует сломать admin-UX. Если ревью считает нужным — добавлю./users/bulkтеперь требует секрет — если admin-фронт не пробрасываетx-admin-secretна bulk-операции, UX потребует verify-secret шага (как уже на payments).