CVE-2019-16097 Harbor权限提升漏洞分析

 ang010ela 嘶吼专业版 

CVE-2019-16097 Harbor权限提升漏洞分析

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

Unit 42安全研究人员Aviv Sasson在Harbor中发现了一个严重漏洞,***者利用该漏洞可以通过发送恶意请求来控制Harbor注册表。Unit 42研究人员发现有超过1300个使用有漏洞的默认配置的Harbor Registry服务器可以通过互联网访问。

CVE-2019-16097 Harbor权限提升漏洞分析背景

研究人员在Harbor项目中发现了一个重要的权限提升漏洞,***者利用该漏洞可以在默认配置下获取admin权限。该漏洞于9月10日公布,CVE编号为 CVE-2019-16097。

Harbor项目在过去4年内的知名度和流行度不断攀升,并于去年11月成为CNCF incubating project (CNCF孵化项目)。Harbor项目的赞助商和使用企业包括:

CVE-2019-16097 Harbor权限提升漏洞分析

图1. Harbor项目的赞助商和使用企业

CVE-2019-16097 Harbor权限提升漏洞分析漏洞影响

该漏洞的影响非常严重,因为在获取admin权限后,可以初始化许多***向量。***者可以下载和查看所有的私有项目,可以删除registry上的镜像,甚至可以替换镜像来污染registry。***者可以创建新的用户,并将它设置为admin。之后,***者可以通过Docker命令行工具用新的凭证连接Harbor registry,并替换当前的镜像。恶意镜像可以说恶意软件、加密货币挖矿机等。

POC视频如下:

https://www.biantube.com/watch/LBgIKqdfF1k

CVE-2019-16097 Harbor权限提升漏洞分析漏洞分析

首先分析User结构:CVE-2019-16097 Harbor权限提升漏洞分析

图2. Harbor源代码中的User结构

研究人员关注的目标参数是HasAdminRole,该参数的目的是表明用户是否admin。如果可以修改为True,***的目的就达到了。

那么如何实现呢?首先分析API调用,如果有人尝试访问/api/users,那么就会发现一些有趣的调用:

CVE-2019-16097 Harbor权限提升漏洞分析

图3. /api/users

如果用户想要发送POST请求,就可以到达负责新用户注册的代码段。CVE-2019-16097 Harbor权限提升漏洞分析

 图4. POST请求处理逻辑

漏洞位于user.go:317中:

if err := ua.DecodeJSONReq(&user); err != nil

在该行代码中,我们可以从POST请求中获取数据,然后解码为用户对象。

正常的请求payload如下所示:

{“username”:”test”,”email”:”test123@gmai.com”,”realname”:”no name”,”password”:”Password1\u0021″,”comment”:null}

问题在于***者可以发送一个请求,并加入参数has_admin_role。如果发送“had_admin_role” = “True”的请求,就可以创建为admin的用户。CVE-2019-16097 Harbor权限提升漏洞分析

漏洞利用

研究人员写了一个简单的python脚本,用来发送POST请求到/api/users来创建权限为admin的新用户,需要在request body中将参数has_admin_role设置为True。运行脚本后,唯一需要做的是在浏览器中打开Harbor,并用新创建的用户登入。

CVE-2019-16097 Harbor权限提升漏洞分析解决方案

Harbor团队发布了解决该漏洞的补丁,9月18日发布的Harbor versions 1.7.6和1.8.3版本中都进行了安全更新。发布注释中说是通过禁止注册时创建admin用户来解决该问题。

开发者加入了一个检查过程来防止非管理员用户创建新的admin用户。该漏洞存在于1.70-1.8.2版本中,因此研究人员建议用户尽快更新到最新版本。

参考来源:https://unit42.paloaltonetworks.com/critical-vulnerability-in-harbor-enables-privilege-escalation-from-zero-to-admin-cve-2019-16097/CVE-2019-16097 Harbor权限提升漏洞分析


上一篇:rancher + harbor + jenkins 自动化部署


下一篇:docker的企业级仓库-harbor