{"id":"CVE-2026-3635","summary":"Fastify request.protocol and request.host spoofable via X-Forwarded-Proto/Host from untrusted connections when trustProxy uses restrictive trust function","details":"Summary\nWhen trustProxy is configured with a restrictive trust function (e.g., a specific IP like trustProxy: '10.0.0.1', a subnet, a hop count, or a custom function), the request.protocol and request.host getters read X-Forwarded-Proto and X-Forwarded-Host headers from any connection — including connections from untrusted IPs. This allows an attacker connecting directly to Fastify (bypassing the proxy) to spoof both the protocol and host seen by the application.\n\nAffected Versions\nfastify \u003c= 5.8.2\n\nImpact\nApplications using request.protocol or request.host for security decisions (HTTPS enforcement, secure cookie flags, CSRF origin checks, URL construction, host-based routing) are affected when trustProxy is configured with a restrictive trust function.\n\nWhen trustProxy: true (trust everything), both host and protocol trust all forwarded headers — this is expected behavior. The vulnerability only manifests with restrictive trust configurations.","aliases":["GHSA-444r-cwp2-x5xf"],"modified":"2026-07-08T08:12:58.860149635Z","published":"2026-03-23T13:53:00.386Z","database_specific":{"cna_assigner":"openjs","cwe_ids":["CWE-348"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/3xxx/CVE-2026-3635.json"},"references":[{"type":"WEB","url":"https://www.cve.org/CVERecord?id=CVE-2026-3635"},{"type":"ADVISORY","url":"https://cna.openjsf.org/security-advisories.html"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/3xxx/CVE-2026-3635.json"},{"type":"ADVISORY","url":"https://github.com/fastify/fastify/security/advisories/GHSA-444r-cwp2-x5xf"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-3635"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/fastify/fastify","events":[{"introduced":"0"},{"fixed":"a3e77ce171516e95f0c28ce60b9e5228a4c42fe4"}],"database_specific":{"cpe":"cpe:2.3:a:fastify:fastify:*:*:*:*:*:node.js:*:*","source":["AFFECTED_FIELD","CPE_RANGE"],"extracted_events":[{"introduced":"0"},{"last_affected":"5.8.2"},{"fixed":"5.8.3"}]}}],"versions":["v5.8.2","v5.8.1","v5.8.0","v5.7.4","v5.7.3","v5.7.2","v5.7.1","v5.7.0","v5.6.2","v5.6.1","v5.6.0","v5.5.0","v5.4.0","v5.3.3","v5.3.2","v5.3.1","v5.3.0","v5.2.2","v5.2.1","v5.2.0","v5.1.0","v5.0.0","v5.0.0-alpha.4","v5.0.0-alpha.2","v5.0.0-alpha.1","v4.5.2","v4.5.1","v4.5.0","v4.4.0","v4.3.0","v4.2.1","v4.2.0","v4.1.0","v4.0.3","v4.0.2","v4.0.1","v4.0.0","v4.0.0-rc.5","v4.0.0-rc.4","v4.0.0-rc.3","v4.0.0-rc.2","v4.0.0-rc.1","v4.0.0-alpha.3","v4.0.0-alpha.2","v3.27.2","v4.0.0-alpha.1","v3.27.1","v3.27.0","v3.26.0","v3.25.3","v3.25.2","v3.25.1","v3.25.0","v3.24.1","v3.24.0","v3.23.1","v3.23.0","v3.22.1","v3.22.0","v3.21.6","v3.21.5","v3.21.4","v3.21.3","v3.21.2","v3.21.1","v3.21.0","v3.20.2","v3.20.1","v3.20.0","v3.19.2","v3.19.1","v3.19.0","v3.18.1","v3.18.0","v3.17.0","v3.16.2","v3.16.1","v3.16.0","v3.15.1","v3.15.0","v3.14.2","v3.14.1","v3.14.0","v3.13.0","v3.12.0","v3.11.0","v3.10.1","v3.10.0","v3.9.2","v3.9.1","v3.9.0","v3.8.0","v3.7.0","v3.6.0","v3.5.1","v3.5.0","v3.4.1","v3.4.0","v3.3.0","v3.2.1","v3.2.0","v3.1.1","v3.1.0","v3.0.3","v3.0.2","v3.0.1","v3.0.0","v3.0.0-rc.5","v2.15.1","v3.0.0-rc.4","v3.0.0-rc.3","v3.0.0-rc.2","v2.14.0","v3.0.0-rc.1","v3.0.0-alpha.1","v2.3.0","v2.2.0","v2.1.0","v2.0.1","v2.0.0","v2.0.0-rc.6","v2.0.0-rc.5","v2.0.0-rc.4","v2.0.0-rc.3","v2.0.0-rc.2","v2.0.0-rc.1","v2.0.0-rc.0","v1.13.0","v1.12.1","v1.12.0","v1.11.2","v1.11.1","v1.11.0","v1.10.0","v1.9.0","v1.8.0","v1.7.0","v1.6.0","v1.5.0","v1.4.0","v1.3.1","v1.3.0","v1.2.1","v1.2.0","v1.1.1","v1.1.0","v1.0.0","v1.0.0-rc.3","v1.0.0-rc.2","v1.0.0-rc.1","v0.43.0","v0.42.0","v0.41.0","v0.40.0","v0.39.1","v0.39.0","v0.38.0","v0.37.0","v0.36.0","v0.35.7","v0.35.6","v0.35.5","v0.35.4","v0.35.3","v0.35.2","v0.35.1","v0.35.0","v0.34.0","v0.33.0","v0.32.0","v0.31.0","v0.30.3","v0.30.1","v0.30.2","v0.30.0","v0.29.2","v0.29.1","v0.29.0","v0.28.2","v0.28.1","v0.28.0","v0.27.0","v0.26.2","v0.26.1","v0.26.0","v0.25.3","v0.25.2","v0.25.1","v0.25.0","v0.24.0","v0.22.0","v0.23.0","v0.21.0","v0.20.1","v0.20.0","v0.19.1","v0.19.0","v0.18.0","v0.17.0","v0.16.0","v0.15.3","v0.15.2","v0.15.1","v0.15.0","v0.14.1","v0.14.0","v0.13.1","v0.13.0","v0.12.0","v0.11.1","v0.11.0","v0.10.0","v0.9.0","v0.8.0","v0.7.1","v0.7.0","v0.6.0","v0.5.0","v0.4.0","v0.3.0","v0.2.0","v0.1.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-3635.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N"}]}