CVE-2024-45336
Medium · 6.1CVSS
6.1
EPSS
0.7%
Published
Jan 28, 2025
CISA due date
—
Cloudanix analysis
A software flaw could accidentally send a user's login information to the wrong website if they are redirected multiple times in a specific way.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- Library
- Class
- Credential Exposure
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerability causes an HTTP client to incorrectly re-attach sensitive headers, such as 'Authorization', to a request following a specific redirect sequence. If a request to a trusted domain is redirected to an external domain, and that external domain issues a subsequent redirect to itself, the client will erroneously include the sensitive headers from the original request. This results in the leakage of credentials or session tokens to the external domain.
Why it matters to the business
This flaw can lead to the exposure of user credentials and session tokens to malicious third parties. An attacker who successfully exploits this could impersonate users, gain unauthorized access to sensitive data, and perform actions on behalf of the compromised user. This poses a significant risk to data confidentiality, user privacy, and can result in account takeovers.
How an attack unfolds
An attacker would first set up a malicious web server. They would then trick a user of a vulnerable application into making a request that gets redirected to this server. For example, the user clicks a link that directs them to a legitimate service, which then issues a redirect to the attacker's server. The attacker's server then issues a second redirect to another page on the same malicious server. Due to the flaw, the user's client would incorrectly attach the original 'Authorization' header (intended for the legitimate service) to the request for the second page on the attacker's server. The attacker can then log this header and steal the user's session token or credentials.
How to fix it
To remediate this vulnerability, update the affected component to a version where the HTTP client correctly handles headers during redirect chains. For the specified Red Hat OpenShift products, update the 'coreos-installer' package and its dependencies to version '0:0.8.0-4.rhaos4.7.el8' or later. For other software, identify the underlying HTTP client library and apply the vendor-supplied patch that corrects this behavior.
How to confirm the fix worked
To validate the fix, create a test that simulates the attack. Set up a local web server that first redirects a request from a trusted origin (e.g., localhost:8000) to a different origin (e.g., localhost:9000), and then has the second origin redirect to itself. Send a request with a test 'Authorization' header using the client being tested. A patched client will not send the 'Authorization' header to the final destination (localhost:9000), while a vulnerable one will. Check the server logs at the final destination to confirm whether the header was received.
Typical attack path
- An attacker establishes a web server they control that is configured to issue redirects.
- The attacker induces a user to initiate a request from a vulnerable client to a legitimate service, where the request includes a sensitive header (e.g., 'Authorization').
- The legitimate service responds with a redirect to the attacker's web server.
- The attacker's server receives the initial redirected request and responds with a second redirect to a different URL on the same attacker-controlled domain.
- The vulnerable client follows the second redirect and incorrectly attaches the sensitive header from the original request.
- The attacker's server receives the request, captures the sensitive header, and gains access to the user's credentials or session token.
How to detect it
Detecting historical exploitation requires analyzing detailed client, network, or web server logs. Look for a sequence of events where a client request containing a sensitive header (like 'Authorization' or 'Cookie') is followed by a redirect to an external domain, which is then immediately followed by another request to that same external domain. Correlating the presence of the original sensitive header in the final request to the external domain is the key indicator of exploitation. This is most feasible with full packet capture (PCAP) analysis or advanced application-level logging.
What your security team should do
- Prioritize patching all client applications that use the vulnerable HTTP library, starting with those that handle sensitive data or are used by privileged accounts.
- Review and enforce network egress filtering to restrict client applications from connecting to untrusted or non-whitelisted external domains, which can limit the impact of a successful exploit.
- If immediate patching is not feasible, consider deploying a network proxy that can inspect and strip sensitive headers like 'Authorization' from requests that are being redirected across different domains.
The record
The HTTP client drops sensitive headers after following a cross-domain redirect. For example, a request to a.com/ containing an Authorization header which is redirected to b.com/ will not send that header to b.com. In the event that the client received a subsequent same-domain redirect, however, the sensitive headers would be restored. For example, a chain of redirects from a.com/, to b.com/1, and finally to b.com/2 would incorrectly send the Authorization header to b.com/2.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | stdlib | 0 | 1.22.11 |
| AlmaLinux:10 | delve | 0 | 1.24.1-1.el10_0 |
| AlmaLinux:10 | go-toolset | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-bin | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-docs | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-misc | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-src | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:10 | golang-tests | 0 | 1.23.7-1.el10_0.alma.1 |
| AlmaLinux:8 | delve | 0 | 1.24.1-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | go-toolset | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-bin | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-docs | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-misc | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-src | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| AlmaLinux:8 | golang-tests | 0 | 1.23.6-1.module_el8.10.0+3977+66935a26 |
| Bitnami | golang | 0 | 1.22.11 |
| Chainguard | aactl | 0 | 0.4.12-r22 |
| Chainguard | actions-runner-controller | 0 | 0.10.1-r2 |
| Chainguard | actions-runner-controller-fips | 0 | 0.10.1-r2 |
| Chainguard | age | 0 | 1.2.1-r1 |
| Chainguard | age-fips | 0 | 1.2.1-r1 |
| Chainguard | amazon-cloudwatch-agent-fips | 0 | 1.300052.0-r0 |
| Chainguard | amazon-k8s-cni | 0 | 1.19.2-r1 |
| Chainguard | amazon-k8s-cni-fips | 0 | 1.19.2-r2 |
| Chainguard | amazon-k8s-cni-init-fips | 0 | 1.19.2-r2 |
| Chainguard | amazon-k8s-cni-init-fips-compat | 0 | 1.19.2-r2 |
| Chainguard | ansible-operator | 0 | 1.37.1-r1 |
| Chainguard | apache-beam-java-11-sdk | 0 | 2.62.0-r0 |
| Chainguard | apache-beam-java-17-sdk | 0 | 2.62.0-r0 |
| Chainguard | apache-beam-java-21-sdk | 0 | 2.62.0-r0 |
| Chainguard | apache-beam-java-sdk | 0 | 2.62.0-r0 |
| Chainguard | apache-beam-python-3.11-sdk | 0 | 2.62.0-r0 |
| Chainguard | argo-cd-fips-2.10 | 0 | 2.10.18-r5 |
| Chainguard | argo-cd-fips-2.10-compat | 0 | 2.10.18-r5 |
| Chainguard | argo-cd-fips-2.10-repo-server | 0 | 2.10.18-r5 |
| Chainguard | argo-cd-fips-2.11 | 0 | 2.11.13-r0 |
| Chainguard | argo-cd-fips-2.11-compat | 0 | 2.11.13-r0 |
| Chainguard | argo-cd-fips-2.11-repo-server | 0 | 2.11.13-r0 |
| Chainguard | argo-cd-fips-2.12 | 0 | 2.12.10-r0 |
| Chainguard | argo-cd-fips-2.12-compat | 0 | 2.12.10-r0 |
| Chainguard | argo-cd-fips-2.12-repo-server | 0 | 2.12.10-r0 |
| Chainguard | argo-cd-fips-2.13 | 0 | 2.13.4-r0 |
| Chainguard | argo-events | 0 | 1.9.5-r1 |
| Chainguard | argo-events-fips | 0 | 1.9.5-r1 |
| Chainguard | argo-rollouts | 0 | 1.7.2-r4 |
| Chainguard | argo-workflow-cli | 0 | 3.6.3-r1 |
| Chainguard | argo-workflow-controller | 0 | 3.6.3-r1 |
| Chainguard | argo-workflow-controller-compat | 0 | 3.6.3-r1 |
| Chainguard | argo-workflow-executor | 0 | 3.6.3-r1 |
| Chainguard | argo-workflow-executor-compat | 0 | 3.6.3-r1 |
| Chainguard | argo-workflows | 0 | 3.6.3-r1 |
| Chainguard | argo-workflows-fips | 0 | 3.6.2-r4 |
| Chainguard | argo-workflows-known-hosts | 0 | 3.6.3-r1 |
| Chainguard | argo-workflows-ui | 0 | 3.6.3-r1 |
| Chainguard | atlantis | 0 | 0.32.0-r1 |
| Chainguard | atlantis-fips | 0 | 0.32.0-r1 |
| Chainguard | authservice-fips | 0 | 1.0.4-r0 |
| Chainguard | aws-application-networking-k8s | 0 | 1.1.0-r2 |
| Chainguard | aws-ebs-csi-driver | 0 | 1.52.1-r0 |
| Chainguard | aws-efs-csi-driver | 0 | 2.1.4-r1 |
| Chainguard | aws-efs-csi-driver-fips | 0 | 2.1.4-r1 |
| Chainguard | aws-flb-cloudwatch | 0 | 1.9.4-r14 |
| Chainguard | aws-flb-cloudwatch-compat | 0 | 1.9.4-r14 |
| Chainguard | aws-flb-cloudwatch-compat-fips | 0 | 1.9.4-r7 |
| Chainguard | aws-flb-cloudwatch-fips | 0 | 1.9.4-r7 |
| Chainguard | aws-flb-firehose | 0 | 1.7.2-r14 |
| Chainguard | aws-flb-firehose-compat | 0 | 1.7.2-r14 |
| Chainguard | aws-flb-firehose-compat-fips | 0 | 1.7.2-r7 |
| Chainguard | aws-flb-firehose-fips | 0 | 1.7.2-r7 |
| Chainguard | aws-flb-kinesis | 0 | 1.10.2-r15 |
| Chainguard | aws-flb-kinesis-fips | 0 | 1.10.2-r8 |
| Chainguard | aws-load-balancer-controller | 0 | 2.11.0-r2 |
| Chainguard | aws-load-balancer-controller-fips | 0 | 2.12.0-r1 |
| Chainguard | aws-network-policy-agent | 0 | 1.1.6-r1 |
| Chainguard | aws-network-policy-agent-compat | 0 | 1.1.6-r1 |
| Chainguard | aws-network-policy-agent-fips | 0 | 1.1.6-r1 |
| Chainguard | aws-privateca-issuer | 0 | 1.4.0-r3 |
| Chainguard | aws-privateca-issuer-compat-fips | 0 | 1.4.0-r3 |
| Chainguard | aws-privateca-issuer-fips | 0 | 1.4.0-r3 |
| Chainguard | aws-signer-notation-plugin | 0 | 1.0.350-r1 |
| Chainguard | aws-signer-notation-plugin-fips | 0 | 1.0.350-r1 |
| Chainguard | azure-aad-pod-identity-mic | 0 | 1.8.17-r16 |
| Chainguard | azuredisk-csi-1.28 | 0 | 1.28.11-r6 |
| Chainguard | azuredisk-csi-1.29 | 0 | 1.29.12-r1 |
| Chainguard | azuredisk-csi-1.29-compat | 0 | 1.29.12-r1 |
| Chainguard | azuredisk-csi-1.30 | 0 | 1.30.7-r1 |
| Chainguard | azuredisk-csi-1.31 | 0 | 1.31.2-r1 |
| Chainguard | azuredisk-csi-fips-1.28 | 0 | 1.28.11-r5 |
| Chainguard | azuredisk-csi-fips-1.29 | 0 | 1.29.12-r1 |
| Chainguard | azuredisk-csi-fips-1.30 | 0 | 1.30.7-r1 |
| Chainguard | azuredisk-csi-fips-1.31 | 0 | 1.31.2-r1 |
| Chainguard | bank-vaults | 0 | 1.20.4-r23 |
| Chainguard | bank-vaults-fips | 0 | 1.20.4-r19 |
| Chainguard | bank-vaults-template | 0 | 1.20.4-r23 |
| Chainguard | bank-vaults-template-fips | 0 | 1.20.4-r19 |
| Chainguard | bazelisk | 0 | 1.25.0-r1 |
| Chainguard | bazelisk-default | 0 | 1.25.0-r1 |
| Chainguard | beats-7 | 0 | 7.17.27-r1 |
| Chainguard | beats-8 | 0 | 8.17.1-r0 |
| Chainguard | beats-fips-7 | 0 | 7.17.27-r1 |
| Chainguard | beats-fips-8 | 0 | 8.17.1-r0 |
| Chainguard | bom | 0 | 0.6.0-r15 |
| Chainguard | boring-registry | 0 | 0.15.5-r1 |
| Chainguard | boring-registry-fips | 0 | 0.15.5-r1 |
| Chainguard | buildkitd-fips | 0 | 0.19.0-r0 |
| Chainguard | cadvisor | 0 | 0.51.0-r3 |
| Chainguard | cadvisor-fips | 0 | 0.50.0-r4 |
| Chainguard | calico-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-3.29 | 0 | 3.29.1-r4 |
| Chainguard | calico-apiserver-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-apiserver-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-apiserver-compat-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-apiserver-compat-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-apiserver-compat-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-apiserver-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-apiserver-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-app-policy-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-app-policy-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-app-policy-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-app-policy-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-cni-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-cni-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-cni-compat-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-cni-compat-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-cni-compat-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-cni-compat-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-cni-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-cni-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-felix-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-felix-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-felix-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-felix-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-fips-3.28 | 0 | 3.28.2-r5 |
| Chainguard | calico-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-key-cert-provisioner-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-key-cert-provisioner-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-kube-controllers-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-kube-controllers-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-kube-controllers-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-kube-controllers-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-node-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-node-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-node-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-node-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-pod2daemon-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-pod2daemon-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-pod2daemon-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-pod2daemon-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-pod2daemon-flexvol-compat-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-pod2daemon-flexvol-compat-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-pod2daemon-flexvol-compat-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typha-client-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typha-client-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-typha-client-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typha-client-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calico-typhad-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typhad-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calico-typhad-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calico-typhad-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | calicoctl-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calicoctl-3.28 | 0 | 3.28.2-r7 |
| Chainguard | calicoctl-fips-3.27 | 0 | 3.27.5-r5 |
| Chainguard | calicoctl-fips-3.29 | 0 | 3.29.1-r5 |
| Chainguard | capslock | 0 | 0.2.7-r1 |
| Chainguard | cass-operator | 0 | 1.23.0-r2 |
| Chainguard | cass-operator-compat-fips | 0 | 1.23.0-r2 |
| Chainguard | cass-operator-fips | 0 | 1.23.0-r2 |
| Chainguard | cass-operator-fips-no-pvc-delete | 0 | 1.23.0-r2 |
| Chainguard | cass-operator-fips-no-pvc-delete-compat | 0 | 1.23.0-r2 |
| Chainguard | cert-manager-1.12 | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.12-acmesolver | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.12-cainjector | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.12-controller | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.12-webhook | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-1.15 | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-acmesolver | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-cainjector | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-controller | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-startupapicheck | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.15-webhook | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-1.16 | 0 | 1.16.3-r1 |
| Chainguard | cert-manager-acmesolver-1.12 | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-acmesolver-1.12-bitnami-compat | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-acmesolver-1.12-iamguarded-compat | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-acmesolver-1.15 | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-acmesolver-1.15-bitnami-compat | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-acmesolver-1.15-iamguarded-compat | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-acmesolver-fips-1.16 | 0 | 1.16.3-r1 |
| Chainguard | cert-manager-cainjector-1.12 | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-cainjector-1.12-bitnami-compat | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-cainjector-1.12-iamguarded-compat | 0 | 1.12.15-r1 |
| Chainguard | cert-manager-cainjector-1.15 | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-cainjector-1.15-bitnami-compat | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-cainjector-1.15-iamguarded-compat | 0 | 1.15.5-r1 |
| Chainguard | cert-manager-cainjector-fips-1.16 | 0 | 1.16.3-r1 |
| Chainguard | cert-manager-cmctl | 0 | 2.1.1-r4 |
Related vulnerabilities
- CVE-2025-68121 During session resumption in crypto/tls, if the underlying Config has its ClientCAs or… Also affects stdlib
- CVE-2025-22873 It was possible to improperly access the parent directory of an os.Root by opening a… Also affects stdlib
- GO-2026-4403 Improper access to parent directory of root in os Also affects stdlib
- CVE-2025-61726 The net/url package does not set a limit on the number of query parameters in a query. Also affects stdlib
- CVE-2025-61728 archive/zip uses a super-linear file name indexing algorithm that is invoked the first… Also affects stdlib
- CVE-2025-61730 During the TLS 1.3 handshake if multiple messages are sent in records that span… Also affects stdlib
- CVE-2025-61727 An excluded subdomain constraint in a certificate chain does not restrict the usage of… Also affects stdlib
- CVE-2025-61729 Within HostnameError.Error(), when constructing an error string, there is no limit to the… Also affects stdlib