Cloudanix VulnDB

CVE-2020-8911

Medium · 5.6

CVSS

5.6

EPSS

0.3%

Published

Aug 11, 2020

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

An older encryption tool for cloud storage files can let someone who is allowed to change those files figure out the secret contents by watching how the system reacts to slightly altered data.

Exploit Available
Exploitation
Local Privilege
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 vulnerability is a padding oracle in AES-CBC encryption performed without a MAC, allowing an attacker who can modify ciphertexts in S3 and observe decryption outcomes to recover plaintext byte-by-byte via repeated adaptive queries that trigger PKCS5 padding errors.

Why it matters to the business

Attackers with S3 write access can recover sensitive plaintext from encrypted objects without possessing the key, exposing confidential data to unauthorized disclosure if any service performs decryption of attacker-controlled objects.

How an attack unfolds

An attacker writes a modified ciphertext to the target S3 bucket, triggers decryption through an endpoint that uses the vulnerable SDK, and uses the presence or absence of padding errors to deduce successive plaintext bytes, requiring on average 128 queries per byte.

How to fix it

Upgrade the AWS S3 Crypto SDK for Go to version 2 or later and re-encrypt all previously encrypted objects using the updated SDK that enforces authenticated encryption.

How to confirm the fix worked

Confirm the installed SDK version is 2 or newer, review source code and build artifacts for use of the legacy s3crypto package, and verify that re-encrypted objects include proper message authentication.

Typical attack path

  1. Gain write access to the target S3 bucket
  2. Locate an endpoint or service that decrypts objects from that bucket using the vulnerable SDK
  3. Upload crafted ciphertexts that manipulate CBC blocks
  4. Observe padding oracle responses across many decryption attempts
  5. Reconstruct the full original plaintext

How to detect it

Examine S3 access logs and application logs for sequences of PutObject followed by repeated GetObject or decryption calls on the same objects; look for high volumes of decryption requests originating from untrusted sources or unusual patterns consistent with adaptive oracle queries.

What your security team should do

  • Upgrade all Go applications using the S3 Crypto SDK to version 2 immediately
  • Re-encrypt every object that was encrypted with the vulnerable library
  • Audit all encryption usage for absence of MAC or authenticated encryption modes
  • Restrict S3 write permissions to the minimum necessary principals
  • Monitor decryption endpoints for anomalous query volumes against the same objects

The record

A padding oracle vulnerability exists in the AWS S3 Crypto SDK for GoLang versions prior to V2. The SDK allows users to encrypt files with AES-CBC without computing a Message Authentication Code (MAC), which then allows an attacker who has write access to the target's S3 bucket and can observe whether or not an endpoint with access to the key can decrypt a file, they can reconstruct the plaintext with (on average) 128*length (plaintext) queries to the endpoint, by exploiting CBC's ability to manipulate the bytes of the next block and PKCS5 padding errors. 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 1.34.0
Go github.com/aws/aws-sdk-go 0 No fix
Chainguard grafana-10.1 0 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.20241119T173509-1.1

Related vulnerabilities