CVE-2020-8912
Low · 2.5CVSS
2.5
EPSS
0.2%
Published
Aug 11, 2020
CISA due date
—
Cloudanix analysis
An older version of Amazon's tool for encrypting files stored in the cloud can let someone who can change files figure out the secret key protecting the data.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- High
- Impact
- Data Exposure
- Component
- Library
- Class
- Cryptographic Weakness
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Medium
What it actually does
The flaw permits an attacker with write access to alter an object's encryption algorithm metadata from AES-GCM to AES-CTR, enabling recovery of the AES-GCM authentication key when combined with a decryption oracle by treating the GMAC tag as an algebraic equation.
Why it matters to the business
Organizations using older versions of the SDK face risk of encrypted object confidentiality loss, requiring urgent SDK upgrades and full re-encryption of affected data stores to prevent potential data exposure.
How an attack unfolds
An attacker first gains write access to a targeted S3 bucket, modifies an object's in-band encryption metadata to switch from AES-GCM to AES-CTR, then leverages a decryption oracle against the altered object to recover the original authentication key through algebraic manipulation of the GMAC tag.
How to fix it
Upgrade the AWS S3 Crypto SDK for GoLang to version 2 or later, then re-encrypt all previously protected objects using the updated SDK to eliminate reliance on the vulnerable in-band negotiation.
How to confirm the fix worked
Inventory all Go applications using the S3 Crypto SDK, confirm versions are 2 or higher, and audit bucket objects for any remaining pre-V2 encrypted items by inspecting their encryption metadata.
Typical attack path
- Obtain write access to the target S3 bucket
- Identify objects protected with AES-GCM via the vulnerable SDK
- Modify object metadata to change encryption algorithm to AES-CTR
- Submit modified ciphertext to a decryption oracle
- Recover the AES-GCM authentication key from the resulting equation
How to detect it
Review S3 access and object modification logs for unexpected changes to encryption algorithm metadata on objects, and inspect any decryption operations involving switched algorithms from AES-GCM to AES-CTR.
What your security team should do
- Immediately update all instances of the AWS S3 Crypto SDK for GoLang to version 2 or later
- Re-encrypt every object previously protected under vulnerable versions
- Review and tighten S3 bucket write permissions to limit exposure surface
- Monitor for any post-upgrade objects still using legacy encryption metadata
The record
A vulnerability in the in-band key negotiation exists in the AWS S3 Crypto SDK for GoLang versions prior to V2. An attacker with write access to the targeted bucket can change the encryption algorithm of an object in the bucket, which can then allow them to change AES-GCM to AES-CTR. Using this in combination with a decryption oracle can reveal the authentication key used by AES-GCM as decrypting the GMAC tag leaves the authentication key recoverable as an algebraic equation. It is recommended to update your SDK to V2 or later, and re-encrypt your files.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | github.com/aws/aws-sdk-go | 0 | No fix |
| Go | github.com/aws/aws-sdk-go | 0 | 1.34.0 |
| Chainguard | k3d | 0 | 5.6.0-r11 |
| Chainguard | k3d-proxy | 0 | 5.6.0-r11 |
| Chainguard | k3d-tools | 0 | 5.6.0-r11 |
| Chainguard | kubevirt-cdi-uploadserver-1.5 | 0 | 0 |
| Chainguard | kubevirt-cdi-uploadserver-1.59 | 0 | 0 |
| Chainguard | kubevirt-cdi-uploadserver-fips-1.5 | 0 | 0 |
| Chainguard | kubevirt-cdi-uploadserver-fips-1.59 | 0 | 0 |
| Wolfi | k3d | 0 | 5.6.0-r11 |
| Wolfi | k3d-proxy | 0 | 5.6.0-r11 |
| Wolfi | k3d-tools | 0 | 5.6.0-r11 |
| openSUSE:Tumbleweed | govulncheck-vulndb | 0 | 0.0.20241213T205935-1.1 |
Related vulnerabilities
- CVE-2022-2582 The AWS S3 Crypto SDK sends an unencrypted hash of the plaintext alongside the ciphertext… Also affects github.com/aws/aws-sdk-go
- CVE-2020-8911 A padding oracle vulnerability exists in the AWS S3 Crypto SDK for GoLang versions prior… Also affects github.com/aws/aws-sdk-go
- CVE-2025-15558 Docker CLI for Windows searches for plugin binaries in C:\ProgramData\Docker\cli-plugins… Also affects k3d
- CVE-2024-2660 Vault and Vault Enterprise TLS certificates auth method did not correctly validate OCSP… Also affects k3d
- CVE-2024-2048 Vault and Vault Enterprise (“Vault”) TLS certificate auth method did not correctly… Also affects k3d
- CVE-2024-21626 runc is a CLI tool for spawning and running containers on Linux according to the OCI… Also affects k3d
- CVE-2021-43565 The x/crypto/ssh package before 0.0.0-20211202192323-5770296d904e of golang.org/x/crypto… Also affects k3d
- CVE-2022-27191 The golang.org/x/crypto/ssh package before 0.0.0-20220314234659-1baeb1ce4c0b for Go… Also affects k3d