CVE-2020-15157 | containerd can be coerced into leaking credentials during image pull

In containerd (an industry-standard container runtime) before version 1.2.14 there is a credential leaking vulnerability. If a container image manifest in the OCI Image format or Docker Image V2 Schema 2 format includes a URL for the location of a specific image layer (otherwise known as a “foreign layer”), the default containerd resolver will follow that URL to attempt to download it. In v1.2.x but not 1.3.0 or later, the default containerd resolver will provide its authentication credentials if the server where the URL is located presents an HTTP 401 status code along with registry-specific HTTP headers. If an attacker publishes a public image with a manifest that directs one of the layers to be fetched from a web server they control and they trick a user or system into pulling the image, they can obtain the credentials used for pulling that image. In some cases, this may be the user's username and password for the registry. In other cases, this may be the credentials attached to the cloud virtual instance which can grant access to other cloud resources in the account. The default containerd resolver is used by the cri-containerd plugin (which can be used by Kubernetes), the ctr development tool, and other client programs that have explicitly linked against it. This vulnerability has been fixed in containerd 1.2.14. containerd 1.3 and later are not affected. If you are using containerd 1.3 or later, you are not affected. If you are using cri-containerd in the 1.2 series or prior, you should ensure you only pull images from trusted sources. Other container runtimes built on top of containerd but not using the default resolver (such as Docker) are not affected.

Published: 2020-10-16 Last update: 2024-11-21 Assigner: [email protected] Source: [email protected]

Conclusion & alert: CVE-2020-15157 is rated Moderate Risk (53.9/100): CVSS Medium severity, with medium exploitation likelihood (EPSS 2.21%). Core evidence: EPSS rose +1.43% over the last day, indicating growing attacker interest. Mandatory action: Review affected assets and schedule remediation.

Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.

Exploit prediction scoring system (EPSS) score for CVE-2020-15157

EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).

# Date Old EPSS score New EPSS score Delta (New - Old)
1 2026-06-15 0.78% 2.21% +1.43%
2 2026-03-11 0.69% 0.78% +0.08%
3 2026-02-19 0.69%

Full EPSS history (21 records total)

Common vulnerability scoring system (CVSS) metrics for CVE-2020-15157

CVSS metrics for this CVE.

Base score Version Severity Vector Exploitability Impact Score source
6.1 3.1 MEDIUM
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:H)
Even with access, the exploit needs extra luck, timing, or a fussy environment to actually work.
Privileges required (PR:N)
No account or special rights needed—anonymous or random user is enough.
User interaction (UI:R)
A real person has to do something—click, install, enable—otherwise it doesn’t land.
Scope (S:C)
Breaking this can reach past the original component and bite other resources—bigger blast radius.
Confidentiality (C:H)
Serious risk that confidential data gets exposed in a big way.
Integrity (I:N)
Data isn’t meaningfully altered or forged.
Availability (A:N)
Service keeps running; no real outage angle.
1.6 4.0 [email protected]
6.1 3.1 MEDIUM
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:H)
Even with access, the exploit needs extra luck, timing, or a fussy environment to actually work.
Privileges required (PR:N)
No account or special rights needed—anonymous or random user is enough.
User interaction (UI:R)
A real person has to do something—click, install, enable—otherwise it doesn’t land.
Scope (S:C)
Breaking this can reach past the original component and bite other resources—bigger blast radius.
Confidentiality (C:H)
Serious risk that confidential data gets exposed in a big way.
Integrity (I:N)
Data isn’t meaningfully altered or forged.
Availability (A:N)
Service keeps running; no real outage angle.
1.6 4.0 [email protected]
2.6 2.0 LOW
AV:N/AC:H/Au:N/C:P/I:N/A:N Click to expand
Access vector (AV:N)
Can be exploited remotely over network reachability.
Access complexity (AC:H)
Exploitation requires uncommon or highly specific conditions.
Authentication (AU:N)
No authentication is required.
Confidentiality impact (C:P)
Partial confidentiality impact.
Integrity impact (I:N)
No integrity impact.
Availability impact (A:N)
No availability impact.
4.9 2.9 [email protected]

