Cloudanix VulnDB

CVE-2020-8912

Low · 2.5

CVSS

2.5

EPSS

0.2%

Published

Aug 11, 2020

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

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.

Exploit Available Chainable
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

  1. Obtain write access to the target S3 bucket
  2. Identify objects protected with AES-GCM via the vulnerable SDK
  3. Modify object metadata to change encryption algorithm to AES-CTR
  4. Submit modified ciphertext to a decryption oracle
  5. 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