Skip to content

fetch() forwards the cleartext credential request body to a cross-origin host on a body-preserving 307/308 redirect

Moderate
markuslf published GHSA-pq9x-4pp3-p5r9 Sep 21, 2026

Software

Linuxfabrik/monitoring-plugins

Affected versions

>= 5.0.0, <= 7.0.0

Patched versions

>= 8.0.0
pip linuxfabrik-lib (pip)
>= 4.0.0, <= 7.1.0
>= 8.0.0

Description

Summary

lib.url.fetch() follows redirects. On a 307 or 308 redirect httpx keeps the method and resends the request body unchanged. The cross-origin guard added for GHSA-4jc5-g844-4x33 only stripped headers, so a request body carrying a password (Keycloak password grant, OpenStack and Huawei OceanStor logins) was sent to whatever host a redirect named.

Impact

A monitored server, or anything able to answer in its place such as a reverse proxy or an open redirect, can answer a login request with a 307 or 308 to a host it controls and receive the cleartext credential. Every consumer that sends a secret in a request body is affected.

Patches

Fixed in linuxfabrik-lib 8.0.0 (commit f605259). monitoring-plugins 5.0.0 to 7.0.0 bundle an affected linuxfabrik-lib, v8.0.0 bundles a fixed one. fetch() refuses a redirect that would resend a request body to another origin and reports it instead.

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
High
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N

CVE ID

No known CVE

Weaknesses

Exposure of Sensitive Information to an Unauthorized Actor

The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information. Learn more on MITRE.

Insufficiently Protected Credentials

The product transmits or stores authentication credentials, but it uses an insecure method that is susceptible to unauthorized interception and/or retrieval. Learn more on MITRE.

Credits