AC hunt-forgot-password
Поиск уязвимостей в аутентификации при восстановлении забытого пароля / учетной записи — 5 различных шаблонов: (1) перечисление имен пользователей через разные ответы для действительного и недействительного адреса электронной почты, (2) токен сброса, непосредственно раскрытый в теле ответа API, (3) токен сброса, не аннулированный после использования (повторное использование), (4) ссылка на сброс пароля работает с другого IP/браузера (без привязки), (5) отсутствие ограничения скорости для конечной точки запроса сброса. Это отдельные примитивы нарушенной аутентификации в потоке восстановления — отличные от отравления заголовка хоста в письме для сброса (hunt-host-header) и полной цепочки захвата учетной записи (ATO) (hunt-ato рассматривает сброс пароля как путь к ATO; докажите примитив здесь, свяжите его там). Обнаружение: отследите полный поток забытого пароля от запроса до токена до использования; проверьте различия в ответах между действительными/недействительными адресами электронной почты; протестируйте повторное использование токена после потребления. Средний и высокий уровень (перечисление=средний, повторное использование токена=высокий, захват учетной записи=критический при связывании с известным email).
машинный переводПоказать оригиналСкрыть оригинал«Hunt Forgot Password / Account Recovery Authentication Flaws — 5 disti…»
Hunt Forgot Password / Account Recovery Authentication Flaws — 5 distinct patterns: (1) username enumeration via different responses for valid vs invalid email, (2) reset token exposed directly in the API response body, (3) reset token not invalidated after use (replay), (4) password reset link works from a different IP/browser (no binding), (5) no rate limit on the reset request endpoint. These are the standalone recovery-flow broken-auth primitives — distinct from reset-email host-header poisoning (hunt-host-header) and the full ATO chain (hunt-ato owns password-reset as an ATO path; prove the primitive here, chain it there). Detection: trace the full forgot-password flow from request to token to use; check response diffs between valid/invalid emails; test token replay after consumption. Medium to High (enumeration=Medium, token-reuse=High, account-takeover=Critical when chained to known-email).
Поиск уязвимостей в аутентификации при восстановлении забытого пароля / учетной записи — 5 различных шаблонов: (1) перечисление имен пользователей через…
Как процесс C 59/100 · Есть пробелы — слабые места: результат и критерий готовности, когда включается, входы и предусловия
Как улучшить
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 0
✓ Критических и высоких находок нет
Просканировано файлов: 1. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- заметка
frontmatter-keyнеизвестное поле фронтматтера "sources" - заметка
frontmatter-keyнеизвестное поле фронтматтера "report_count"
Процессный рейтинг: все десять параметров 59/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 55Ошибки и развилки. Развилок: 1
- 100Инструменты и файлы. Внешние инструменты не нужны
- 100Шаги. Шагов: 18
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 1184 токенов
- 100Повторный запуск. Изменяющих операций нет
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Длина description 910: рекомендуется 120–800 символов
- +3Формат ответа не описан: модель каждый раз решает сама
- +4Нет примеров входа/выхода
- +1Лицензия не указана
- +2Инструкции на одном языке
- +4Структура: 8 заголовков
- +3Пошаговые инструкции: 18 пунктов
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 75.