概述
JumpServer存在一个未授权访问漏洞。具体来说,/api/v1/terminal/sessions/ API端点的权限控制存在逻辑错误,允许攻击者匿名访问。未经身份验证的远程攻击者可以利用此漏洞下载SSH日志,并可能借此远程窃取敏感信息。值得注意的是,存储在S3、OSS或其他云存储中的SSH会话不受此漏洞影响。
影响范围
|-----------------------|---------------|-----------|
| 组件 | 影响版本 | 安全版本 |
| JumpServer:JumpServer | 3.0.0 - 3.5.4 | >= 3.5.5 |
| JumpServer:JumpServer | 3.6.0 - 3.6.3 | >= 3.6.4 |


修复建议
- 尽快升级JumpServer至安全版本,即版本3.5.5或3.6.4及以上。
- 对于无法立即升级的环境,建议禁止访问~/session路径,以防止潜在的攻击。
实际影响
- 身份认证绕过:攻击者无需任何身份认证即可访问JumpServer的会话信息。
- 敏感数据窃取:攻击者可利用此漏洞访问会话信息,可能导致JumpServer中的敏感会话数据被窃取,例如用户数据、会话密钥等。
官方修复分析
根据JumpServer的GitHub提交0a58bba59cd275bab8e0ae58bf4b359fbc5eb74a,官方从代码中移除了permissions.BasePermission。
在Django框架中,permissions.BasePermission是一个基础权限类,用于定义特定的权限逻辑。它提供了一个方法供开发者覆盖,以确定请求是否有权执行某个操作。如果不正确使用或误配置,可能导致权限控制上的缺陷。JumpServer在此次修复中移除了对该类的引用,很可能是为了修复前述的未授权访问问题。