Weakness enumeration for CVE-2020-15157

GitHub Security Advisory for CVE-2020-15157

GHSA-742w-89gc-8m9c · Severity: medium · Ecosystem: go — containerd v1.2.x can be coerced into leaking credentials during image pull

OS Trackers for CVE-2020-15157

vendor priority summary link
alpine medium CVE-2020-15157: 1 source package rows (containerd); 6 state rows across 2 repos (3.22-community, edge-community); fixed 0, open 6. https://security.alpinelinux.org/vuln/CVE-2020-15157
debian not yet assigned CVE-2020-15157 not yet assigned priority: Debian including 2 source packages (containerd, docker.io), 10 status rows across 5 suites (bookworm, bullseye, forky, sid, trixie): resolved 10. https://security-tracker.debian.org/tracker/CVE-2020-15157
redhat medium https://access.redhat.com/security/cve/CVE-2020-15157
suse medium CVE-2020-15157 severity moderate: SUSE including 299 source package names (1.8.6.0.3.2.5:libseccomp2-2.5.3-150300.10.5.1, 14.1-rev1.0.0-build2.2.43:libseccomp2-2.5.3-150300.10.5.1, …), 394 product×package rows across 90 product lines (Container bci/bci-init, Container ses/7.1/ceph/haproxy, … (90 product lines)): Fixed 264, Known Affected 130. https://www.suse.com/security/cve/CVE-2020-15157/
ubuntu medium CVE-2020-15157 medium priority: Ubuntu including 2 source packages (containerd, docker.io), 10 status rows across 5 suites (bionic, focal, trusty, upstream, xenial): released 4, DNE 2, needs-triage 2, not-affected 2. https://ubuntu.com/security/CVE-2020-15157

Affected software / configurations for CVE-2020-15157

Vendor Product Version Raw CPE
linuxfoundation containerd >= 1.2.0, < 1.2.14 cpe:2.3:a:linuxfoundation:containerd:*:*:*:*:*:*:*:*
linuxfoundation containerd 1.3.0 cpe:2.3:a:linuxfoundation:containerd:1.3.0:-:*:*:*:*:*:*
linuxfoundation containerd 1.3.0 cpe:2.3:a:linuxfoundation:containerd:1.3.0:beta0:*:*:*:*:*:*
linuxfoundation containerd 1.3.0 cpe:2.3:a:linuxfoundation:containerd:1.3.0:beta1:*:*:*:*:*:*
linuxfoundation containerd 1.3.0 cpe:2.3:a:linuxfoundation:containerd:1.3.0:beta2:*:*:*:*:*:*
linuxfoundation containerd 1.3.0 cpe:2.3:a:linuxfoundation:containerd:1.3.0:rc0:*:*:*:*:*:*
linuxfoundation containerd 1.3.0 cpe:2.3:a:linuxfoundation:containerd:1.3.0:rc1:*:*:*:*:*:*
linuxfoundation containerd 1.3.0 cpe:2.3:a:linuxfoundation:containerd:1.3.0:rc2:*:*:*:*:*:*
linuxfoundation containerd 1.3.0 cpe:2.3:a:linuxfoundation:containerd:1.3.0:rc3:*:*:*:*:*:*
canonical ubuntu_linux 16.04 cpe:2.3:o:canonical:ubuntu_linux:16.04:*:*:*:lts:*:*:*
canonical ubuntu_linux 18.04 cpe:2.3:o:canonical:ubuntu_linux:18.04:*:*:*:lts:*:*:*
canonical ubuntu_linux 20.04 cpe:2.3:o:canonical:ubuntu_linux:20.04:*:*:*:lts:*:*:*
debian debian_linux 10.0 cpe:2.3:o:debian:debian_linux:10.0:*:*:*:*:*:*:*

References for CVE-2020-15157

cvelogic Threat Intelligence