首页 网络安全 正文
  • 本文约2408字,阅读需12分钟
  • 16
  • 0

JumpServer连接令牌泄漏漏洞CVE-2025-62712

摘要

栋科技漏洞库关注到 JumpServer 受影响版本中存在一个安全漏洞,该漏洞现在已经被追踪为CVE-2025-62712,漏洞CVSS 3.X评分9.6。

JumpServer是开源的运维安全审计系统(堡垒机),用于集中管理服务器、网络设备、数据库等IT资源访问,支持批量操作和自动化运维。‌

一、基本情况

JumpServer支持多种认证方式和权限配置,广泛应用于IT运维、系统管理以及云平台环境中,主要应用于企业内部资产的安全管理与审计。

JumpServer连接令牌泄漏漏洞CVE-2025-62712

JumpServer 通过集中管理和审计运维对服务器访问,提供统一访问控制、权限管理、会话录制等功能,确保敏感操作安全性与可追溯性。

栋科技漏洞库关注到 JumpServer 受影响版本中存在一个安全漏洞,该漏洞现在已经被追踪为CVE-2025-62712,漏洞CVSS 3.X评分9.6。

二、漏洞分析

CVE-2025-62712漏洞是存在于在JumpServer v3.10.20-lts及v4.10.11-lts之前的版本中,漏洞允许认证用户越权获取其他用户的连接令牌。

这是一个权限校验不足漏洞,源于其super-connection-token接口未进行严格的权限验证,可能导致敏感系统的未经授权访问和权限提升。

经过身份验证的非特权用户可以通过超级连接API端点(/api/v1/authentication/super-connection-token/)检索到其他用户的连接令牌。

当通过Web浏览器访问该接口时,它会返回所有用户(包括管理员)创建的连接令牌,而不是将结果限制为请求者本人拥有或授权的令牌。

这就意味着,经过认证的非特权用户可以直接检索其他用户所属的连接令牌,通过获取这些令牌冒充原令牌所有者,向受管资产发起连接。

攻击者可以直接冒充管理员身份连接至资产,访问和管理敏感资产,执行恶意操作,导致权限提升和未授权访问。

1、漏洞代码

@@ -362,6 +362,7 @@ def perform_create(self, serializer):
        self.validate_serializer(serializer)
        return super().perform_create(serializer)

    def _insert_connect_options(self, data, user):
        connect_options = data.pop('connect_options', {})
        default_name_opts = {
@@ -564,15 +565,22 @@ class SuperConnectionTokenViewSet(ConnectionTokenViewSet):
    rbac_perms = {
        'create': 'authentication.add_superconnectiontoken',
        'renewal': 'authentication.add_superconnectiontoken',
        'list': 'authentication.view_superconnectiontoken',
        'check': 'authentication.view_superconnectiontoken',
        'retrieve': 'authentication.view_superconnectiontoken',
        'get_secret_detail': 'authentication.view_superconnectiontokensecret',
        'get_applet_info': 'authentication.view_superconnectiontoken',
        'release_applet_account': 'authentication.view_superconnectiontoken',
        'get_virtual_app_info': 'authentication.view_superconnectiontoken',
    }

    def get_queryset(self):
        return ConnectionToken.objects.all()
        return ConnectionToken.objects.none()

    def get_object(self):
        pk = self.kwargs.get(self.lookup_field)
        token = get_object_or_404(ConnectionToken, pk=pk)
        return token

    def get_user(self, serializer):
        return serializer.validated_data.get('user')

2、潜在漏洞点

get_queryset 方法被修改为返回 ConnectionToken.objects.none(),这可能会影响数据的查询和访问。

新增的 get_object 方法通过 pk 获取 ConnectionToken 对象,如果 pk 不正确或不存在,会返回 404 错误。需要确保 pk 的验证和安全性。

这些更改可能会影响到系统的权限管理和数据访问控制,需要注意潜在的安全风险。

3、权宜之计

如果无法通过更新版本修复,通过修改Nginx配置以阻止超级连接API的GET请求:

location = /api/v1/authentication/super-connection-token/ {
    if ($request_method = GET) { return 405; }  # Block GET explicitly
    proxy_pass http://jumpserver_backend;
}
location = /api/v1/resources/super-connection-tokens/ {
    if ($request_method = GET) { return 405; }  # Block GET explicitly
    proxy_pass http://jumpserver_backend;
}

三、影响范围

JumpServer < v3.10.19-lts

JumpServer < v4.10.10-lts

四、修复建议

JumpServer >= v3.10.20-lts

JumpServer >= v4.10.11-lts

五、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接