|
| 1 | +--- |
| 2 | +gem: aws-sdk-s3 |
| 3 | +cve: 2025-14762 |
| 4 | +ghsa: 2xgq-q749-89fq |
| 5 | +url: https://github.com/aws/aws-sdk-ruby/security/advisories/GHSA-2xgq-q749-89fq |
| 6 | +title: AWS SDK for Ruby's S3 Encryption Client has a Key Commitment Issue |
| 7 | +date: 2025-12-18 |
| 8 | +description: | |
| 9 | + ## Summary |
| 10 | +
|
| 11 | + S3 Encryption Client for Ruby is an open-source client-side encryption |
| 12 | + library used to facilitate writing and reading encrypted records to S3. |
| 13 | +
|
| 14 | + When the encrypted data key (EDK) is stored in an "Instruction File" |
| 15 | + instead of S3's metadata record, the EDK is exposed to an "Invisible |
| 16 | + Salamanders" attack (https://eprint.iacr.org/2019/016), which could |
| 17 | + allow the EDK to be replaced with a new key. |
| 18 | +
|
| 19 | + ## Impact |
| 20 | +
|
| 21 | + ### Background - Key Commitment |
| 22 | +
|
| 23 | + There is a cryptographic property whereby under certain conditions, |
| 24 | + a single ciphertext can be decrypted into 2 different plaintexts by |
| 25 | + using different encryption keys. To address this issue, strong |
| 26 | + encryption schemes use what is known as "key commitment", a process |
| 27 | + by which an encrypted message can only be decrypted by one key; |
| 28 | + the key used to originally encrypt the message. |
| 29 | +
|
| 30 | + In older versions of S3EC, when customers are also using a feature |
| 31 | + called "Instruction File" to store EDKs, key commitment is not |
| 32 | + implemented because multiple EDKs could be associated to an underlying |
| 33 | + encrypted message object. For such customers an attack that leverages |
| 34 | + the lack of key commitment is possible. A bad actor would need two |
| 35 | + things to leverage this issue: |
| 36 | + (i) the ability to create a separate, rogue, EDK that will also |
| 37 | + decrypt the underlying object to produce desired plaintext, and |
| 38 | + (ii) permission to upload a new instruction file to the S3 bucket |
| 39 | + to replace the existing instruction file placed there by the |
| 40 | + user using the S3C. Any future attempt to decrypt the |
| 41 | + underlying encrypted message with the S3EC will unwittingly |
| 42 | + use the rogue EDK to produce a valid plaintext message. |
| 43 | +
|
| 44 | + ### Impacted versions: <= 1.207.0 |
| 45 | +
|
| 46 | + ## Patches |
| 47 | +
|
| 48 | + We are introducing the concept of "key commitment\" to S3EC where the |
| 49 | + EDK is cryptographically bound to the ciphertext in order to address |
| 50 | + this issue. In order to maintain compatibility for in-flight messages |
| 51 | + we are releasing the fix in two versions. A code-compatible minor |
| 52 | + version that can read messages with key-commitment but not write them, |
| 53 | + and a new major version that can both read and write messages with |
| 54 | + key-commitment. For maximum safety customers are asked to upgrade to |
| 55 | + the latest major version: 1.208.0 or later. |
| 56 | +
|
| 57 | + ### Workarounds |
| 58 | +
|
| 59 | + There are no workarounds, please upgrade to the suggested version of S3EC. |
| 60 | +
|
| 61 | + ### References |
| 62 | +
|
| 63 | + If customers have any questions or comments about this advisory, |
| 64 | + AWS SDK for Ruby asks that they contact AWS Security via the issue |
| 65 | + reporting page or directly via email to |
| 66 | + [aws-security@amazon.com](mailto:aws-security@amazon.com). |
| 67 | + Please do not create a public GitHub issue. |
| 68 | +cvss_v3: 5.3 |
| 69 | +cvss_v4: 6.0 |
| 70 | +patched_versions: |
| 71 | + - ">= 1.208.0" |
| 72 | +related: |
| 73 | + url: |
| 74 | + - https://nvd.nist.gov/vuln/detail/CVE-2025-14762 |
| 75 | + - https://rubygems.org/gems/aws-sdk-s3/versions/1.208.0 |
| 76 | + - https://github.com/aws/aws-sdk-ruby/security/advisories/GHSA-2xgq-q749-89fq |
| 77 | + - https://github.com/aws/aws-sdk-ruby/commit/b633ba10cd2fbc4cc770b76ab531ed9647654044 |
| 78 | + - https://aws.amazon.com/security/security-bulletins/AWS-2025-032 |
| 79 | + - https://github.com/advisories/GHSA-2xgq-q749-89fq |
0 commit comments