关键漏洞信息 漏洞概述 漏洞名称: Authlib: Denial of Service via Oversized JOSE Segments CVE ID: CVE-2025-81920 严重性: 高 (7.5/10) CVSS v3 基本指标: - 攻击向量: 网络 - 攻击复杂度: 低 - 所需权限: 无 - 用户交互: 无 - 范围: 不变 - 机密性影响: 无 - 完整性影响: 无 - 可用性影响: 高 影响范围 受影响版本: Authlib <= 1.6.4 修复版本: Authlib 1.6.5 漏洞描述 Authlib 的 JOSE 实现接受无限大的 JWS/JWT 头和签名段。远程攻击者可以构造一个 base64url 编码的头或签名跨越数百兆字节的令牌。在验证过程中,Authlib 解码并解析完整内容,导致 CPU 和内存消耗达到主机级别,从而引发拒绝服务。 影响 攻击向量: 未认证的网络攻击者提交恶意 JWS/JWT。 效果: base64 解码 + JSON/crypto 处理巨大的填充器消耗大量 RAM,单个请求可以耗尽服务容量。 观察行为: 在测试主机上,旧代码验证了 500MB 头部,消耗约 4GB RSS 和 9s CPU,在失败前。 严重性: 高。CVSS v3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (7.5)。 修复措施 应用上游补丁,引入解码大小限制: - - 强制执行 Authlib/jose/util.extract_segment 和 _extract_signature 中的限制。 立即部署修补后的版本。 为深度防御,代理或 WAF 层拒绝超过几千字节的 JWS/JWT 输入,并限制验证端点的速率。 权宜之计(临时) 在将令牌传递给 Authlib 之前强制输入大小限制。 使用应用程序级限流减少放大风险。 参考资料 示例脚本: jws_segment_dos_demo.py 测试: authlib/tests/dos/test_jose_dos.py OWASP JWT Cheat Sheet (DoS 指南)