CVE-2026-95623 (GCVE-0-2026-95623)
Vulnerability from cvelistv5 – Published: 2026-09-22 10:52 – Updated: 2026-09-22 17:17
VLAI
EPSS
VEX
Title
Tauri framework v2 SSRF Protection Bypass via HTTP Redirects
Summary
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.
Severity
5.6 (Medium)
SSVC
Exploitation: none
Automatable: no
Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-09-22 12:28 UTC
CWE
- CWE-918 - Server-Side Request Forgery (SSRF)
Assigner
References
4 references
| URL | Tags |
|---|---|
| https://github.com/tauri-apps/plugins-workspace/s… | issue-tracking |
| https://github.com/tauri-apps/plugins-workspace | product |
| https://github.com/tauri-apps/plugins-workspace/c… | patch |
| https://github.com/tauri-apps/plugins-workspace/r… | release-notes |
Impacted products
1 product
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Tauri | tauri-plugin-http |
Affected:
2.0.0 , ≤ 2.6.1
(semver)
Affected: 2.7.0 , ≤ * (semver) |
guessed |
Date Public
2026-09-23 10:52
{
"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": "\u003cp\u003eVersions 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.\u003c/p\u003e"
}
],
"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": "\u003cp\u003eThe Tauri HTTP plugin validates requested URLs against the application\u0027s 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.\u003c/p\u003e"
}
],
"value": "The Tauri HTTP plugin validates requested URLs against the application\u0027s 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-22T17:17:16.133Z",
"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": "\u003cp\u003eUpgrade 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.\u003c/p\u003e\u003ccode\u003e {\u0026quot;plugins\u0026quot;: {\u0026quot;http\u0026quot;: {\u0026quot;scopeRedirects\u0026quot;: true}}}\u003c/code\u003e\u003cbr/\u003e\u003cp\u003eNothing in the 2.0.0 to 2.6.1 range has a fix available.\u003c/p\u003e"
}
],
"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": "Tauri framework v2 SSRF Protection Bypass via HTTP Redirects",
"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-22T17:17:16.133Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-95623",
"date": "2026-09-23",
"epss": "0.00238",
"percentile": "0.15152"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"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"
}
]
}
],
"source": "reefs@jfrog.com"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "The Tauri HTTP plugin validates requested URLs against the application\u0027s 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."
}
],
"id": "CVE-2026-95623",
"lastModified": "2026-09-22T19:34:57.263",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"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"
},
"exploitabilityScore": 1.2,
"impactScore": 4.0,
"source": "reefs@jfrog.com",
"type": "Secondary"
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-95623",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-09-22T12:28:50.708719Z",
"version": "2.0.3"
}
}
]
},
"published": "2026-09-22T11:17:27.357",
"references": [
{
"source": "reefs@jfrog.com",
"url": "https://github.com/tauri-apps/plugins-workspace"
},
{
"source": "reefs@jfrog.com",
"url": "https://github.com/tauri-apps/plugins-workspace/commit/1198a524b710abf2abeb1d9bd7b252402d26ca6d"
},
{
"source": "reefs@jfrog.com",
"url": "https://github.com/tauri-apps/plugins-workspace/releases/tag/http-v2.7.0"
},
{
"source": "reefs@jfrog.com",
"url": "https://github.com/tauri-apps/plugins-workspace/security/advisories/GHSA-2rxp-f4w5-6hjr"
}
],
"sourceIdentifier": "reefs@jfrog.com",
"vulnStatus": "Deferred",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-918"
}
],
"source": "reefs@jfrog.com",
"type": "Secondary"
}
]
}
},
"vulnrichment": {
"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:55.315Z",
"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": "\u003cp\u003eVersions 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.\u003c/p\u003e"
}
],
"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": "\u003cp\u003eThe Tauri HTTP plugin validates requested URLs against the application\u0027s 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.\u003c/p\u003e"
}
],
"value": "The Tauri HTTP plugin validates requested URLs against the application\u0027s 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-22T17:17:16.133Z",
"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": "\u003cp\u003eUpgrade 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.\u003c/p\u003e\u003ccode\u003e {\u0026quot;plugins\u0026quot;: {\u0026quot;http\u0026quot;: {\u0026quot;scopeRedirects\u0026quot;: true}}}\u003c/code\u003e\u003cbr/\u003e\u003cp\u003eNothing in the 2.0.0 to 2.6.1 range has a fix available.\u003c/p\u003e"
}
],
"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": "Tauri framework v2 SSRF Protection Bypass via HTTP Redirects",
"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-22T17:17:16.133Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Loading…
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.
Loading…