一、概述
Harbor是由VMware中国团队在2016年开发的一款开源的私有容器镜像仓库,经过多年的市场磨合,目前已被众多的企业、互联网公司和初创公司在生产环境中使用,也被绝大多数开发人员视为首选使用的容器镜像仓库之一。除提供镜像存储功能外,Harbor还附有镜像扫描、合规性检查、身份管理、访问控制等安全机制。Harbor目前由云原生计算基金会(Cloud Native Computing Foundation CNCF)托管,该项目已于2020年6月顺利毕业,成为第11个在CNCF毕业的项目。
本篇为云原生服务测绘系列的第二篇,主要从资产发现、资产漏洞、资产脆弱性发现三个维度分析了Harbor所存在的风险,最后笔者针对Harbor提供了一些安全建议,希望各位读者通过阅读此文可对Harbor服务风险暴露有更清晰的认识。
注:文中统计的测绘数据为近一个月的国内数据,相关技术仅供研究交流,请勿应用于未授权的渗透测试。
二、Harbor资产风险测绘分析
2.1 Harbor资产暴露情况分析
借助测绘数据,我们可以了解到国内Harbor资产地区和版本的分布情况,笔者也以这两个维度为各位读者进行介绍。
2.1.1 Harbor资产地区分布
笔者从测绘数据中得到Harbor相关资产共2557条数据,地区分布如图1所示(资产数较少的由于篇幅原因不在图中显示):
以上Harbor资产暴露的端口情况笔者进行了统计,如图2所示(资产端口数暴露较少的由于篇幅原因不在图中显示):
以上数据我们可以得出以下信息:
- 国内暴露的Harbor资产约百分之73%左右的数据来源于北京市、广东省、浙江省、上海市,其中北京市暴露707条位居第一
- 国内暴露的Harbor资产使用端口主要分布在443、5000、8443、8080端口,其中443端口数量1573个位居第一
2.1.2 Harbor资产版本分布
借助测绘数据,笔者对国内暴露的Harbor资产版本进行了分析,其分布情况如图3所示(资产版本数较少的由于篇幅原因不在图中显示):
经笔者统计,现有国内暴露的Harbor资产中,约45%的资产未获取到具体版本,剩余资产中,绝大多数资产暴露的版本分布在2.0.0、1.10.1、2.3.1、2.2.1、2.2.0、2.1.3、2.3.2之间,值得注意的是,1.10.1版本是2020年2月发布的版本,为相对早期的版本,但在公网上暴露的资产数量却不少。
2.2 Harbor漏洞介绍
漏洞介绍
Harbor自2016年3月发布第一个release版本至今已有6年时间,在这期间一共曝出11个漏洞[1],从CVE编号信息我们可以看出漏洞披露时间主要在2019和2020年,根据CVSS 2.0标准,其中无高危漏洞,中危漏洞10个,低危漏洞1个。中危漏洞类型以权限提升、枚举、SQL注入、CSRF/SSRF等为主。笔者也针对这些漏洞进行了信息汇总,其中包括公开暴露的PoC及ExP信息,如下表所示:
CVE编号 | 类型 | 描述 | 影响版本 | 风险级别 | CVSS 2.0 | 是否存在PoC | 是否存在EXP |
CVE-2019-16097 | 权限提升 | 攻击者可以利用该漏洞向Harbor发送恶意请求以接管Harbor仓库、获取admin权限,从而可以下载和查看所有私有项目、删除镜像、创建新用户并设置admin权限,甚至替换镜像来污染仓库 | 1.7.0 ~1.7.5,1.8.0 ~1.8.2 | 中危 | 4.0 | 是,PoC链接[2] | 是,Exp链接[2] |
CVE-2019-16919 | 权限提升 | 该漏洞可以允许项目管理员创建一个机器账户,并对其无访问权或控制权的项目赋予push/pull的权限
|
1.8.0 ~ 1.8.3,1.9.0 | 中危 | 5.0 | 否 | 否 |
CVE-2019-3990 | 用户名枚举 | 攻击者可通过Harbor API(“api/users/search”)的逻辑设计漏洞,绕过管理员限制,进行用户名枚举操作
|
1.7.*, 1.8.1.9.0, 1.9.1 | 中危 | 4.0 | 是,PoC链接[3] | 是,Exp链接[3] |
CVE-2019-19025 | CSRF | 由于Harbor的Web API接口未增加针对CSRF的防护机制,因此攻击者可以诱导认证用户访问第三方不安全的网站,进而导致攻击者使用仿冒身份在平台上执行恶意操作
|
1.7.*, 1.8.*, 1.9.* | 中危 | 6.8 | 否 | 否 |
CVE-2019-19026 | SQL注入 | Harbor API的quotas部分存在SQL注入漏洞,经身份验证的管理员可通过GET参数“sort”发送恶意的SQL有效负载,进而允许从数据库中提取敏感信息
|
1.7.*, 1.8.*, 1.9.* | 中危 | 4.0 | 否 | 否 |
CVE-2019-19029 | SQL注入 | Harbor中具有项目管理权限的用户可以利用SQL注入漏洞从底层数据库读取敏感数据或进行权限提升
|
1.7.*, 1.8.*, 1.9.* | 中危 | 6.5 | 否 | 否 |
CVE-2020-13788 | SSRF | Harbor的“Test Endpoint”API在设计上存在脆弱性,可能会导致攻击者使用此API对Harbor服务器内部网络主机上开放的TCP端口进行扫描,从而使攻击者能够对内网资产进行探测
|
1.8.*, 1.9.*, 2.0.* | 中危 | 4.0 | 是,PoC链接[4](视频) | 否 |
CVE-2020-13794 | 用户名枚举 | Harbor的”/users” API设计上存在用户名枚举漏洞,该API本应仅限于管理员使用,但攻击者可以绕过此限制,并通过搜索API获取信息。针对普通用户,可通过“/api/users/search”API发送带有”username“和“_”的GET请求列出所有用户名及ID信息
|
1.9.*, 1.10.*, 2.0.* | 中危 | 4.0 | 是,PoC链接[5] | 是,Exp链接[5] |
CVE-2020-29662 | 未授权访问 | Harbor的v2 API暴露在未经身份验证的URL上,导致非管理员身份用户进行访问的风险
|
2.0.*, 2.1.* | 中危 | 5.0 | 是,PoC链接[6] | 否 |
CVE-2019-19023 | 权限提升 | 由于Harbor没有对修改电子邮件地址的API请求执行访问控制,所以普通用户能够调用该API修改特定用户的电子邮件地址以获得管理员权限,并且能够重置电子邮件地址和密码,并获得对特定用户的访问权限。
|
1.7.*, 1.8.*, 1.9.* | 中危 | 6.5 | 否 | 否 |
CVE-2019-19030 | 枚举 | 该漏洞将导致未认证的攻击者可以利用Harbor API对Harbor实例进行未经认证的调用,并根据响应中的http状态码去区分存在哪些资源,不存在哪些资源,该调用可能是通过一个wordlist或一个序列列举实现。
|
1.7.*, 1.8.*, 1.9.*, 2.0.* | 暂无 (Harbor github安全建议给出低风险) | 暂无, | 是,PoC链接[7] | 否 |
2.3 Harbor资产脆弱暴露情况分析
借助测绘数据,笔者从Harbor漏洞维度,统计了现有暴露资产的漏洞分布情况,如图4所示:
可以看出,在国内互联网暴露的2557个Harbor资产中,有389个资产被曝出含有CVE-2020-13794漏洞(用户名枚举),319个资产被曝出含有CVE-2020-29662漏洞(未授权访问), 179个资产被曝出含有CVE-2019-19030漏洞(枚举),总和约占所有资产数的35%,其中每个资产可能命中多条CVE。从侧面也反映出这三个CVE漏洞的影响面较大。通过前面的Harbor资产漏洞介绍,我们可以进一步了解这三个漏洞,此处不再赘述。
此外,笔者还统计了Harbor漏洞在现有已知版本资产中(数量1315)的影响面,具体见如下表格:
CVE ID | 影响资产数 | 影响面 |
CVE-2019-3990 | 67 | 5% |
CVE-2019-16097 | 68 | 5% |
CVE-2019-19023 | 67 | 5% |
CVE-2019-19025 | 67 | 5% |
CVE-2019-19026 | 67 | 5% |
CVE-2019-19029 | 67 | 5% |
CVE-2019-19030 | 179 | 13% |
CVE-2020-13788 | 69 | 5% |
CVE-2020-13794 | 389 | 29% |
CVE-2020-29662 | 319 | 23% |
2.4 安全建议
- 根据官方补丁版本及时对Harbor进行更新
- 根据官方提供的缓解措施进行临时缓解,Harbor相关的漏洞缓解措施可参考官方Github的Security advisories版面[1]
四、总结
Harbor作为企业级的容器镜像仓库,在云原生环境下集成了容器镜像存储、扫描、标识等能力,成为构建云原生基础设施中必不可少的一环。近年来,凭借着Harbor广泛的应用与大规模落地,个人用户和企业纷纷将其部署至云上,在享受着其带来操作便利性的同时也引入了一定的风险。本文从测绘角度出发,用真实数据为各位读者展示了目前国内暴露的Harbor资产及其风险,下一篇笔者将继续针对云原生环境下的其它组件进行相应的测绘风险分析,欢迎各位读者持续关注,若有任何问题欢迎提出,互相交流学习。
五、参考文献
[1] https://github.com/goharbor/harbor/security/advisories?page=1
[2] CVE-2019-16097 PoC和ExP参考 https://github.com/goharbor/harbor/security/advisories?page=1
[3] CVE-2019-3990 PoC和ExP 参考 https://github.com/goharbor/harbor/security/advisories/GHSA-6qj9-33j4-rvhg
[4] CVE-2020-13788 PoC链接 https://www.youtube.com/watch?v=v8Isqy4yR3Q
[5] CVE-2020-13794 PoC和ExP 参考 https://github.com/goharbor/harbor/security/advisories/GHSA-q9p8-33wc-h432
[6] CVE-2020-29662 PoC参考 https://github.com/goharbor/harbor/security/advisories/GHSA-38r5-34mr-mvm7
[7] CVE-2019-19030 PoC参考 https://github.com/goharbor/harbor/security/advisories/GHSA-q9x4-q76f-5h5j
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。