CVE-2026-48856 (GCVE-0-2026-48856)

Vulnerability from cvelistv5 – Published: 2026-06-10 14:41 – Updated: 2026-09-24 20:37
VLAI
Title
httpc leaks Authorization header to cross-origin redirect targets
Summary
Sensitive Data Exposure vulnerability in Erlang OTP inets (httpc_response module) allows Retrieve Embedded Sensitive Data. The httpc client forwards the Authorization and Proxy-Authorization request headers to redirect targets without checking whether the redirect crosses an origin boundary. httpc_response:redirect/2 constructs the redirected request by updating only the host field of the header record; all other fields (including authorization and proxy_authorization) are copied verbatim. The redirect target host is never compared against the original host. autoredirect defaults to true, so this affects all httpc callers that do not explicitly disable automatic redirects. An attacker who controls a server that the victim contacts via httpc can issue a cross-origin 3xx redirect to a server they also control. The Authorization header (including Basic credentials derived from URL userinfo via httpc_request:handle_user_info/2) is forwarded to the redirect target, allowing credential theft. The same applies to the Proxy-Authorization header. This vulnerability is associated with program files lib/inets/src/http_client/httpc_response.erl. This issue affects OTP from OTP 17.0 before OTP 27.3.4.13, OTP 28.5.0.2, and OTP 29.0.2, corresponding to inets from 5.10 before 9.3.2.6, 9.6.2.2, and 9.7.1. Whether OTP before OTP 17.0, corresponding to inets before 5.10, is affected is unknown.
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-06-10 16:23 UTC
CWE
  • CWE-601 - URL Redirection to Untrusted Site ('Open Redirect')
Assigner
Impacted products
Vendor Product Version CPE status
Erlang OTP Affected: 17.0 , < * (otp)
    cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:*
Create a notification for this product.
Erlang OTP Affected: 5.10 , < * (otp)
    cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:*
Create a notification for this product.
Erlang OTP Affected: 84adefa331c4159d432d22840663c38f155cd4c1 , < 688d748d6f7a6a06b13b662a1d3de8af97079612 (git)
Unaffected: 688d748d6f7a6a06b13b662a1d3de8af97079612 , < * (git)
    cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:*
