bladex4.x版本的refresh_token是滑动续期行为,有安全风险

Blade 未结 1 15
qdieslab
qdieslab 剑圣 2026-07-03 14:40

一、该问题的重现步骤是什么?

1. 正常机制下,refresh_token 7 天必过期,即便被偷,7 天后自动失效,危害有上限。

2. 4.x版本的方案让 refresh_token 只要页面开着就永不过期。一旦攻击者通过 XSS 偷到 refresh_token(auth.js 的 Cookies.set 无任何防护,JS 可读),他可以自己搭个定时器永久冒充用户,永不过期。

3. 更关键:BladeX 当前没有"会话绝对超时上限"。OAuth2Util.createRefreshToken 每次只设 exp = now + 有效期,没有保留"会话首次创建时间"做总寿命校验。所以一旦失窃,理论上真的永久有效。


二、你期待的结果是什么?实际看到的又是什么?

bladex4以前的refresh_token是绝对过期,失窃最多活 N 天,新版是refresh_token 滑动续期 + 无绝对超时上限

refresh_token 失窃后,攻击者自建定时器持续刷新 → 永久有效,且系统无任何机制强制终止


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 刷新令牌的问题我们后续优化下,加一个绝对过期时间。

    但是你指出的令牌泄露风险,几乎不可实现,或者你有好的办法可重现注入获取令牌的,我们可提供个测试网站来看看是否可攻击登录到系统并且获取到管理员令牌。

    0 讨论(0)
提交回复