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-GX4C-2HQX-CW2R

GHSA-gx4c-2hqx-cw2r: Cleartext Transmission of Sensitive AWS STS Tokens in rclone S3 Backend via Scheme Downgrade Redirects

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 6, 2026·6 min read·8 visits

Executive Summary (TL;DR)

The rclone S3 backend does not strip the X-Amz-Security-Token header during HTTPS-to-HTTP redirects on the same host, exposing temporary session tokens to cleartext network sniffing by adjacent attackers.

A logic vulnerability in the rclone S3 backend implementation allows an unauthenticated adjacent-network attacker to intercept temporary AWS STS credentials. During HTTP redirection handling, the application fails to verify whether a protocol scheme change occurred (such as transitioning from HTTPS to HTTP). If a secure request is redirected to an unencrypted endpoint on the same host, rclone continues to forward the highly sensitive X-Amz-Security-Token header in cleartext.

Vulnerability Overview

The rclone S3 backend utilizes temporary security credentials, such as AWS Security Token Service (STS) session tokens, to authenticate requests securely. These credentials are transmitted via the X-Amz-Security-Token HTTP header to prove the caller's identity and permissions. To prevent credential leakage, the application contains redirection checking logic that strips sensitive headers if the HTTP redirection chain crosses host boundaries.

However, a design flaw exists in the redirection logic implemented in version 1.74.3. The security checker does not validate the URI scheme (HTTPS versus HTTP) during evaluation. If an initial secure connection to an S3 endpoint is redirected to an unencrypted endpoint on the same host, the application classifies the destination as the same host and follows the redirect without stripping the authorization headers.

As a consequence of this logic failure, the sensitive security token is transmitted over unencrypted HTTP. An attacker positioned on the local network or adjacent routing path can capture this traffic to extract the valid STS token. Once obtained, the attacker can leverage the credentials to perform operations against the backend S3 storage within the validity window of the token.

Root Cause Analysis

The root cause of this vulnerability lies in the implementation of the s3RedirectCrossesHost function within the backend/s3/s3.go source file. This helper function is registered in the S3 client configuration to determine whether an HTTP redirect has traversed to an external, untrusted boundary.

In vulnerable versions of the application, the verification logic relies exclusively on the Host field of the parsed Golang url.URL struct. The Host property only represents the hostname and optionally the port (e.g., bucket.example.com). It does not contain the protocol scheme of the resource identifier.

When a server responds to an HTTPS request with an HTTP redirect on the same hostname, the logic compares the original via[0].URL.Host value with the new target req.URL.Host value. Because both strings match, the function incorrectly returns false. This prevents the client from invoking header-stripping protocols, resulting in cleartext transmission of the X-Amz-Security-Token header.

Code Analysis and Comparison

Below is the vulnerable implementation of s3RedirectCrossesHost found in backend/s3/s3.go:

func s3RedirectCrossesHost(req *http.Request, via []*http.Request) bool {
	if len(via) == 0 {
		return false
	}
	host := via[0].URL.Host
	for _, redirect := range via[1:] {
		if redirect.URL.Host != host {
			return true
		}
	}
	return host != req.URL.Host
}

The implementation evaluates the redirect chain sequentially, but only verifies that redirect.URL.Host matches the original host. It ignores changes in URL.Scheme (e.g. from https to http).

The patched version introduces strict scheme tracking, as seen in the code change below:

func s3RedirectCrossesHost(req *http.Request, via []*http.Request) bool {
	if len(via) == 0 {
		return false
	}
	scheme, host := via[0].URL.Scheme, via[0].URL.Host
	for _, redirect := range via[1:] {
		if redirect.URL.Host != host || redirect.URL.Scheme != scheme {
			return true
		}
	}
	return host != req.URL.Host || scheme != req.URL.Scheme
}

In the patched logic, both Scheme and Host are tracked from the initial request (via[0]). If either property diverges during the redirect chain, the function evaluates to true, instructing the caller to strip the sensitive headers prior to issuing the subsequent redirect request.

Exploitation Methodology

To execute this attack, an adversary must be positioned on an adjacent network or possess the ability to influence routing paths between the rclone client and the S3 target. The attack scenario unfolds as follows:

First, the victim executes an rclone operation against an S3 destination using temporary credentials. If the remote service is misconfigured or a load balancer directs traffic to an unencrypted backend, a redirect response is issued. Alternatively, an attacker on the adjacent network can perform local spoofing (e.g., ARP spoofing or DNS spoofing) to intercept the connection and generate an artificial redirect from port 443 to port 80 on the same host.

When rclone processes the redirect, s3RedirectCrossesHost returns false due to the matching hostnames. The client then sends the follow-up request to the unencrypted HTTP endpoint, carrying the plaintext token. The adjacent network attacker captures the packet stream, extracts the X-Amz-Security-Token, and uses it to access protected S3 resources.

Security Impact Assessment

The impact of this vulnerability is limited to environments utilizing temporary S3 credentials, such as AWS STS tokens or similar session token structures. Long-term AWS master access keys, which are handled through different authentication signing mechanisms, are not directly affected by this redirect failure.

The CVSS score is evaluated at 3.1 (Low severity) due to the high barrier to entry. The attacker must possess adjacent network access (AV:A) and the complexity is High (AC:H) because it requires either a backend configuration failure or active network-level poisoning. There is no impact on integrity or availability, as the attack primarily results in confidential credential exposure.

