管理员登录 IP 锁定会阻断已认证的 Cookie 会话和 API 令牌 #1

Closed
opened 2026-09-30 10:28:15 +08:00 by nixevol · 1 comment
Owner

严重级

high

分类

安全 / 可用性

现象

同一来源 IP 上,管理员密码登失败或带错误 API 令牌的请求达到锁定阈值后,该 IP 上已经登录成功的管理后台请求、以及合法 API 令牌请求一律返回 429,后台不可用。攻击者只需对管理接口狂刷错误 Bearer,即可把同 NAT / 同代理出口的管理员锁在门外。

路径

  • internal/admin/auth.go 第 46–50 行:所有需鉴权路由在鉴权前 Check(LockAdminIP),锁定则直接 429
  • internal/admin/auth.go 第 131–133 行:错误或停用的 API 令牌走 authFail → Fail(LockAdminIP)
  • internal/admin/login.go 第 25–30 行:登录入口本身已经单独检查锁定

文档条款

  • DEVELOPMENT 第 8 节:错误令牌按来源 IP 计入管理员登录锁定;网页 Cookie 会话默认 12 小时
  • PRD D18 / F02:端侧密码锁定只拦密码登录,不拦已持有的会话令牌重连
  • DEVELOPMENT 第 5 节锁定:锁定期拒绝的是未通过的密码尝试,不是已建立的会话

为何不是故意设计

DEVIATIONS 没有写「锁定后已登录会话一并拒绝」。登录失败计入锁定是对的,且 login.go 已在登录入口检查。auth() 再对所有已认证请求套同一把锁,把「防暴力登录」扩成「封整个管理面」,与端侧「锁定不拦令牌」也不一致。错误令牌计入失败次数可以保留,但不应用来切断有效 Cookie。

建议方向(不实现)

auth() 先完成 Cookie / 合法令牌校验;仅登录接口和「令牌校验失败」路径检查/累计 LockAdminIP。有效 Cookie 与有效 API 令牌在锁定期内应仍能调用管理接口。

## 严重级 high ## 分类 安全 / 可用性 ## 现象 同一来源 IP 上,管理员密码登失败或带错误 API 令牌的请求达到锁定阈值后,该 IP 上**已经登录成功**的管理后台请求、以及**合法** API 令牌请求一律返回 429,后台不可用。攻击者只需对管理接口狂刷错误 Bearer,即可把同 NAT / 同代理出口的管理员锁在门外。 ## 路径 - `internal/admin/auth.go` 第 46–50 行:所有需鉴权路由在鉴权前 `Check(LockAdminIP)`,锁定则直接 429 - `internal/admin/auth.go` 第 131–133 行:错误或停用的 API 令牌走 `authFail` → `Fail(LockAdminIP)` - `internal/admin/login.go` 第 25–30 行:登录入口本身已经单独检查锁定 ## 文档条款 - DEVELOPMENT 第 8 节:错误令牌按来源 IP 计入管理员登录锁定;网页 Cookie 会话默认 12 小时 - PRD D18 / F02:端侧密码锁定只拦密码登录,不拦已持有的会话令牌重连 - DEVELOPMENT 第 5 节锁定:锁定期拒绝的是未通过的密码尝试,不是已建立的会话 ## 为何不是故意设计 DEVIATIONS 没有写「锁定后已登录会话一并拒绝」。登录失败计入锁定是对的,且 `login.go` 已在登录入口检查。`auth()` 再对**所有**已认证请求套同一把锁,把「防暴力登录」扩成「封整个管理面」,与端侧「锁定不拦令牌」也不一致。错误令牌计入失败次数可以保留,但不应用来切断有效 Cookie。 ## 建议方向(不实现) `auth()` 先完成 Cookie / 合法令牌校验;仅登录接口和「令牌校验失败」路径检查/累计 `LockAdminIP`。有效 Cookie 与有效 API 令牌在锁定期内应仍能调用管理接口。
Author
Owner

已合入并推送 main 4059a1576bc97879b840ec5200defd80bc9eb3f0。
管理员 IP 锁定不再阻断已认证 Cookie 与合法 API 令牌;密码登录入口以及错误、停用令牌的锁定计数保留。

已合入并推送 main `4059a1576bc97879b840ec5200defd80bc9eb3f0`。 管理员 IP 锁定不再阻断已认证 Cookie 与合法 API 令牌;密码登录入口以及错误、停用令牌的锁定计数保留。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nixevol/NixMsg#1