CVE-2025-14764

5.3 MEDIUM

📋 TL;DR

This vulnerability in the Amazon S3 Encryption Client for Go allows attackers with write access to an S3 bucket to manipulate encrypted data keys, potentially causing decryption to produce different plaintext than originally encrypted. It affects users of the S3 Encryption Client for Go who store encrypted data keys in instruction files rather than S3 metadata. The issue stems from missing cryptographic key commitment.

💻 Affected Systems

Products:
  • Amazon S3 Encryption Client for Go
Versions: Versions before 4.0.0
Operating Systems: All platforms running Go applications using this client
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects configurations where encrypted data keys are stored in instruction files rather than S3 object metadata.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

An attacker with write access could replace encrypted data keys, causing legitimate users to decrypt manipulated data while appearing to use valid encryption, potentially leading to data corruption or malicious content injection.

🟠

Likely Case

Inadvertent data corruption if multiple users with write access modify encrypted objects without proper coordination, resulting in inconsistent decryption outcomes.

🟢

If Mitigated

With proper access controls limiting write permissions and monitoring for unauthorized modifications, the risk is reduced to accidental data inconsistencies among authorized users.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires write access to the S3 bucket and knowledge of the encryption setup using instruction files.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.0.0

Vendor Advisory: https://aws.amazon.com/security/security-bulletins/AWS-2025-032/

Restart Required: No

Instructions:

1. Update go.mod to require github.com/aws/amazon-s3-encryption-client-go v4.0.0 or later. 2. Run 'go mod tidy' to update dependencies. 3. Rebuild and redeploy your application.

🔧 Temporary Workarounds

Use S3 metadata for encrypted data keys

all

Configure the S3 Encryption Client to store encrypted data keys in S3 object metadata instead of instruction files, as the vulnerability only affects instruction file storage.

🧯 If You Can't Patch

  • Implement strict IAM policies to limit write access to S3 buckets containing encrypted data.
  • Enable S3 bucket versioning and monitor for unexpected object modifications.

🔍 How to Verify

Check if Vulnerable:

Check your go.mod file for 'github.com/aws/amazon-s3-encryption-client-go' with version below 4.0.0, and verify if your application uses instruction files for encrypted data keys.

Check Version:

grep 'github.com/aws/amazon-s3-encryption-client-go' go.mod

Verify Fix Applied:

Confirm go.mod specifies version 4.0.0 or later of github.com/aws/amazon-s3-encryption-client-go, and test encryption/decryption with instruction files to ensure consistency.

📡 Detection & Monitoring

Log Indicators:

  • AWS CloudTrail logs showing unexpected PutObject or similar write operations to S3 buckets containing encrypted data with instruction files.

Network Indicators:

  • Unusual patterns of S3 API calls modifying encrypted objects from unauthorized sources.

SIEM Query:

source="aws.cloudtrail" eventName IN ("PutObject", "CopyObject") AND requestParameters.bucketName="your-bucket-name" AND errorCode IS NULL | stats count by userIdentity.arn

🔗 References

📤 Share & Export