Create a notification for this product.
Date Public
2026-06-10 14:41
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-48856",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-06-10T16:23:52.053802Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-06-10T16:24:02.066Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "cpes": [
            "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unknown",
          "modules": [
            "httpc_response"
          ],
          "packageName": "otp",
          "packageURL": "pkg:software-id/erlang.org/otp",
          "product": "OTP",
          "programFiles": [
            "lib/inets/src/http_client/httpc_response.erl"
          ],
          "programRoutines": [
            {
              "name": "httpc_response:redirect/2"
            }
          ],
          "vendor": "Erlang",
          "versions": [
            {
              "changes": [
                {
                  "at": "27.3.4.13",
                  "status": "unaffected"
                },
                {
                  "at": "28.5.0.2",
                  "status": "unaffected"
                },
                {
                  "at": "29.0.2",
                  "status": "unaffected"
                }
              ],
              "lessThan": "*",
              "status": "affected",
              "version": "17.0",
              "versionType": "otp"
            }
          ]
        },
        {
          "cpes": [
            "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unknown",
          "modules": [
            "httpc_response"
          ],
          "packageName": "inets",
          "packageURL": "pkg:otp/inets?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
          "product": "OTP",
          "programFiles": [
            "src/http_client/httpc_response.erl"
          ],
          "programRoutines": [
            {
              "name": "httpc_response:redirect/2"
            }
          ],
          "repo": "https://github.com/erlang/otp",
          "vendor": "Erlang",
          "versions": [
            {
              "changes": [
                {
                  "at": "9.3.2.6",
                  "status": "unaffected"
                },
                {
                  "at": "9.6.2.2",
                  "status": "unaffected"
                },
                {
                  "at": "9.7.1",
                  "status": "unaffected"
                }
              ],
              "lessThan": "*",
              "status": "affected",
              "version": "5.10",
              "versionType": "otp"
            }
          ]
        },
        {
          "collectionURL": "https://github.com",
          "cpes": [
            "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unknown",
          "modules": [
            "httpc_response"
          ],
          "packageName": "erlang/otp",
          "packageURL": "pkg:github/erlang/otp",
          "product": "OTP",
          "programFiles": [
            "lib/inets/src/http_client/httpc_response.erl"
          ],
          "programRoutines": [
            {
              "name": "httpc_response:redirect/2"
            }
          ],
          "repo": "https://github.com/erlang/otp",
          "vendor": "Erlang",
          "versions": [
            {
              "lessThan": "688d748d6f7a6a06b13b662a1d3de8af97079612",
              "status": "affected",
              "version": "84adefa331c4159d432d22840663c38f155cd4c1",
              "versionType": "git"
            },
            {
              "lessThan": "*",
              "status": "unaffected",
              "version": "688d748d6f7a6a06b13b662a1d3de8af97079612",
              "versionType": "git"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "27.3.4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "28.5.0.2",
                  "versionStartIncluding": "28.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "29.0.2",
                  "versionStartIncluding": "29.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ],
          "operator": "AND"
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Jonatan M\u00e4nnchen / EEF"
        },
        {
          "lang": "en",
          "type": "remediation developer",
          "value": "Jonatan M\u00e4nnchen / EEF"
        },
        {
          "lang": "en",
          "type": "remediation reviewer",
          "value": "Ingela Anderton Andin"
        },
        {
          "lang": "en",
          "type": "remediation reviewer",
          "value": "Konrad Pietrzak"
        }
      ],
      "datePublic": "2026-06-10T14:41:51.000Z",
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eSensitive Data Exposure vulnerability in Erlang OTP inets (\u003ccode\u003ehttpc_response\u003c/code\u003e module) allows Retrieve Embedded Sensitive Data.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ehttpc\u003c/code\u003e client forwards the \u003ccode\u003eAuthorization\u003c/code\u003e and \u003ccode\u003eProxy-Authorization\u003c/code\u003e request headers to redirect targets without checking whether the redirect crosses an origin boundary. \u003ccode\u003ehttpc_response:redirect/2\u003c/code\u003e constructs the redirected request by updating only the \u003ccode\u003ehost\u003c/code\u003e field of the header record; all other fields (including \u003ccode\u003eauthorization\u003c/code\u003e and \u003ccode\u003eproxy_authorization\u003c/code\u003e) are copied verbatim. The redirect target host is never compared against the original host.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eautoredirect\u003c/code\u003e defaults to \u003ccode\u003etrue\u003c/code\u003e, so this affects all \u003ccode\u003ehttpc\u003c/code\u003e callers that do not explicitly disable automatic redirects.\u003c/p\u003e\n\u003cp\u003eAn attacker who controls a server that the victim contacts via \u003ccode\u003ehttpc\u003c/code\u003e can issue a cross-origin 3xx redirect to a server they also control. The \u003ccode\u003eAuthorization\u003c/code\u003e header (including Basic credentials derived from URL userinfo via \u003ccode\u003ehttpc_request:handle_user_info/2\u003c/code\u003e) is forwarded to the redirect target, allowing credential theft. The same applies to the \u003ccode\u003eProxy-Authorization\u003c/code\u003e header.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program files \u003ccode\u003elib/inets/src/http_client/httpc_response.erl\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.0 before OTP\u0026nbsp;27.3.4.13, OTP\u0026nbsp;28.5.0.2, and OTP\u0026nbsp;29.0.2, corresponding to inets from 5.10 before 9.3.2.6, 9.6.2.2, and 9.7.1. Whether OTP before OTP\u0026nbsp;17.0, corresponding to inets before 5.10, is affected is unknown.\u003c/p\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "Sensitive Data Exposure vulnerability in Erlang OTP inets (`httpc_response` module) allows Retrieve Embedded Sensitive Data.\n\nThe `httpc` client forwards the `Authorization` and `Proxy-Authorization` request headers to redirect targets without checking whether the redirect crosses an origin boundary. `httpc_response:redirect/2` constructs the redirected request by updating only the `host` field of the header record; all other fields (including `authorization` and `proxy_authorization`) are copied verbatim. The redirect target host is never compared against the original host.\n\n`autoredirect` defaults to `true`, so this affects all `httpc` callers that do not explicitly disable automatic redirects.\n\nAn attacker who controls a server that the victim contacts via `httpc` can issue a cross-origin 3xx redirect to a server they also control. The `Authorization` header (including Basic credentials derived from URL userinfo via `httpc_request:handle_user_info/2`) is forwarded to the redirect target, allowing credential theft. The same applies to the `Proxy-Authorization` header.\n\nThis vulnerability is associated with program files `lib/inets/src/http_client/httpc_response.erl`.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to inets from 5.10 before 9.3.2.6, 9.6.2.2, and 9.7.1. Whether OTP before OTP\u00a017.0, corresponding to inets before 5.10, is affected is unknown."
            }
          ],
          "value": "Sensitive Data Exposure vulnerability in Erlang OTP inets (httpc_response module) allows Retrieve Embedded Sensitive Data.\n\nThe httpc client forwards the Authorization and Proxy-Authorization request headers to redirect targets without checking whether the redirect crosses an origin boundary. httpc_response:redirect/2 constructs the redirected request by updating only the host field of the header record; all other fields (including authorization and proxy_authorization) are copied verbatim. The redirect target host is never compared against the original host.\n\nautoredirect defaults to true, so this affects all httpc callers that do not explicitly disable automatic redirects.\n\nAn attacker who controls a server that the victim contacts via httpc can issue a cross-origin 3xx redirect to a server they also control. The Authorization header (including Basic credentials derived from URL userinfo via httpc_request:handle_user_info/2) is forwarded to the redirect target, allowing credential theft. The same applies to the Proxy-Authorization header.\n\nThis vulnerability is associated with program files lib/inets/src/http_client/httpc_response.erl.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to inets from 5.10 before 9.3.2.6, 9.6.2.2, and 9.7.1. Whether OTP before OTP\u00a017.0, corresponding to inets before 5.10, is affected is unknown."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-37",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-37 Retrieve Embedded Sensitive Data"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NOT_DEFINED",
            "Recovery": "NOT_DEFINED",
            "Safety": "NOT_DEFINED",
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "attackVector": "NETWORK",
            "baseScore": 7.1,
            "baseSeverity": "HIGH",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "PASSIVE",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
            "version": "4.0",
            "vulnAvailabilityImpact": "NONE",
            "vulnConfidentialityImpact": "HIGH",
            "vulnIntegrityImpact": "NONE",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-601",
              "description": "CWE-601 URL Redirection to Untrusted Site (\u0027Open Redirect\u0027)",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-24T20:37:53.721Z",
        "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "shortName": "EEF"
      },
      "references": [
        {
          "tags": [
            "vendor-advisory",
            "related"
          ],
          "url": "https://github.com/erlang/otp/security/advisories/GHSA-m75x-4vwg-ggjh"
        },
        {
          "name": "EEF CNA record for CVE-2026-48856",
          "tags": [
            "related"
          ],
          "url": "https://cna.erlef.org/cves/CVE-2026-48856.html"
        },
        {
          "name": "OSV record EEF-CVE-2026-48856",
          "tags": [
            "related"
          ],
          "url": "https://osv.dev/vulnerability/EEF-CVE-2026-48856"
        },
        {
          "name": "Erlang/OTP version ordering",
          "tags": [
            "x_version-scheme"
          ],
          "url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
        },
        {
          "name": "Fix commit 688d748 in erlang/otp",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/erlang/otp/commit/688d748d6f7a6a06b13b662a1d3de8af97079612"
        }
      ],
      "source": {
        "discovery": "INTERNAL"
      },
      "title": "httpc leaks Authorization header to cross-origin redirect targets",
      "workarounds": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003e{autoredirect, false}\u003c/code\u003e in the \u003ccode\u003ehttpc:request/4\u003c/code\u003e options and handle redirects manually, stripping the \u003ccode\u003eAuthorization\u003c/code\u003e header when the redirect crosses an origin boundary.\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003ehttpc\u003c/code\u003e is only used to contact trusted servers that will not issue cross-origin redirects.\u003c/li\u003e\n\u003c/ul\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "* Set `{autoredirect, false}` in the `httpc:request/4` options and handle redirects manually, stripping the `Authorization` header when the redirect crosses an origin boundary.\n* Ensure that `httpc` is only used to contact trusted servers that will not issue cross-origin redirects."
            }
          ],
          "value": "* Set {autoredirect, false} in the httpc:request/4 options and handle redirects manually, stripping the Authorization header when the redirect crosses an origin boundary.\n* Ensure that httpc is only used to contact trusted servers that will not issue cross-origin redirects."
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
    "assignerShortName": "EEF",
    "cveId": "CVE-2026-48856",
    "datePublished": "2026-06-10T14:41:51.616Z",
    "dateReserved": "2026-05-25T20:44:10.697Z",
    "dateUpdated": "2026-09-24T20:37:53.721Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-48856",
      "date": "2026-09-28",
      "epss": "0.00558",
      "percentile": "0.44292"
    },
    "microsoft_vex": {
      "current_release_date": "2026-06-18T14:42:39.000Z",
      "cve": "CVE-2026-48856",
      "id": "msrc_CVE-2026-48856",
      "initial_release_date": "2026-06-02T00:00:00.000Z",
      "product_status:fixed": "1",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "httpc leaks Authorization header to cross-origin redirect targets",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-48856.json",
      "version": "2"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "cpes": [
                  "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unknown",
                "modules": [
                  "httpc_response"
                ],
                "packageName": "otp",
                "packageURL": "pkg:software-id/erlang.org/otp",
                "product": "OTP",
                "programFiles": [
                  "lib/inets/src/http_client/httpc_response.erl"
                ],
                "programRoutines": [
                  {
                    "name": "httpc_response:redirect/2"
                  }
                ],
                "vendor": "Erlang",
                "versions": [
                  {
                    "changes": [
                      {
                        "at": "27.3.4.13",
                        "status": "unaffected"
                      },
                      {
                        "at": "28.5.0.2",
                        "status": "unaffected"
                      },
                      {
                        "at": "29.0.2",
                        "status": "unaffected"
                      }
                    ],
                    "lessThan": "*",
                    "status": "affected",
                    "version": "17.0",
                    "versionType": "otp"
                  }
                ]
              },
              {
                "cpes": [
                  "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unknown",
                "modules": [
                  "httpc_response"
                ],
                "packageName": "inets",
                "packageURL": "pkg:otp/inets?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
                "product": "OTP",
                "programFiles": [
                  "src/http_client/httpc_response.erl"
                ],
                "programRoutines": [
                  {
                    "name": "httpc_response:redirect/2"
                  }
                ],
                "repo": "https://github.com/erlang/otp",
                "vendor": "Erlang",
                "versions": [
                  {
                    "changes": [
                      {
                        "at": "9.3.2.6",
                        "status": "unaffected"
                      },
                      {
                        "at": "9.6.2.2",
                        "status": "unaffected"
                      },
                      {
                        "at": "9.7.1",
                        "status": "unaffected"
                      }
                    ],
                    "lessThan": "*",
                    "status": "affected",
                    "version": "5.10",
                    "versionType": "otp"
                  }
                ]
              },
              {
                "collectionURL": "https://github.com",
                "cpes": [
                  "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unknown",
                "modules": [
                  "httpc_response"
                ],
                "packageName": "erlang/otp",
                "packageURL": "pkg:github/erlang/otp",
                "product": "OTP",
                "programFiles": [
                  "lib/inets/src/http_client/httpc_response.erl"
                ],
                "programRoutines": [
                  {
                    "name": "httpc_response:redirect/2"
                  }
                ],
                "repo": "https://github.com/erlang/otp",
                "vendor": "Erlang",
                "versions": [
                  {
                    "lessThan": "688d748d6f7a6a06b13b662a1d3de8af97079612",
                    "status": "affected",
                    "version": "84adefa331c4159d432d22840663c38f155cd4c1",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "*",
                    "status": "unaffected",
                    "version": "688d748d6f7a6a06b13b662a1d3de8af97079612",
                    "versionType": "git"
                  }
                ]
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/inets:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "0B10D06D-6CAA-4AE6-9971-9D21A7347468",
                    "versionEndExcluding": "9.3.2.6",
                    "versionStartIncluding": "5.10",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/inets:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "FF460097-653F-4CA0-8FF7-1F674F6D956E",
                    "versionEndExcluding": "9.6.2.2",
                    "versionStartIncluding": "9.6",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/inets:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "85B29B67-5B41-4987-A71F-A7A0458E49E4",
                    "versionEndExcluding": "9.7.1",
                    "versionStartIncluding": "9.7",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "BF42A5F2-4C27-43FE-B5FA-17A3422B9649",
                    "versionEndExcluding": "27.3.4.13",
                    "versionStartIncluding": "17.0",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "902ED4C3-B9DE-4ABC-9BEA-D23DA4F5D373",
                    "versionEndExcluding": "28.5.0.2",
                    "versionStartIncluding": "28.0",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "F4AB1573-4E81-4338-B65A-B3C94C7249FA",
                    "versionEndExcluding": "29.0.2",
                    "versionStartIncluding": "29.0",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "Sensitive Data Exposure vulnerability in Erlang OTP inets (httpc_response module) allows Retrieve Embedded Sensitive Data.\n\nThe httpc client forwards the Authorization and Proxy-Authorization request headers to redirect targets without checking whether the redirect crosses an origin boundary. httpc_response:redirect/2 constructs the redirected request by updating only the host field of the header record; all other fields (including authorization and proxy_authorization) are copied verbatim. The redirect target host is never compared against the original host.\n\nautoredirect defaults to true, so this affects all httpc callers that do not explicitly disable automatic redirects.\n\nAn attacker who controls a server that the victim contacts via httpc can issue a cross-origin 3xx redirect to a server they also control. The Authorization header (including Basic credentials derived from URL userinfo via httpc_request:handle_user_info/2) is forwarded to the redirect target, allowing credential theft. The same applies to the Proxy-Authorization header.\n\nThis vulnerability is associated with program files lib/inets/src/http_client/httpc_response.erl.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to inets from 5.10 before 9.3.2.6, 9.6.2.2, and 9.7.1. Whether OTP before OTP\u00a017.0, corresponding to inets before 5.10, is affected is unknown."
          }
        ],
        "id": "CVE-2026-48856",
        "lastModified": "2026-09-24T21:17:14.390",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "NONE",
                "baseScore": 6.5,
                "baseSeverity": "MEDIUM",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "NONE",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N",
                "version": "3.1"
              },
              "exploitabilityScore": 2.8,
              "impactScore": 3.6,
              "source": "nvd@nist.gov",
              "type": "Primary"
            }
          ],
          "cvssMetricV40": [
            {
              "cvssData": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "NONE",
                "attackVector": "NETWORK",
                "availabilityRequirement": "NOT_DEFINED",
                "baseScore": 7.1,
                "baseSeverity": "HIGH",
                "confidentialityRequirement": "NOT_DEFINED",
                "exploitMaturity": "NOT_DEFINED",
                "integrityRequirement": "NOT_DEFINED",
                "modifiedAttackComplexity": "NOT_DEFINED",
                "modifiedAttackRequirements": "NOT_DEFINED",
                "modifiedAttackVector": "NOT_DEFINED",
                "modifiedPrivilegesRequired": "NOT_DEFINED",
                "modifiedSubAvailabilityImpact": "NOT_DEFINED",
                "modifiedSubConfidentialityImpact": "NOT_DEFINED",
                "modifiedSubIntegrityImpact": "NOT_DEFINED",
                "modifiedUserInteraction": "NOT_DEFINED",
                "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
                "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
                "modifiedVulnIntegrityImpact": "NOT_DEFINED",
                "privilegesRequired": "NONE",
                "providerUrgency": "NOT_DEFINED",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "NONE",
                "subIntegrityImpact": "NONE",
                "userInteraction": "PASSIVE",
                "valueDensity": "NOT_DEFINED",
                "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
                "version": "4.0",
                "vulnAvailabilityImpact": "NONE",
                "vulnConfidentialityImpact": "HIGH",
                "vulnIntegrityImpact": "NONE",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
              "type": "Secondary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2026-48856",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-06-10T16:23:52.053802Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2026-06-10T16:17:10.053",
        "references": [
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Mitigation",
              "Third Party Advisory"
            ],
            "url": "https://cna.erlef.org/cves/CVE-2026-48856.html"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Patch"
            ],
            "url": "https://github.com/erlang/otp/commit/688d748d6f7a6a06b13b662a1d3de8af97079612"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Mitigation",
              "Vendor Advisory"
            ],
            "url": "https://github.com/erlang/otp/security/advisories/GHSA-m75x-4vwg-ggjh"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Mitigation",
              "Third Party Advisory"
            ],
            "url": "https://osv.dev/vulnerability/EEF-CVE-2026-48856"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Product"
            ],
            "url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
          }
        ],
        "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "vulnStatus": "Modified",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-601"
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "type": "Secondary"
          }
        ]
      }
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2026-48856",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2026-06-10T16:23:52.053802Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2026-06-10T16:23:58.154Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "cpes": [
                "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unknown",
              "modules": [
                "httpc_response"
              ],
              "packageName": "otp",
              "packageURL": "pkg:software-id/erlang.org/otp",
              "product": "OTP",
              "programFiles": [
                "lib/inets/src/http_client/httpc_response.erl"
              ],
              "programRoutines": [
                {
                  "name": "httpc_response:redirect/2"
                }
              ],
              "vendor": "Erlang",
              "versions": [
                {
                  "changes": [
                    {
                      "at": "27.3.4.13",
                      "status": "unaffected"
                    },
                    {
                      "at": "28.5.0.2",
                      "status": "unaffected"
                    },
                    {
                      "at": "29.0.2",
                      "status": "unaffected"
                    }
                  ],
                  "lessThan": "*",
                  "status": "affected",
                  "version": "17.0",
                  "versionType": "otp"
                }
              ]
            },
            {
              "cpes": [
                "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unknown",
              "modules": [
                "httpc_response"
              ],
              "packageName": "inets",
              "packageURL": "pkg:otp/inets?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
              "product": "OTP",
              "programFiles": [
                "src/http_client/httpc_response.erl"
              ],
              "programRoutines": [
                {
                  "name": "httpc_response:redirect/2"
                }
              ],
              "repo": "https://github.com/erlang/otp",
              "vendor": "Erlang",
              "versions": [
                {
                  "changes": [
                    {
                      "at": "9.3.2.6",
                      "status": "unaffected"
                    },
                    {
                      "at": "9.6.2.2",
                      "status": "unaffected"
                    },
                    {
                      "at": "9.7.1",
                      "status": "unaffected"
                    }
                  ],
                  "lessThan": "*",
                  "status": "affected",
                  "version": "5.10",
                  "versionType": "otp"
                }
              ]
            },
            {
              "collectionURL": "https://github.com",
              "cpes": [
                "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unknown",
              "modules": [
                "httpc_response"
              ],
              "packageName": "erlang/otp",
              "packageURL": "pkg:github/erlang/otp",
              "product": "OTP",
              "programFiles": [
                "lib/inets/src/http_client/httpc_response.erl"
              ],
              "programRoutines": [
                {
                  "name": "httpc_response:redirect/2"
                }
              ],
              "repo": "https://github.com/erlang/otp",
              "vendor": "Erlang",
              "versions": [
                {
                  "lessThan": "688d748d6f7a6a06b13b662a1d3de8af97079612",
                  "status": "affected",
                  "version": "84adefa331c4159d432d22840663c38f155cd4c1",
                  "versionType": "git"
                },
                {
                  "lessThan": "*",
                  "status": "unaffected",
                  "version": "688d748d6f7a6a06b13b662a1d3de8af97079612",
                  "versionType": "git"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "27.3.4.13",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "28.5.0.2",
                      "versionStartIncluding": "28.0",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "29.0.2",
                      "versionStartIncluding": "29.0",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ],
              "operator": "AND"
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Jonatan M\u00e4nnchen / EEF"
            },
            {
              "lang": "en",
              "type": "remediation developer",
              "value": "Jonatan M\u00e4nnchen / EEF"
            },
            {
              "lang": "en",
              "type": "remediation reviewer",
              "value": "Ingela Anderton Andin"
            },
            {
              "lang": "en",
              "type": "remediation reviewer",
              "value": "Konrad Pietrzak"
            }
          ],
          "datePublic": "2026-06-10T14:41:51.000Z",
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eSensitive Data Exposure vulnerability in Erlang OTP inets (\u003ccode\u003ehttpc_response\u003c/code\u003e module) allows Retrieve Embedded Sensitive Data.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ehttpc\u003c/code\u003e client forwards the \u003ccode\u003eAuthorization\u003c/code\u003e and \u003ccode\u003eProxy-Authorization\u003c/code\u003e request headers to redirect targets without checking whether the redirect crosses an origin boundary. \u003ccode\u003ehttpc_response:redirect/2\u003c/code\u003e constructs the redirected request by updating only the \u003ccode\u003ehost\u003c/code\u003e field of the header record; all other fields (including \u003ccode\u003eauthorization\u003c/code\u003e and \u003ccode\u003eproxy_authorization\u003c/code\u003e) are copied verbatim. The redirect target host is never compared against the original host.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eautoredirect\u003c/code\u003e defaults to \u003ccode\u003etrue\u003c/code\u003e, so this affects all \u003ccode\u003ehttpc\u003c/code\u003e callers that do not explicitly disable automatic redirects.\u003c/p\u003e\n\u003cp\u003eAn attacker who controls a server that the victim contacts via \u003ccode\u003ehttpc\u003c/code\u003e can issue a cross-origin 3xx redirect to a server they also control. The \u003ccode\u003eAuthorization\u003c/code\u003e header (including Basic credentials derived from URL userinfo via \u003ccode\u003ehttpc_request:handle_user_info/2\u003c/code\u003e) is forwarded to the redirect target, allowing credential theft. The same applies to the \u003ccode\u003eProxy-Authorization\u003c/code\u003e header.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program files \u003ccode\u003elib/inets/src/http_client/httpc_response.erl\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.0 before OTP\u0026nbsp;27.3.4.13, OTP\u0026nbsp;28.5.0.2, and OTP\u0026nbsp;29.0.2, corresponding to inets from 5.10 before 9.3.2.6, 9.6.2.2, and 9.7.1. Whether OTP before OTP\u0026nbsp;17.0, corresponding to inets before 5.10, is affected is unknown.\u003c/p\u003e"
                },
                {
                  "base64": false,
                  "type": "text/markdown",
                  "value": "Sensitive Data Exposure vulnerability in Erlang OTP inets (`httpc_response` module) allows Retrieve Embedded Sensitive Data.\n\nThe `httpc` client forwards the `Authorization` and `Proxy-Authorization` request headers to redirect targets without checking whether the redirect crosses an origin boundary. `httpc_response:redirect/2` constructs the redirected request by updating only the `host` field of the header record; all other fields (including `authorization` and `proxy_authorization`) are copied verbatim. The redirect target host is never compared against the original host.\n\n`autoredirect` defaults to `true`, so this affects all `httpc` callers that do not explicitly disable automatic redirects.\n\nAn attacker who controls a server that the victim contacts via `httpc` can issue a cross-origin 3xx redirect to a server they also control. The `Authorization` header (including Basic credentials derived from URL userinfo via `httpc_request:handle_user_info/2`) is forwarded to the redirect target, allowing credential theft. The same applies to the `Proxy-Authorization` header.\n\nThis vulnerability is associated with program files `lib/inets/src/http_client/httpc_response.erl`.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to inets from 5.10 before 9.3.2.6, 9.6.2.2, and 9.7.1. Whether OTP before OTP\u00a017.0, corresponding to inets before 5.10, is affected is unknown."
                }
              ],
              "value": "Sensitive Data Exposure vulnerability in Erlang OTP inets (httpc_response module) allows Retrieve Embedded Sensitive Data.\n\nThe httpc client forwards the Authorization and Proxy-Authorization request headers to redirect targets without checking whether the redirect crosses an origin boundary. httpc_response:redirect/2 constructs the redirected request by updating only the host field of the header record; all other fields (including authorization and proxy_authorization) are copied verbatim. The redirect target host is never compared against the original host.\n\nautoredirect defaults to true, so this affects all httpc callers that do not explicitly disable automatic redirects.\n\nAn attacker who controls a server that the victim contacts via httpc can issue a cross-origin 3xx redirect to a server they also control. The Authorization header (including Basic credentials derived from URL userinfo via httpc_request:handle_user_info/2) is forwarded to the redirect target, allowing credential theft. The same applies to the Proxy-Authorization header.\n\nThis vulnerability is associated with program files lib/inets/src/http_client/httpc_response.erl.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to inets from 5.10 before 9.3.2.6, 9.6.2.2, and 9.7.1. Whether OTP before OTP\u00a017.0, corresponding to inets before 5.10, is affected is unknown."
            }
          ],
          "impacts": [
            {
              "capecId": "CAPEC-37",
              "descriptions": [
                {
                  "lang": "en",
                  "value": "CAPEC-37 Retrieve Embedded Sensitive Data"
                }
              ]
            }
          ],
          "metrics": [
            {
              "cvssV4_0": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "NONE",
                "attackVector": "NETWORK",
                "baseScore": 7.1,
                "baseSeverity": "HIGH",
                "privilegesRequired": "NONE",
                "providerUrgency": "NOT_DEFINED",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "NONE",
                "subIntegrityImpact": "NONE",
                "userInteraction": "PASSIVE",
                "valueDensity": "NOT_DEFINED",
                "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
                "version": "4.0",
                "vulnAvailabilityImpact": "NONE",
                "vulnConfidentialityImpact": "HIGH",
                "vulnIntegrityImpact": "NONE",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-601",
                  "description": "CWE-601 URL Redirection to Untrusted Site (\u0027Open Redirect\u0027)",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-09-24T20:37:53.721Z",
            "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "shortName": "EEF"
          },
          "references": [
            {
              "tags": [
                "vendor-advisory",
                "related"
              ],
              "url": "https://github.com/erlang/otp/security/advisories/GHSA-m75x-4vwg-ggjh"
            },
            {
              "name": "EEF CNA record for CVE-2026-48856",
              "tags": [
                "related"
              ],
              "url": "https://cna.erlef.org/cves/CVE-2026-48856.html"
            },
            {
              "name": "OSV record EEF-CVE-2026-48856",
              "tags": [
                "related"
              ],
              "url": "https://osv.dev/vulnerability/EEF-CVE-2026-48856"
            },
            {
              "name": "Erlang/OTP version ordering",
              "tags": [
                "x_version-scheme"
              ],
              "url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
            },
            {
              "name": "Fix commit 688d748 in erlang/otp",
              "tags": [
                "patch"
              ],
              "url": "https://github.com/erlang/otp/commit/688d748d6f7a6a06b13b662a1d3de8af97079612"
            }
          ],
          "source": {
            "discovery": "INTERNAL"
          },
          "title": "httpc leaks Authorization header to cross-origin redirect targets",
          "workarounds": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003e{autoredirect, false}\u003c/code\u003e in the \u003ccode\u003ehttpc:request/4\u003c/code\u003e options and handle redirects manually, stripping the \u003ccode\u003eAuthorization\u003c/code\u003e header when the redirect crosses an origin boundary.\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003ehttpc\u003c/code\u003e is only used to contact trusted servers that will not issue cross-origin redirects.\u003c/li\u003e\n\u003c/ul\u003e"
                },
                {
                  "base64": false,
                  "type": "text/markdown",
                  "value": "* Set `{autoredirect, false}` in the `httpc:request/4` options and handle redirects manually, stripping the `Authorization` header when the redirect crosses an origin boundary.\n* Ensure that `httpc` is only used to contact trusted servers that will not issue cross-origin redirects."
                }
              ],
              "value": "* Set {autoredirect, false} in the httpc:request/4 options and handle redirects manually, stripping the Authorization header when the redirect crosses an origin boundary.\n* Ensure that httpc is only used to contact trusted servers that will not issue cross-origin redirects."
            }
          ]
        }
      },
      "cveMetadata": {
        "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "assignerShortName": "EEF",
        "cveId": "CVE-2026-48856",
        "datePublished": "2026-06-10T14:41:51.616Z",
        "dateReserved": "2026-05-25T20:44:10.697Z",
        "dateUpdated": "2026-09-24T20:37:53.721Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…