CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-MVM6-F9R3-FGFX

GHSA-mvm6-f9r3-fgfx: JSON Policy Injection in AWS SDK for .NET CloudFront Signers

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 28, 2026·6 min read·42 visits

Executive Summary (TL;DR)

Unescaped quotes and backslashes in AWS SDK for .NET CloudFront utilities allow attackers to inject malicious JSON into custom policies, bypassing intended access controls for private CloudFront content.

The AWS SDK for .NET contains a vulnerability in its CloudFront signing utilities where improper escaping of special characters permits JSON policy injection. Attackers who can control input passed to the signing methods can alter the generated CloudFront custom policy, allowing them to bypass access restrictions and access private resources.

Vulnerability Overview

The AWS SDK for .NET provides utilities to programmatically generate Amazon CloudFront signed URLs and signed cookies. These mechanisms are used to restrict access to private content served through CloudFront, ensuring that only authenticated or authorized clients can retrieve specific resources. The signing process relies on constructing a JSON-formatted Custom Policy document that defines the exact access parameters, such as the allowed resource path, expiration time, and permitted IP ranges.

A vulnerability exists within the AWSSDK.CloudFront and AWSSDK.Extensions.CloudFront.Signers packages where the SDK fails to properly neutralize special characters when constructing these JSON policy documents. Specifically, the SDK does not adequately escape double quotes (") and backslashes (\) present in the input variables before concatenating them into the final JSON string.

This flaw is classified as Improper Encoding or Escaping of Output (CWE-116). By exploiting this vulnerability, an attacker who controls the input parameters can break out of the intended JSON value context. The attacker can then inject arbitrary JSON key-value pairs into the policy document, fundamentally altering the access control rules enforced by CloudFront.

Root Cause Analysis

CloudFront Custom Policies are structured as JSON documents containing a Statement array. Each statement specifies a Resource and various Condition blocks that dictate access rules. When developers use the SDK's signing methods, they provide parameters such as the target URL or client IP addresses. The SDK dynamically constructs the JSON policy using these provided parameters.

Prior to the patched versions, the SDK assembled this JSON document using string formatting or concatenation rather than a safe JSON serialization library, or it failed to apply a proper escaping routine to the input strings. Because double quotes and backslashes were not sanitized, any input containing these characters was inserted verbatim into the JSON structure.

When a developer passes user-controlled data to a vulnerable signing method, the untrusted data is directly embedded into a JSON string value. If the input contains a double quote, the JSON parser reading the generated policy will interpret that quote as the termination of the string literal. Any subsequent characters in the input are then parsed as structural JSON elements rather than data, enabling JSON injection.

Code Analysis

The vulnerability manifests when developers use methods like AmazonCloudFrontUrlSigner.SignUrl. The method accepts parameters like the resource URL and constructs a policy internally if a custom policy is not explicitly provided by the developer.

// Conceptual representation of the vulnerable code pattern
string resourceUrl = userInput;
string policy = @"{""Statement"":[{
    ""Resource"":""" + resourceUrl + @""",
    ""Condition"":{
        ""DateLessThan"":{""AWS:EpochTime"":1672531200}
    }
}]}";

In the vulnerable pattern above, resourceUrl is concatenated directly into the policy string. If userInput contains a double quote, it closes the "Resource" value. The patch addresses this by implementing strict escaping for user-controlled variables before they are incorporated into the JSON document.

// Conceptual representation of the patched code pattern
string escapedResourceUrl = resourceUrl.Replace("\\", "\\\\").Replace("\"", "\\\"");
string policy = @"{""Statement"":[{
    ""Resource"":""" + escapedResourceUrl + @""",
    ""Condition"":{
        ""DateLessThan"":{""AWS:EpochTime"":1672531200}
    }
}]}";

The fix ensures that any backslashes or double quotes within the input are prefixed with an escape character. This forces the downstream JSON parser to treat these characters as literal string content rather than structural delimiters, neutralizing the injection vector.

Exploitation Methodology

