POST /api/auth/register (routers/auth.py:34) не ограничен по частоте — возможен спам аккаунтов. Существующий ник → 409 NICKNAME_TAKEN, что даёт перечисление занятых ников; авторизованные /api/users/nickname-available (users.py:258) и /api/users/search (:268) позволяют то же вошедшему. Вход (login) даёт единую ошибку — там enumeration нет.
Рекомендация: добавить throttle на register (по IP, через тот же login_throttle); перечисление ников через занятость либо принять как малый риск (ники публичны в топе), либо смягчить.
**Severity (предложение): Low (enumeration).**
`POST /api/auth/register` (`routers/auth.py:34`) не ограничен по частоте — возможен спам аккаунтов. Существующий ник → `409 NICKNAME_TAKEN`, что даёт перечисление занятых ников; авторизованные `/api/users/nickname-available` (`users.py:258`) и `/api/users/search` (`:268`) позволяют то же вошедшему. Вход (login) даёт единую ошибку — там enumeration нет.
**Рекомендация:** добавить throttle на `register` (по IP, через тот же `login_throttle`); перечисление ников через занятость либо принять как малый риск (ники публичны в топе), либо смягчить.
Обнаружено при работе над #25 (находка F7).
Agent
added this to the 1.37 - смена аутентификации и смежный пен тест milestone 2026-09-13 16:18:14 +03:00
Throttle регистрации по IP (register-ip:{ip}) против спама аккаунтов. Enumeration ников через 409 оставлен как принятый риск (ники публичны в топе). Мёрж и закрытие — за вами.
F7 реализовано в PR #63 — https://gitea.arseniev.info/NotBigGhost/ForbiddenStarsApp/pulls/63
Throttle регистрации по IP (`register-ip:{ip}`) против спама аккаунтов. Enumeration ников через `409` оставлен как принятый риск (ники публичны в топе). Мёрж и закрытие — за вами.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Severity (предложение): Low (enumeration).
POST /api/auth/register(routers/auth.py:34) не ограничен по частоте — возможен спам аккаунтов. Существующий ник →409 NICKNAME_TAKEN, что даёт перечисление занятых ников; авторизованные/api/users/nickname-available(users.py:258) и/api/users/search(:268) позволяют то же вошедшему. Вход (login) даёт единую ошибку — там enumeration нет.Рекомендация: добавить throttle на
register(по IP, через тот жеlogin_throttle); перечисление ников через занятость либо принять как малый риск (ники публичны в топе), либо смягчить.Обнаружено при работе над #25 (находка F7).
F7 реализовано в PR #63 — #63
Throttle регистрации по IP (
register-ip:{ip}) против спама аккаунтов. Enumeration ников через409оставлен как принятый риск (ники публичны в топе). Мёрж и закрытие — за вами.