Currently, this vulnerability is not listed on the CISA KEV list, and there are no known public exploits, weaponized execution paths, or reports of active exploitation in the wild.

Remediation and Mitigation

The primary resolution is upgrading rclone to version 1.74.4 or later, which fully implements the updated s3RedirectCrossesHost checker to strip credentials on scheme downgrades. This represents the only complete remediation for the codebase.

In environments where upgrading the binary is delayed, several infrastructural workarounds should be applied. First, S3 endpoints and reverse proxies must be configured to deny unencrypted HTTP traffic entirely on port 80. This prevents the server from issuing a protocol downgrade redirection.

Additionally, deploying HTTP Strict Transport Security (HSTS) on the network gateway forces clients to automatically rewrite any unencrypted HTTP requests to secure HTTPS before transmission, neutralizing the protocol downgrade entirely.

Official Patches

rcloneOfficial patch implementing scheme verification within redirect handler.

Fix Analysis (1)

Technical Appendix

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

Affected Systems

rclone S3 Backend

Affected Versions Detail

Product
Affected Versions
Fixed Version
rclone
rclone
>= 1.74.3, < 1.74.41.74.4
AttributeDetail
CWE IDCWE-319
Attack VectorAdjacent Network
CVSS v3.1 Score3.1
Exploit StatusPoC (Unit Test Only)
KEV StatusNot Listed
Affected Componentbackend/s3/s3.go

MITRE ATT&CK Mapping

T1557.002Adversary-in-the-Middle: ARP Poisoning
Credential Access
T1040Network Sniffing
Credential Access
CWE-319
Cleartext Transmission of Sensitive Information

The product transmits sensitive information over an unencrypted channel, making it vulnerable to network interception.

Known Exploits & Detection

GitHub Security AdvisorySecurity advisory and analysis details including local reproduction scenarios.

Vulnerability Timeline

Security fix commit merged into main branch.
2026-07-07
GitHub Security Advisory GHSA-gx4c-2hqx-cw2r published.
2026-08-05
rclone version v1.74.4 released with official patches.
2026-08-05

References & Sources

  • [1]GHSA-gx4c-2hqx-cw2r Security Advisory
  • [2]rclone Fix Commit 1a28451e
  • [3]rclone v1.74.4 Release Notes

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 13 hours ago•CVE-2026-12243
7.5

CVE-2026-12243: Incomplete Path Traversal Validation and Percent-Encoding Bypass in NLTK

CVE-2026-12243 is a path traversal vulnerability in the Natural Language Toolkit (NLTK) version 3.9.4. The flaw exists because the input validation routine fails to account for percent-encoded directory traversal sequences like '..%2f' before passing them to urllib.request.url2pathname(), which decodes them into active traversal sequences.

Amit Schendel
Amit Schendel
3 views•8 min read
•about 14 hours ago•CVE-2026-73654
8.5

CVE-2026-73654: Prototype Pollution in Trigger.dev leading to Cascading Denial of Service

CVE-2026-73654 is a high-severity prototype pollution vulnerability in Trigger.dev. The flaw occurs during the handling of run-metadata updates through the PUT /api/v1/runs/:runId/metadata endpoint. Because user-supplied keys are parsed directly by the @jsonhero/path library without sanitization, an authenticated attacker with low privileges can pollute the global Object.prototype. This causes database queries via Prisma ORM to fail validation and induces unhandled exceptions in the Prometheus metrics client, resulting in a process-wide denial of service.

Alon Barad
Alon Barad
8 views•6 min read
•about 16 hours ago•CVE-2026-73559
6.5

CVE-2026-73559: Uncontrolled Resource Consumption in vLLM API completions

CVE-2026-73559 is an uncontrolled resource consumption vulnerability in the vLLM engine, specifically within the /v1/completions API endpoint, allowing authenticated attackers to cause application-level denial of service via unbounded prompt arrays.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 18 hours ago•CVE-2026-54526
9.9

CVE-2026-54526: Strict Template Referencing Bypass and Privilege Escalation in Argo Workflows

A critical security bypass vulnerability in Argo Workflows allows authenticated attackers with workflow submission privileges to bypass 'Strict' or 'Secure' template referencing restrictions. By injecting unvalidated fields into the nested ArtifactGC configuration, attackers can execute arbitrary pod patches, leading to host namespace escape and cluster-wide privilege escalation.

Alon Barad
Alon Barad
14 views•6 min read
•about 19 hours ago•CVE-2026-54249
6.8

CVE-2026-54249: Server-Side Request Forgery via Confused Deputy in Pydantic AI UI Adapters

A Server-Side Request Forgery (SSRF) / Confused Deputy vulnerability has been identified in Pydantic AI UI Adapters (such as VercelAIAdapter). Under certain conditions, a malicious client can supply manipulated message history with provider metadata that forces the server to resolve files within privileged cloud environments (AWS S3, Google Cloud Storage) or model providers. This occurs because the adapters deserialize client-provided metadata structures directly into UploadedFile instances without validation, which are subsequently fetched using high-privilege server credentials.

Alon Barad
Alon Barad
7 views•7 min read
•about 20 hours ago•GHSA-RM43-82J9-R4MJ
8.2

GHSA-RM43-82J9-R4MJ: Path Traversal (Arbitrary File Read) in atomic-agents-stack Dashboard

A path traversal vulnerability in the optional dashboard server of atomic-agents-stack before version 1.1.0 allows unauthenticated remote attackers to read arbitrary files from the host filesystem.

Amit Schendel
Amit Schendel
6 views•6 min read