{"id":"UBUNTU-CVE-2026-107715","details":"The Mechanize library is used for automating interaction with websites. Prior to 2.14.1, Mechanize sends caller-supplied credential headers to a different host after an HTTP redirect. Mechanize#request_headers= is reapplied by Mechanize::HTTP::Agent#request_add_headers even after Mechanize::HTTP::Agent#response_redirect strips per-request headers, and the protected header lists omit Proxy-Authorization and Cookie2. An attacker who controls a redirect target can capture bearer tokens or session cookies supplied through request_headers= or the per-request headers argument, while Mechanize#cookie_jar and Mechanize::HTTP::AuthStore are not affected. This issue is fixed in version 2.14.1.","modified":"2026-10-17T12:58:01.702362472Z","published":"2026-10-08T22:17:00Z","upstream":["CVE-2026-107715"],"references":[{"type":"REPORT","url":"https://ubuntu.com/security/CVE-2026-107715"},{"type":"REPORT","url":"https://www.cve.org/CVERecord?id=CVE-2026-107715"},{"type":"REPORT","url":"https://github.com/sparklemotion/mechanize/commit/02a1235842d6eda8d4a5a3d8f13aba2cecf52e4f"},{"type":"REPORT","url":"https://github.com/sparklemotion/mechanize/commit/94e0902867296be804f36eccbb47acf7d5018745"},{"type":"REPORT","url":"https://github.com/sparklemotion/mechanize/commit/ac49abf2869297d83c3b11bbfb8b18e63b588c95"},{"type":"REPORT","url":"https://github.com/sparklemotion/mechanize/pull/676"},{"type":"REPORT","url":"https://github.com/sparklemotion/mechanize/releases/tag/v2.14.1"},{"type":"REPORT","url":"https://github.com/sparklemotion/mechanize/security/advisories/GHSA-2mwr-xjcg-37j7"}],"affected":[{"package":{"name":"ruby-mechanize","ecosystem":"Ubuntu:16.04:LTS","purl":"pkg:deb/ubuntu/ruby-mechanize?arch=source&distro=xenial"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.7.3-1"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-mechanize","binary_version":"2.7.3-1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-107715.json"}},{"package":{"name":"ruby-mechanize","ecosystem":"Ubuntu:18.04:LTS","purl":"pkg:deb/ubuntu/ruby-mechanize?arch=source&distro=bionic"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.7.5-1","2.7.5-2"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-mechanize","binary_version":"2.7.5-2"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-107715.json"}},{"package":{"name":"ruby-mechanize","ecosystem":"Ubuntu:20.04:LTS","purl":"pkg:deb/ubuntu/ruby-mechanize?arch=source&distro=focal"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.7.6-1"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-mechanize","binary_version":"2.7.6-1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-107715.json"}},{"package":{"name":"ruby-mechanize","ecosystem":"Ubuntu:22.04:LTS","purl":"pkg:deb/ubuntu/ruby-mechanize?arch=source&distro=jammy"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.7.7-1","2.7.7-3"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-mechanize","binary_version":"2.7.7-3"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-107715.json"}},{"package":{"name":"ruby-mechanize","ecosystem":"Ubuntu:24.04:LTS","purl":"pkg:deb/ubuntu/ruby-mechanize?arch=source&distro=noble"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.8.5-1"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-mechanize","binary_version":"2.8.5-1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-107715.json"}},{"package":{"name":"ruby-mechanize","ecosystem":"Ubuntu:26.10","purl":"pkg:deb/ubuntu/ruby-mechanize?arch=source&distro=stonking"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.10.1-1.1","2.14.0-2"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-mechanize","binary_version":"2.14.0-2"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-107715.json"}},{"package":{"name":"ruby-mechanize","ecosystem":"Ubuntu:26.04:LTS","purl":"pkg:deb/ubuntu/ruby-mechanize?arch=source&distro=resolute"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.10.1-1.1"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-mechanize","binary_version":"2.10.1-1.1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-107715.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N"},{"type":"Ubuntu","score":"medium"}]}