CVE-2021-20319 is a high-severity (CVSS 7.8) CWE-347 vulnerability in coreos-installer. A fix is available for coreos-installer — see the affected versions and patch details below.
coreos-installer improperly verifies GPG signature when decompressing gzipped artifact
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
CVE-2021-20319 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.
Where this sits among everything scored
Of 385,738 CVEs with a current EPSS score, this one falls in the < 10% band (highlighted). Counts from FIRST.org, log-scaled.
Real-World Exposure
coreos-installerReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects crates.io packages — download data is not available via public APIs for these ecosystems.
Description
Impact
coreos-installer fails to correctly verify GPG signatures when decompressing gzip-compressed artifacts. This allows bypass of signature verification in cases where coreos-installer decompresses a downloaded OS image, allowing an attacker who can modify the OS image to compromise a newly-installed system.
Default installations from ISO or PXE media in Fedora CoreOS, RHEL CoreOS, and RHEL for Edge are not affected, as coreos-installer installs from an OS image shipped as part of the install media.
These flows are affected:
-
Installing with
--image-file,--image-url, orcoreos.inst.image_url. For example, if a user has a local mirror of installation images, an attacker could replace an image with a gzip-compressed alternative (even if the file extension is.xz). The result:$ coreos-installer install --image-url http://localhost:8080/image.xz /dev/loop0 Downloading image from http://localhost:8080/image.xz Downloading signature from http://localhost:8080/image.xz.sig > Read disk 749.9 MiB/749.9 MiB (100%) gpg: Signature made Mon 20 Sep 2021 02:41:50 PM EDT gpg: using RSA key 8C5BA6990BDB26E19F2A1A801161AE6945719A39 gpg: BAD signature from "Fedora (34) <[email protected]>" [ultimate] Install complete.Notice that GPG reports a bad signature, but coreos-installer continues anyway. Automation that relies on coreos-installer's exit status will not notice either.
-
coreos-installer download --decompress --image-url:$ coreos-installer download --decompress --image-url http://localhost:8080/image.xz > Read disk 749.9 MiB/749.9 MiB (100%) gpg: Signature made Mon 20 Sep 2021 02:41:50 PM EDT gpg: using RSA key 8C5BA6990BDB26E19F2A1A801161AE6945719A39 gpg: BAD signature from "Fedora (34) <[email protected]>" [ultimate] ./imageAgain, coreos-installer reports success.
-
Installing with default parameters, when not installing from the image built into live ISO or PXE media, if the hosting service is compromised or if an active attacker gains control of the HTTPS response.
-
coreos-installer download --decompressif the hosting service is compromised or if an active attacker gains control of the HTTPS response.
Patches
The vulnerability is fixed in coreos-installer 0.10.1.
Workarounds
For coreos-installer download, do not use the -d or --decompress options.
For coreos-installer install, manually inspect the stderr output. If BAD signature appears, do not boot from the target disk. Note, however, that some OS services may have already accessed data on the compromised disk.
References
For more information, see PR 655.
For more information
If you have any questions or comments about this advisory, open an issue in coreos-installer or email the CoreOS development mailing list.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🦀crates.io | coreos-installer | all versions | 0.10.1cargo update -p coreos-installer --precise 0.10.1 |
Affected Products
coreos-installerredhatDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for coreos-installer, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update coreos-installer to 0.10.1 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2021-20319 is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
Fixing This On Your OS
If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.
This vulnerability impacts only a specific User-Provisioned Infrastructure (UPI) installation flow where coreos-installer is used and when gzip-compressed images are configured as the installation source. Because this flow does not occur in default usage, Red Hat considers this case as a Moderate impact flaw.
| Product | Fixed in | Advisory |
|---|---|---|
| Red Hat OpenShift Container Platform 4.10 | coreos-installer-0:0.12.0-1.rhaos4.10.el8 | RHSA-2022:0055 |
| Red Hat OpenShift Container Platform 4.6 | coreos-installer-0:0.6.0-4.rhaos4.6.el8 | RHSA-2021:4008 |
| Red Hat OpenShift Container Platform 4.7 | coreos-installer-0:0.8.0-4.rhaos4.7.el8 | RHSA-2021:3930 |
| Red Hat OpenShift Container Platform 4.8 | coreos-installer-0:0.9.0-7.rhaos4.8.el8 | RHSA-2021:3926 |
| Red Hat OpenShift Container Platform 4.9 | coreos-installer-0:0.10.1-1.rhaos4.9.el8 | RHSA-2021:3934 |
Frequently Asked Questions
Is CVE-2021-20319 in your dependencies?
Find it across crates.io, including transitive dependencies.