Exploitation requires an application that accepts user input and incorporates it into a CloudFront signed URL or cookie without prior validation. The attacker crafts a payload containing a double quote to close the active JSON field, followed by a comma, and then entirely new JSON keys and values.

Consider an application that generates signed URLs for user-specific directories: https://example.com/files/ + userInput. An attacker provides the following string as their input: ", "Condition": {"DateLessThan": {"AWS:EpochTime": 2147483647}} }.

When the SDK processes this input, the resulting JSON policy document will include the injected condition:

{
  "Statement": [{
    "Resource": "https://example.com/files/", 
    "Condition": {"DateLessThan": {"AWS:EpochTime": 2147483647}} },
    "Condition": {"DateLessThan": {"AWS:EpochTime": 1672531200}}
  }]
}

Depending on the JSON parser's behavior regarding duplicate keys, the injected Condition block may override the original restrictions set by the application. This allows the attacker to unilaterally modify the expiration time or remove IP-based restrictions from the generated signature.

Impact Assessment

The primary impact of this vulnerability is a high loss of confidentiality. By successfully injecting custom conditions into the CloudFront policy, an attacker can generate valid cryptographic signatures that grant broader access than the application intended. This allows the attacker to bypass time-based expirations or IP-based geo-restrictions.

Furthermore, if the injected payload alters the Resource field to include wildcards (e.g., https://example.com/*), the attacker could use the resulting signed URL or cookie to access arbitrary private files within the same CloudFront distribution. This effectively defeats the primary access control mechanism for the content delivery network.

> [!NOTE] > The integrity impact is rated as low. While the attacker can modify the logical conditions of the access policy, they cannot alter the actual files stored behind the CloudFront distribution. The vulnerability does not provide write access to the origin servers or Amazon S3 buckets.

Remediation and Mitigation

Organizations utilizing the AWS SDK for .NET to generate CloudFront signed URLs or signed cookies must upgrade their dependencies immediately. The official patches resolve the string escaping flaws within the policy construction logic.

The required minimum versions are AWSSDK.CloudFront version 3.7.510.7 and AWSSDK.Extensions.CloudFront.Signers version 4.0.0.31. Upgrading to these versions or newer ensures that the SDK internally escapes all double quotes and backslashes before integrating parameters into the JSON policy.

As a defense-in-depth measure, development teams should implement strict input validation at the application layer. User-provided data destined for CloudFront signing methods should be sanitized or validated against a strict allowlist. Rejecting inputs containing double quotes or backslashes before they reach the AWS SDK provides an additional layer of security against future injection flaws.

Official Patches

Amazon Web ServicesAWS SDK for .NET Security Advisories

Technical Appendix

CVSS Score
9.3/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N

Affected Systems

AWS SDK for .NETNuGet Package: AWSSDK.CloudFrontNuGet Package: AWSSDK.Extensions.CloudFront.Signers

Affected Versions Detail

Product
Affected Versions
Fixed Version
AWSSDK.CloudFront
Amazon Web Services
< 3.7.510.73.7.510.7
AWSSDK.Extensions.CloudFront.Signers
Amazon Web Services
< 4.0.0.314.0.0.31
AttributeDetail
CWE IDCWE-116
Attack VectorNetwork
CVSS v3.1 Score9.3 (Critical)
Confidentiality ImpactHigh
Integrity ImpactLow
Exploit StatusNone

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-116
Improper Encoding or Escaping of Output

The software does not properly encode or escape output, which can allow an attacker to alter the structure of the data.

Vulnerability Timeline

Vulnerability patched in AWS SDK for PHP (coordinated fix).
2026-03-03
GHSA-mvm6-f9r3-fgfx published for AWS SDK for .NET.
2026-03-27
Remediation versions released on NuGet.
2026-03-27

References & Sources

  • [1]GitHub Advisory (GHSA-mvm6-f9r3-fgfx)
  • [2]AWS SDK for .NET GitHub Repository
  • [3]AWS SDK for .NET Security Advisories
  • [4]GitLab Advisory Mirror
  • [5]Related PHP Advisory (GHSA-27qh-8cxx-2cr5)
  • [6]Related Java Advisory (GHSA-443W-3RQ3-5M5H)
Related Vulnerabilities
GHSA-27qh-8cxx-2cr5GHSA-443W-3RQ3-5M5H

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 7 hours ago•CVE-2026-48861
2.1

CVE-2026-48861: HTTP Request Splitting and Smuggling via Method Parameter CRLF Injection in Elixir Mint

CVE-2026-48861 is a client-side HTTP request-line CRLF (Carriage Return Line Feed) injection vulnerability in the popular Elixir HTTP client library, Mint. The vulnerability permits HTTP Request Splitting and HTTP Request Smuggling when an application forwards untrusted, attacker-controlled inputs to Mint's HTTP client requests as either the HTTP request method or target. By embedding CRLF characters within these parameters, an attacker can terminate the request line prematurely, inject malicious headers, or pipeline entirely independent requests. These smuggled requests are then processed by upstream or downstream proxy servers as separate HTTP queries on the same TCP connection. While Mint version 1.7.0 introduced target validation to secure the request target, the HTTP request method parameter remained completely unvalidated. This flaw allows attackers to bypass routing filters, access restricted internal APIs, or poison HTTP caches under default configurations.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 7 hours ago•CVE-2026-49753
6.3

CVE-2026-49753: HTTP Request/Response Smuggling via Inconsistent Content-Length Parsing in Elixir Mint Client

An Inconsistent Interpretation of HTTP Requests (HTTP Request/Response Smuggling) vulnerability in the Elixir Mint HTTP client allows attacker-controlled HTTP/1 servers to desynchronize response framing on shared connections due to over-lenient parsing of sign-prefixed Content-Length headers.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 8 hours ago•CVE-2026-49754
8.2

CVE-2026-49754: Denial of Service via Unbounded HTTP/2 CONTINUATION Frame Accumulation in Elixir Mint

An allocation of resources without limits or throttling vulnerability in Elixir Mint allows an attacker-controlled HTTP/2 server to exhaust memory in a Mint client. The vulnerability is exploited by sending a HEADERS frame without the END_HEADERS flag followed by an infinite stream of CONTINUATION frames. Because the client lacks limits on the incoming header-block accumulator, the client continuously consumes memory until an out-of-memory crash occurs.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 8 hours ago•CVE-2026-48596
2.1

CVE-2026-48596: Improper Neutralization of CRLF Sequences in Elixir Tesla Multipart HTTP Client

CVE-2026-48596 is an Improper Neutralization of CRLF Sequences in HTTP Headers (HTTP Request/Response Splitting, CWE-113) in the Elixir Tesla HTTP client. The flaw resides in how multipart content-type parameters are joined and serialized, enabling attackers to inject arbitrary headers or split HTTP requests when applications pass untrusted inputs to the parameters of multipart uploads.

Alon Barad
Alon Barad
5 views•6 min read
•about 9 hours ago•CVE-2026-48594
8.2

CVE-2026-48594: Decompression Bomb Denial of Service in Elixir Tesla HTTP Client

An improper handling of highly compressed data (decompression bomb) vulnerability exists in the Elixir Tesla HTTP client when utilizing response decompression middlewares. By serving highly compressed responses or stacked content-encoding headers, a malicious server can cause arbitrary heap exhaustion, leading to a denial of service (DoS) crash in the BEAM virtual machine.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 9 hours ago•CVE-2026-48595
8.2

CVE-2026-48595: Cross-Origin Credential Leakage in Elixir Tesla Client via Case-Sensitive Redirect Filter Bypass

A high-severity security vulnerability in Elixir's Tesla HTTP client library (CVE-2026-48595) allows unauthenticated remote attackers to harvest sensitive credentials, including Authorization headers and cookies. The flaw resides in the 'Tesla.Middleware.FollowRedirects' component, which performs case-sensitive lookups when stripping credentials during cross-origin redirects. Because HTTP headers are case-insensitive by RFC specifications, standard canonical casing (e.g., 'Authorization') bypasses the lowercase-only blocklist, leaking tokens to untrusted external redirect destinations.

Alon Barad
Alon Barad
6 views•5 min read