Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain MITM or update-server control
-
DeliveryServe crafted manifest with inflated version + old release URL/signature
-
ExploitUpdater validates genuine old signature (passes)
-
ExecutionDowngrade installs outdated signed build
-
ImpactReintroduce patched vulnerabilities for follow-on exploitation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Integrity verification
|
| Exploitation Conditions | Requires an attacker able to serve a crafted update-manifest response to the victim app - i.e. a MITM position over the TLS-protected update channel or control/compromise of the update server or CDN. The target must be a Tauri application using tauri-plugin-updater with auto-update enabled. Exploitation is limited by the TLS transport (the attacker must defeat or terminate TLS, or already control the endpoint) and only permits downgrading to an authentically-signed OLDER release (no arbitrary code signing). The fix is opt-in: requireSignedVersion defaults to false, and releases signed before the Tauri CLI began recording the version carry no signed version, so an attacker can still serve one of those older signatures to bypass the check unless every reachable release is re-signed and re-published. |
| Impact | This is a genuine but conditional integrity flaw, not a high-severity emergency. The provided CVSS 3.1 vector (5.9, AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N) rates it Medium, and the AC:H component correctly reflects the core barrier: the update manifest is fetched over TLS, so an attacker must occupy a privileged network position (defeat/terminate the TLS connection via MITM) or compromise the update server/CDN before a crafted manifest can be served. I disagree with the vendor's PR:H - the attacker needs no privileges on the victim host; the in-path requirement is better modeled through AC/attack-requirement, and the primary impact is integrity (forced downgrade), not confidentiality, so I assess C:N/I:H and a slightly lower score (~5.1). No EPSS score, KEV listing, or public POC is present in the input, so exploitation signals are weak: no public exploit identified at time of analysis. The realistic risk is that of a stepping-stone - a successful downgrade reinstalls a genuine, validly-signed but OUTDATED build, re-introducing whatever vulnerabilities were fixed in later versions. Notably, even the patch does not fully close this by default: the new requireSignedVersion option defaults to false, and older releases signed before the Tauri CLI recorded the version carry no signed version and can still be served to bypass the check, so the effective risk depends heavily on the app's re-signing/opt-in posture. |
| Exploit ScenarioDerived | An attacker who controls the update endpoint (malicious/compromised update server or CDN) or holds a MITM position over the app's TLS update channel serves a crafted manifest that pairs an inflated version number with the download URL and valid minisign signature of an older, genuinely-signed release. The Tauri app's updater validates the signature (which passes, since the old artifact is authentically signed) and installs the outdated build, reintroducing previously-patched vulnerabilities the attacker can then exploit. No developer private key is required; no public exploit code is identified at time of analysis, though the fixing commit publicly documents the mechanism. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 23, 2026
Tauri applications that use the tauri-plugin-updater crate with auto-update enabled can be forced to downgrade to an older, authentically signed release, because the update manifest is fetched over TLS but is never itself signed or authenticated. An attacker who can serve a crafted manifest response - through a man-in-the-middle position on the update channel or by controlling/compromising the update server or CDN - can pair an inflated version field with the URL and minisign signature of an older release, and the plugin's only anti-rollback check compares that unsigned version field against the currently installed version. The assessment scores this as an integrity flaw (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N) that is genuinely exploitable but conditional on defeating or terminating TLS or already owning the update endpoint, and it is limited to downgrading to releases that carry a valid developer signature - it does not permit signing arbitrary code. No public exploit was identified at time of analysis and the flaw is not known to be actively exploited (no CISA KEV listing); a vendor patch (updater 2.12.0) is available but the hardening option it introduces defaults to off.
RemediationAI
Upgrade tauri-plugin-updater to 2.12.0 (release tag updater-v2.12.0, upstream fix commit 690dcfd694, advisory GHSA-j38x-g3m3-95fr) - Vendor-released patch: 2.12.0. The patched version adds a requireSignedVersion configuration option that binds an update to the version recorded in the minisign signature's trusted comment and rejects the update when the signed version differs from the version announced by the endpoint; a mismatch is rejected whenever the signature carries a version, regardless of whether the flag is set. Note that requireSignedVersion defaults to false for backward compatibility, so upgrading alone does not close the hole: you must enable it explicitly in your Tauri configuration under plugins.updater.requireSignedVersion (the kebab-case alias require-signed-version also works). Enabling it rejects releases signed before the Tauri CLI began recording the version, so before turning it on you must re-sign and re-publish every release that your installed user base can still update from - otherwise an attacker can simply serve one of those older version-less signatures to bypass the check, and the plugin will emit the MissingSignedVersion error for legitimate old releases instead. This control is evaluated independently of allowDowngrades: it constrains which artifact a given version number may resolve to, not whether that version is newer than the running one, so do not treat allowDowngrades=false as an equivalent mitigation. If you cannot immediately re-sign and re-publish your release history, compensating controls are: disable the auto-updater entirely until releases are re-signed (trade-off: users stop receiving security updates), or restrict update fetching to a tightly controlled endpoint such as an attested update server or CDN with certificate pinning and no shared/third-party hosting (trade-off: reduces but does not eliminate risk if that endpoint or its TLS termination is compromised, and pinning complicates certificate rotation). Serving the update manifest over a network path you fully control and monitoring for unexpected version regression in installed clients provides detection but not prevention.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The tauri-plugin-updater crate implements Tauri's application auto-update mechanism. It fetches a JSON update manifest from a configured endpoint that contains, at minimum, a version string, a download URL, and a minisign signature, then downloads the artifact and verifies it with minisign against a public key embedded in the application configuration. The core design weakness, classified as CWE-354 (Improper Validation of Integrity Check Value), is that the minisign signature covers only the raw bytes of the downloaded binary; the manifest itself - and therefore the version number and URL that determine which artifact is fetched and how it is compared - is protected only by transport-layer TLS and carries no independent authentication. The trusted comment field of a minisign signature is covered by minisign's global signature, so it is a usable integrity-protected place to bind an artifact to the version it was signed for, but prior to this fix the plugin never compared signed version data against the version announced by the endpoint. The additional anti-rollback logic that does exist only compares the manifest's unsigned version field with the running version, so a modified manifest can advertise a high version while pointing at the URL and signature of an older, still validly signed build - an attacker needs no access to the developer's private minisign key to achieve this. The CPE entry cpe:2.3:a:tauri:tauri-plugin-updater:* with a wildcard version indicates the issue affects released versions across the plugin's version range up to the fix, and because the plugin is consumed as a library by many desktop applications rather than as a single service, the practical exposure is the entire downstream population of auto-updating Tauri apps.
Know when Tauri Plugin Updater gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N
AV:N and AC:H because the attacker must occupy an in-path/TLS-breaking or server-control position; PR:N since no victim-host privileges are needed; impact is a forced downgrade so I:H only, C:N/A:N.
Primary rating from Vendor (JFROG).
CVSS VectorVendor: JFROG
DescriptionCVE.org
The Tauri updater plugin verifies update binaries using minisign signatures, but the signature covers only the raw binary bytes. The update manifest -- which contains the version number, download URL, and signature -- is fetched over TLS but is never itself signed or authenticated. Because the only anti-rollback check compares the manifest's version field against the current version, and that field is unsigned, an attacker who can serve a crafted manifest can force installation of any older signed release without possessing the developer's private key.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
EUVD-2026-85170
GHSA-p8c6-29q6-cqw7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB