{"id":"CVE-2026-48022","aliases":["CLSA-2026-1789068952","CLSA-2026-1792177263","EUVD-2026-45340","GHSA-x426-x7cc-3fpc","ROOT-APP-NPM-CVE-2026-48022"],"status":"published","title":"@hapi/wreck: Sensitive credential headers leak across cross-port and cross-scheme redirects","description":"@hapi/wreck is an HTTP client utility. Prior to 18.1.2, Wreck strips credential headers including Authorization, Cookie, and Proxy-Authorization before following a cross-origin redirect, but the origin check compares hostnames only and ignores scheme and port, so credentials are forwarded intact across same-host port changes and HTTPS-to-HTTP downgrades, allowing a co-tenant on an adjacent port or a network-position attacker capable of forging a redirect to capture bearer tokens, session cookies, and proxy credentials and impersonate the victim against the upstream service. This issue is fixed in version 18.1.2.","severity":{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00176,"percentile":0.07148,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-200","CWE-319","CWE-346","CWE-522","CWE-940"],"published":"2026-06-11T13:27:05Z","modified":"2026-10-30T19:45:13Z","fixes":[{"ecosystem":"npm","package":"@hapi/wreck","fixed_in":["18.1.2"],"sources":["ghsa","osv"]},{"ecosystem":"Root:npm","package":"@rootio/hapi__wreck","fixed_in":["18.1.0-root.io.2","17.2.0-root.io.2"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"@hapi/wreck","fixed_in":["18.1.0-aikido.2","17.2.0-aikido.2"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"@hapi/wreck","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"18.1.2"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"@hapi/wreck","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"17.2.0-tuxcare.0"},{"fixed":"17.2.0-tuxcare.1"}]}],"versions":["17.2.0"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"hapi-wreck","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"17.2.0-tuxcare.0"},{"fixed":"17.2.0-tuxcare.1"}]}],"versions":["17.2.0"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"@hapi/wreck","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"17.2.0-tuxcare.0"},{"fixed":"17.2.0-tuxcare.1"}]}],"versions":["17.2.0"],"bundled":2},{"source":"osv","ecosystem":"npm","package":"@hapi/wreck","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"18.1.2"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@rootio/hapi__wreck","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"18.1.0-root.io.2"},{"fixed":"17.2.0-root.io.2"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@hapi/wreck","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"18.1.0-aikido.2"},{"fixed":"17.2.0-aikido.2"}]}]}],"products":[{"vendor":"hapijs","product":"wreck"}],"references":[{"url":"https://github.com/hapijs/wreck/security/advisories/GHSA-x426-x7cc-3fpc","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/hapijs/wreck/pull/313","tags":["x_refsource_MISC","fix"]},{"url":"https://github.com/hapijs/wreck/commit/b93323b63ad3adb14d2b4019d77219182211641e","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/hapijs/wreck/releases/tag/v18.1.2","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/advisories/GHSA-x426-x7cc-3fpc"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48022.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-48022","tags":["advisory"]},{"url":"https://github.com/hapijs/wreck","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-48022","title":"@hapi/wreck: Sensitive credential headers leak across cross-port and cross-scheme redirects","description":"@hapi/wreck is an HTTP client utility. Prior to 18.1.2, Wreck strips credential headers including Authorization, Cookie, and Proxy-Authorization before following a cross-origin redirect, but the origin check compares hostnames only and ignores scheme and port, so credentials are forwarded intact across same-host port changes and HTTPS-to-HTTP downgrades, allowing a co-tenant on an adjacent port or a network-position attacker capable of forging a redirect to capture bearer tokens, session cookies, and proxy credentials and impersonate the victim against the upstream service. This issue is fixed in version 18.1.2.","status":"published","published":"2026-07-17T21:02:05.98Z","modified":"2026-07-20T19:10:59.345Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-319","CWE-346","CWE-522"],"updated_at":"2026-11-02T13:50:49.872037Z"}],"euvd":[{"id":"EUVD-2026-45340","description":"@hapi/wreck is an HTTP client utility. Prior to 18.1.2, Wreck strips credential headers including Authorization, Cookie, and Proxy-Authorization before following a cross-origin redirect, but the origin check compares hostnames only and ignores scheme and port, so credentials are forwarded intact across same-host port changes and HTTPS-to-HTTP downgrades, allowing a co-tenant on an adjacent port or a network-position attacker capable of forging a redirect to capture bearer tokens, session cookies, and proxy credentials and impersonate the victim against the upstream service. This issue is fixed in version 18.1.2.","status":"published","published":"2026-07-17T21:02:05Z","modified":"2026-07-20T19:10:59Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T18:19:47.959089Z"}],"ghsa":[{"id":"GHSA-x426-x7cc-3fpc","title":"@hapi/wreck: Sensitive credential headers leak across cross-port and cross-scheme redirects","description":"### Impact\nWreck strips credential headers (Authorization, Cookie, Proxy-Authorization) before following a cross-origin redirect, but the origin check compares hostnames only and ignores scheme and port. As a result, credentials are forwarded intact across same-host port changes and HTTPS-to-HTTP downgrades, allowing a co-tenant on an adjacent port or a network-position attacker capable of forging a redirect to capture bearer tokens, session cookies, and proxy credentials and impersonate the victim against the upstream service. The fix replaces the hostname comparison with a full-origin comparison (scheme, host, and port), aligning the behavior with the WHATWG Fetch same-origin definition used by browsers.\n\n### Patches\nUpgrade to \u003e= 18.1.2.\n\n### Workarounds\n- Set `redirects: 0` (default) and handle redirects manually with a strict origin check.\n- Use the `beforeRedirect` hook to inspect the redirect target and abort or strip sensitive headers before the follow-on request.","status":"published","published":"2026-06-11T13:27:05Z","modified":"2026-06-11T13:27:06Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-200","CWE-319","CWE-346","CWE-522","CWE-940"],"updated_at":"2026-11-02T14:40:26.12116Z"}],"nvd":[{"id":"CVE-2026-48022","description":"@hapi/wreck is an HTTP client utility. Prior to 18.1.2, Wreck strips credential headers including Authorization, Cookie, and Proxy-Authorization before following a cross-origin redirect, but the origin check compares hostnames only and ignores scheme and port, so credentials are forwarded intact across same-host port changes and HTTPS-to-HTTP downgrades, allowing a co-tenant on an adjacent port or a network-position attacker capable of forging a redirect to capture bearer tokens, session cookies, and proxy credentials and impersonate the victim against the upstream service. This issue is fixed in version 18.1.2.","status":"published","published":"2026-07-17T22:17:14.413Z","modified":"2026-10-24T20:10:00.137Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-319","CWE-346","CWE-522"],"updated_at":"2026-11-02T14:12:30.631352Z"}],"osv":[{"id":"CVE-2026-48022","title":"@hapi/wreck: Sensitive credential headers leak across cross-port and cross-scheme redirects","description":"@hapi/wreck is an HTTP client utility. Prior to 18.1.2, Wreck strips credential headers including Authorization, Cookie, and Proxy-Authorization before following a cross-origin redirect, but the origin check compares hostnames only and ignores scheme and port, so credentials are forwarded intact across same-host port changes and HTTPS-to-HTTP downgrades, allowing a co-tenant on an adjacent port or a network-position attacker capable of forging a redirect to capture bearer tokens, session cookies, and proxy credentials and impersonate the victim against the upstream service. This issue is fixed in version 18.1.2.","status":"published","published":"2026-07-17T21:02:05.98Z","modified":"2026-10-28T02:30:30.820350122Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-319","CWE-346","CWE-522"],"updated_at":"2026-11-02T15:45:06.701612Z"},{"id":"GHSA-x426-x7cc-3fpc","title":"@hapi/wreck: Sensitive credential headers leak across cross-port and cross-scheme redirects","description":"### Impact\nWreck strips credential headers (Authorization, Cookie, Proxy-Authorization) before following a cross-origin redirect, but the origin check compares hostnames only and ignores scheme and port. As a result, credentials are forwarded intact across same-host port changes and HTTPS-to-HTTP downgrades, allowing a co-tenant on an adjacent port or a network-position attacker capable of forging a redirect to capture bearer tokens, session cookies, and proxy credentials and impersonate the victim against the upstream service. The fix replaces the hostname comparison with a full-origin comparison (scheme, host, and port), aligning the behavior with the WHATWG Fetch same-origin definition used by browsers.\n\n### Patches\nUpgrade to \u003e= 18.1.2.\n\n### Workarounds\n- Set `redirects: 0` (default) and handle redirects manually with a strict origin check.\n- Use the `beforeRedirect` hook to inspect the redirect target and abort or strip sensitive headers before the follow-on request.","status":"published","published":"2026-06-11T13:27:05Z","modified":"2026-09-10T03:50:51.210459476Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-200","CWE-319","CWE-346","CWE-522","CWE-940"],"updated_at":"2026-11-02T15:46:59.484835Z"},{"id":"CLSA-2026-1789068952","title":"TuxCare security update for 2 packages (2 CVEs)","description":"TuxCare rebuilt 2 packages to address 2 CVEs. Fixed in 17.2.0-tuxcare.1.","status":"published","published":"2026-09-10T19:35:52Z","modified":"2026-10-15T09:47:55.817789503Z","updated_at":"2026-11-02T15:43:47.938828Z"},{"id":"CLSA-2026-1792177263","title":"TuxCare security update for @hapi/wreck (2 CVEs)","description":"TuxCare rebuilt @hapi/wreck to address 2 CVEs. Fixed in 17.2.0-tuxcare.1.","status":"published","published":"2026-10-16T19:01:03Z","modified":"2026-10-30T19:45:13.893244009Z","updated_at":"2026-11-02T15:43:51.747192Z"},{"id":"ROOT-APP-NPM-CVE-2026-48022","title":"CVE-2026-48022 in @rootio/hapi__wreck - Patched by Root","description":"Root has patched CVE-2026-48022 in the @rootio/hapi__wreck package for Root:npm. Multiple fixed versions available.","status":"published","published":"2026-07-10T09:17:27Z","modified":"2026-07-10T13:15:17.07263212Z","updated_at":"2026-11-02T15:53:27.649662Z"}]}}
