Cache driver GetBlob() allows read access to any blob without access control check
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Security bypass
- Confidentiality · integrity · availability
- Low · None · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-639.
Summary
zot is an OCI image registry. Prior to 2.1.0, the cache driver `GetBlob()` allows read access to any blob without access control check. If a Zot `accessControl` policy allows users read access to some repositories but restricts read access to other repositories and `dedupe` is enabled (it is enabled by default), then an attacker who knows the name of an image and the digest of a blob (that they do not have read access to), they may maliciously read it via a second repository they do have read access to. This attack is possible because [`ImageStore.CheckBlob()` calls `checkCacheBlob()`](https://github.com/project-zot/zot/blob/v2.1.0-rc2/pkg/storage/imagestore/imagestore.go#L1158-L1159) to find the blob a global cache by searching for the digest. If it is found, it is copied to the user requested repository with `copyBlob()`. The attack may be mitigated by configuring "dedupe": false in the "storage" settings. The vulnerability is fixed in 2.1.0.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| project-zot | zot | before 2.1.0 | 2.1.0 | Patch available | CNA |
| — | zotregistry.io/zot (Go) | before 2.1.0 | 2.1.0 | Patch available | GHSA-55r9-5mx9-qq7r |
| — | zotregistry.dev/zot (Go) | before 2.1.0 | 2.1.0 | Patch available | GHSA-55r9-5mx9-qq7r |
- zot Vendorproject-zot Affected before 2.1.0 Fixed in 2.1.0 Patch available CNA
- zotregistry.io/zot (Go) Vendor— Affected before 2.1.0 Fixed in 2.1.0 Patch available GHSA-55r9-5mx9-qq7r
- zotregistry.dev/zot (Go) Vendor— Affected before 2.1.0 Fixed in 2.1.0 Patch available GHSA-55r9-5mx9-qq7r
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:zotregistry:zot:*:*:*:*:*:*:*:* | before 2.1.0 | Vulnerable | project-zot |
- cpe:2.3:a:zotregistry:zot:*:*:*:*:*:*:*:* Versions before 2.1.0 Vulnerable ·project-zot
Remediation
- Fix · CNA zot (project-zot) Fixed in 2.1.0
- Fix · GHSA-55r9-5mx9-qq7r zotregistry.io/zot (Go) Fixed in 2.1.0 Advisory →
- Fix · GHSA-55r9-5mx9-qq7r zotregistry.dev/zot (Go) Fixed in 2.1.0 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2024-39897
- 2026-10-03 Alias added: GHSA-55r9-5mx9-qq7r
References
More project-zot Zot vulnerabilities
- TI-2025-16993 IdP group membership revocation ignored in zot CVSS 3.1HIGH 7.3
- TI-2026-24356 zot create-only policy allows overwrite attempts of existing latest tag (update permission not required) CVSS 3.1HIGH 7.7
Sources
- CVE-2024-39897 · CVE Program
- CVE-2024-39897 · NVD
- FIRST EPSS
- GHSA-55r9-5mx9-qq7r · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences