{"api_version":"1","generated_at":"2026-09-22T14:14:29+00:00","cve":"CVE-2026-95623","urls":{"html":"https://cve.report/CVE-2026-95623","api":"https://cve.report/api/cve/CVE-2026-95623.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-95623","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-95623"},"summary":{"title":"Improper SSRF Protection via HTTP Redirects in tauri-plugin-http","description":"The Tauri HTTP plugin validates requested URLs against the application's configured scope allowlist only once, on the initial request. When the remote server responds with an HTTP 3xx redirect, reqwest follows the redirect internally without re-checking the new target URL against the scope. This allows an attacker who controls an allowed URL (or finds an open redirect on an allowed host) to reach disallowed destinations such as cloud metadata endpoints, localhost services, or internal network hosts.","state":"PUBLISHED","assigner":"JFROG","published_at":"2026-09-22 11:17:27","updated_at":"2026-09-22 13:17:13"},"problem_types":["CWE-918","CWE-918 CWE-918: Server-Side Request Forgery (SSRF)"],"metrics":[{"version":"3.1","source":"reefs@jfrog.com","type":"Secondary","score":"5.6","severity":"MEDIUM","vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N","baseScore":5.6,"baseSeverity":"MEDIUM","attackVector":"ADJACENT_NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"REQUIRED","scope":"CHANGED","confidentialityImpact":"HIGH","integrityImpact":"NONE","availabilityImpact":"NONE"}},{"version":"3.1","source":"CNA","type":"CVSS","score":"5.6","severity":"MEDIUM","vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N","data":{"attackComplexity":"HIGH","attackVector":"ADJACENT_NETWORK","availabilityImpact":"NONE","baseScore":5.6,"baseSeverity":"MEDIUM","confidentialityImpact":"HIGH","integrityImpact":"NONE","privilegesRequired":"NONE","scope":"CHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N","version":"3.1"}}],"references":[{"url":"https://github.com/tauri-apps/plugins-workspace/releases/tag/http-v2.7.0","name":"https://github.com/tauri-apps/plugins-workspace/releases/tag/http-v2.7.0","refsource":"reefs@jfrog.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/tauri-apps/plugins-workspace","name":"https://github.com/tauri-apps/plugins-workspace","refsource":"reefs@jfrog.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/tauri-apps/plugins-workspace/commit/1198a524b710abf2abeb1d9bd7b252402d26ca6d","name":"https://github.com/tauri-apps/plugins-workspace/commit/1198a524b710abf2abeb1d9bd7b252402d26ca6d","refsource":"reefs@jfrog.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/tauri-apps/plugins-workspace/security/advisories/GHSA-2rxp-f4w5-6hjr","name":"https://github.com/tauri-apps/plugins-workspace/security/advisories/GHSA-2rxp-f4w5-6hjr","refsource":"reefs@jfrog.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-95623","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-95623","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Tauri","product":"tauri-plugin-http","version":"affected 2.0.0 2.6.1 semver","platforms":[]},{"source":"CNA","vendor":"Tauri","product":"tauri-plugin-http","version":"affected 2.7.0 * semver","platforms":[]}],"timeline":[{"source":"CNA","time":"2026-06-28T08:24:00.000Z","lang":"en","value":"Reported to the Tauri team as GHSA-2rxp-f4w5-6hjr"},{"source":"CNA","time":"2026-09-20T00:01:00.000Z","lang":"en","value":"Opt-in fix released in tauri-plugin-http 2.7.0, commit 1198a524, adding the scopeRedirects option"}],"solutions":[{"source":"CNA","title":"","value":"Upgrade to tauri-plugin-http 2.7.0 or later and turn on the new scopeRedirects option. Both steps are needed. The fix is opt-in, so 2.7.0 on its own still follows a redirect out of scope; the option is what makes the plugin check every hop. Tauri made it opt-in because a redirect that leaves the scope now fails, which changes behaviour for apps that were relying on it.\n\n    {\"plugins\": {\"http\": {\"scopeRedirects\": true}}}\n\n\nNothing in the 2.0.0 to 2.6.1 range has a fix available.","time":"","lang":"en"}],"workarounds":[],"exploits":[],"credits":[{"source":"CNA","value":"Yuval Moravchick","lang":"en"},{"source":"CNA","value":"JFrog Security Research","lang":"en"}],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-95623","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2026-09-22T12:28:50.708719Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-09-22T12:28:59.484Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"collectionURL":"https://crates.io/crates/tauri-plugin-http","defaultStatus":"unaffected","packageName":"tauri-plugin-http","product":"tauri-plugin-http","programFiles":["plugins/http/src/commands.rs","plugins/http/src/scope.rs","plugins/http/src/config.rs"],"repo":"git://github.com/tauri-apps/plugins-workspace","vendor":"Tauri","versions":[{"lessThanOrEqual":"2.6.1","status":"affected","version":"2.0.0","versionType":"semver"},{"lessThanOrEqual":"*","status":"affected","version":"2.7.0","versionType":"semver"}]}],"configurations":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>Versions 2.0.0 through 2.6.1 are affected in every configuration and no fix is available for them. From 2.7.0 the plugin can check the scope on each redirect hop, but only when the application sets the scopeRedirects option in its http plugin configuration. A 2.7.0 or later application that does not set it behaves as before and is still affected.</p>"}],"value":"Versions 2.0.0 through 2.6.1 are affected in every configuration and no fix is available for them. From 2.7.0 the plugin can check the scope on each redirect hop, but only when the application sets the scopeRedirects option in its http plugin configuration. A 2.7.0 or later application that does not set it behaves as before and is still affected."}],"credits":[{"lang":"en","type":"finder","value":"Yuval Moravchick"},{"lang":"en","type":"coordinator","value":"JFrog Security Research"}],"datePublic":"2026-09-23T10:52:00.000Z","descriptions":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>The Tauri HTTP plugin validates requested URLs against the application's configured scope allowlist only once, on the initial request. When the remote server responds with an HTTP 3xx redirect, reqwest follows the redirect internally without re-checking the new target URL against the scope. This allows an attacker who controls an allowed URL (or finds an open redirect on an allowed host) to reach disallowed destinations such as cloud metadata endpoints, localhost services, or internal network hosts.</p>"}],"value":"The Tauri HTTP plugin validates requested URLs against the application's configured scope allowlist only once, on the initial request. When the remote server responds with an HTTP 3xx redirect, reqwest follows the redirect internally without re-checking the new target URL against the scope. This allows an attacker who controls an allowed URL (or finds an open redirect on an allowed host) to reach disallowed destinations such as cloud metadata endpoints, localhost services, or internal network hosts."}],"impacts":[{"descriptions":[{"lang":"en","value":"Requests the frontend starts reach hosts the scope was written to exclude, and the answer is handed back to it. Internal services and cloud metadata endpoints are the obvious targets."}]}],"metrics":[{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"ADJACENT_NETWORK","availabilityImpact":"NONE","baseScore":5.6,"baseSeverity":"MEDIUM","confidentialityImpact":"HIGH","integrityImpact":"NONE","privilegesRequired":"NONE","scope":"CHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N","version":"3.1"},"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-918","description":"CWE-918: Server-Side Request Forgery (SSRF)","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-09-22T10:52:20.006Z","orgId":"48a46f29-ae42-4e1d-90dd-c1676c1e5e6d","shortName":"JFROG"},"references":[{"name":"GHSA-2rxp-f4w5-6hjr (tauri-apps/plugins-workspace)","tags":["issue-tracking"],"url":"https://github.com/tauri-apps/plugins-workspace/security/advisories/GHSA-2rxp-f4w5-6hjr"},{"name":"tauri-apps/plugins-workspace repository","tags":["product"],"url":"https://github.com/tauri-apps/plugins-workspace"},{"name":"Check the URL scope on every hop of a redirect chain","tags":["patch"],"url":"https://github.com/tauri-apps/plugins-workspace/commit/1198a524b710abf2abeb1d9bd7b252402d26ca6d"},{"name":"tauri-plugin-http 2.7.0 release notes","tags":["release-notes"],"url":"https://github.com/tauri-apps/plugins-workspace/releases/tag/http-v2.7.0"}],"solutions":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>Upgrade to tauri-plugin-http 2.7.0 or later and turn on the new scopeRedirects option. Both steps are needed. The fix is opt-in, so 2.7.0 on its own still follows a redirect out of scope; the option is what makes the plugin check every hop. Tauri made it opt-in because a redirect that leaves the scope now fails, which changes behaviour for apps that were relying on it.</p><code>    {&quot;plugins&quot;: {&quot;http&quot;: {&quot;scopeRedirects&quot;: true}}}</code><br/><p>Nothing in the 2.0.0 to 2.6.1 range has a fix available.</p>"}],"value":"Upgrade to tauri-plugin-http 2.7.0 or later and turn on the new scopeRedirects option. Both steps are needed. The fix is opt-in, so 2.7.0 on its own still follows a redirect out of scope; the option is what makes the plugin check every hop. Tauri made it opt-in because a redirect that leaves the scope now fails, which changes behaviour for apps that were relying on it.\n\n    {\"plugins\": {\"http\": {\"scopeRedirects\": true}}}\n\n\nNothing in the 2.0.0 to 2.6.1 range has a fix available."}],"source":{"discovery":"EXTERNAL"},"timeline":[{"lang":"en","time":"2026-06-28T08:24:00.000Z","value":"Reported to the Tauri team as GHSA-2rxp-f4w5-6hjr"},{"lang":"en","time":"2026-09-20T00:01:00.000Z","value":"Opt-in fix released in tauri-plugin-http 2.7.0, commit 1198a524, adding the scopeRedirects option"}],"title":"Improper SSRF Protection via HTTP Redirects in tauri-plugin-http","x_generator":{"engine":"Vulnogram 1.0.5"}}},"cveMetadata":{"assignerOrgId":"48a46f29-ae42-4e1d-90dd-c1676c1e5e6d","assignerShortName":"JFROG","cveId":"CVE-2026-95623","datePublished":"2026-09-22T10:52:20.006Z","dateReserved":"2026-09-22T10:38:03.883Z","dateUpdated":"2026-09-22T12:28:59.484Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-22 11:17:27","lastModifiedDate":"2026-09-22 13:17:13","problem_types":["CWE-918","CWE-918 CWE-918: Server-Side Request Forgery (SSRF)"],"metrics":{"cvssMetricV31":[{"source":"reefs@jfrog.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N","baseScore":5.6,"baseSeverity":"MEDIUM","attackVector":"ADJACENT_NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"REQUIRED","scope":"CHANGED","confidentialityImpact":"HIGH","integrityImpact":"NONE","availabilityImpact":"NONE"},"exploitabilityScore":1.2,"impactScore":4}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-09-22T12:28:50.708719Z","id":"CVE-2026-95623","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"95623","Ordinal":"1","Title":"Improper SSRF Protection via HTTP Redirects in tauri-plugin-http","CVE":"CVE-2026-95623","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"95623","Ordinal":"1","NoteData":"The Tauri HTTP plugin validates requested URLs against the application's configured scope allowlist only once, on the initial request. When the remote server responds with an HTTP 3xx redirect, reqwest follows the redirect internally without re-checking the new target URL against the scope. This allows an attacker who controls an allowed URL (or finds an open redirect on an allowed host) to reach disallowed destinations such as cloud metadata endpoints, localhost services, or internal network hosts.","Type":"Description","Title":"Improper SSRF Protection via HTTP Redirects in tauri-plugin-http"}]}}}