Fit2Cloud 开发的开源特权访问管理(PAM)工具 JumpServer 中发现了一系列严重漏洞,引发了重大安全担忧。
JumpServer 作为内部网络的堡垒主机,通过一个用户友好的 Web 界面,为通过 SSH、RDP、数据库和 FTP 隧道访问内部资源提供了一个集中点。
已发现的漏洞可能使未经身份验证的攻击者绕过身份验证,并完全控制 JumpServer 基础设施。
Sonar研究人员确定了多个身份验证绕过漏洞(CVE-2023-43650、CVE-2023-43652、CVE-2023-42818、CVE-2023-46123),攻击者可利用这些漏洞冒充合法用户。
JumpServer 的集中化特性使得这些漏洞尤为危险,因为攻陷该系统可能使攻击者得以访问一个组织的整个内部网络。
这些漏洞源于架构错误,特别是微服务隔离不足。
JumpServer 的架构由几个组件组成,包括一个核心 API(用 Python – Django 编写)、一个数据库、Koko(用 Go 开发,用于隧道功能)、Celery(任务管理器)以及一个作为基于 Web 连接入口点的 Web 代理。
一个关键问题是,公钥身份验证系统缺乏对请求是否来自授权的 Koko 服务的验证。如在有漏洞的代码中所见:
def authenticate(self, request, username=None, public_key=None, **kwargs):
if not public_key:
return None
if username is None:
username = kwargs.get(UserModel.USERNAME_FIELD)
try:
user = UserModel._default_manager.get_by_natural_key(username)
except UserModel.DoesNotExist:
return None
else:
if user.check_public_key(public_key) and \
self.user_can_authenticate(user):
return user
这使得攻击者可以直接通过 HTTP 接口执行相同的请求,在无需密钥验证的情况下有效地冒充 Koko 容器。
即使启用了多因素身份验证(MFA)的账户也存在漏洞,因为在 SSH 环境中双因素身份验证的实施存在缺陷,攻击者可以操纵 “remote_addr” 参数来绕过速率限制机制。
JumpServer 3.10.12 和 4.0.0 版本已修复这些漏洞。使用 JumpServer 的组织应立即更新到这些已打补丁的版本。
修复措施包括将公钥身份验证 API 与令牌生成分离,引入身份验证状态跟踪机制,并对 “remote_addr” 参数实施基于签名的验证系统。
这些漏洞凸显了安全编码实践、全面测试以及持续安全评估的重要性,尤其是在作为敏感资源网关的系统中。
发表评论
您还未登录,请先登录。
登录