☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 9.3 🐛 CWE-20
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-31477

CVE-2025-31477 Remote Code Execution in Tauri
📅 PUBLISHED: 2025-04-02 21:10 UTC 🔄 UPDATED: 2026-10-09 05:41 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 1.04%
👁️
1.04% probability
26.0× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
9.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-31477 is a critical vulnerability in the Tauri shell plugin (versions prior to 2.2.1) that allows an attacker to bypass protocol restrictions on the open endpoint. The plugin is designed to open files and URLs using the system’s default handler (e.g., xdg-open on Linux). Due to improper validation of allowed protocols, dangerous schemes like file://, smb://, and nfs:// can be passed to the system opener, leading to remote code execution (RCE) when untrusted user input is processed. This vulnerability requires either direct exposure of the endpoint to users or code execution in the frontend of a Tauri application.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the Tauri shell plugin, which is distributed via npm (@tauri-apps/plugin-shell) and Cargo (tauri-plugin-shell). Applications that use this plugin and expose the open endpoint to untrusted input are at risk. The supply chain risk is moderate, as the plugin is a core component of many Tauri applications.

CVSS Breakdown & Threat Level

  • CVSS Score: 9.6 (Critical)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: Required (user must click a link or trigger the open endpoint)
  • Scope: Unchanged
  • Confidentiality Impact: High
  • Integrity Impact: High
  • Availability Impact: High

Threat Level: Critical. Exploitation can lead to full system compromise.

Deep Dive & Mechanics

The Tauri shell plugin provides an open endpoint that is intended to open files or URLs with the system’s default handler. The plugin maintains a list of allowed protocols (e.g., https, mailto) to prevent abuse. However, the validation logic in versions prior to 2.2.1 is flawed.

Vulnerable Code (simplified):

// Vulnerable validation
function isAllowedProtocol(url) {
  const allowed = ['https:', 'mailto:', 'http:'];
  return allowed.some(protocol => url.startsWith(protocol));
}

This check only verifies that the URL starts with an allowed protocol, but does not ensure that the protocol is exactly one of the allowed ones. For example, file:// is not in the list, but a URL like https://evil.com would pass. However, the real issue is that the validation does not properly reject dangerous protocols when they are passed directly. The fix in 2.2.1 ensures that only exact protocol matches are allowed.

Attack Scenario:

  1. An attacker crafts a URL with a dangerous protocol, e.g., file:///etc/passwd or smb://attacker/share.
  2. The attacker tricks a user into clicking a link that triggers the open endpoint with this URL.
  3. The system’s default handler (e.g., xdg-open) processes the URL, potentially executing code or exposing sensitive files.

Vulnerable vs. Patched Code

Vulnerable (pre-2.2.1):

// Rust implementation (simplified)
fn is_allowed_protocol(url: &str) -> bool {
    let allowed = ["https:", "mailto:", "http:"];
    allowed.iter().any(|&p| url.starts_with(p))
}

This allows file:// because it does not check that the protocol is exactly one of the allowed ones.

Patched (2.2.1):

fn is_allowed_protocol(url: &str) -> bool {
    let allowed = ["https:", "mailto:", "http:"];
    if let Some(pos) = url.find(':') {
        let protocol = &url[..=pos];
        allowed.contains(&protocol)
    } else {
        false
    }
}

This extracts the protocol part and checks for an exact match.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A Tauri application using shell plugin < 2.2.1.
  • The application exposes the open endpoint to user input (e.g., via a webview).

Exploit Steps:

  1. Identify the open endpoint in the Tauri application (e.g., window.__TAURI__.shell.open).
  2. Craft a malicious URL: file:///etc/passwd or smb://attacker/share.
  3. Execute the exploit via JavaScript in the frontend:
    // Exploit code
    window.__TAURI__.shell.open('file:///etc/passwd');
    
  4. On Linux, xdg-open will open the file in the default text editor, exposing sensitive data. On Windows, file:// may execute a script if associated with an executable.

Advanced Exploit:

  • Use smb:// to force the system to connect to an attacker-controlled SMB share, potentially leaking NTLM hashes.
  • Use nfs:// to mount a remote filesystem.

Blue Team

Detection:

  • Monitor for unusual xdg-open or open command invocations with file://, smb://, or nfs:// protocols.
  • Log all calls to the Tauri shell plugin’s open endpoint.

Hunting:

  • Search for Tauri applications that use shell plugin version < 2.2.1.
  • Check application logs for URLs containing dangerous protocols.

Lab Setup:

  • Use a Tauri application with shell plugin 2.2.0.
  • Create a simple webview that calls window.__TAURI__.shell.open with a test URL.
  • Monitor system logs for the open command.

Indicators of Compromise (IOCs)

  • Network: Outbound connections to SMB shares (port 445) or NFS (port 2049) initiated by the Tauri application.
  • File System: Unexpected file reads via file:// protocol.
  • Process: xdg-open or open commands with arguments containing file://, smb://, or nfs://.
  • Logs: Application logs showing calls to shell.open with dangerous protocols.

Detection Engineering

YARA Rule

rule CVE_2025_31477_Tauri_Shell_Open {
    meta:
        description = "Detects Tauri shell plugin open calls with dangerous protocols"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-31477"
    strings:
        $dangerous_protocols = /(file|smb|nfs|ftp):\/\// nocase
        $tauri_open = "shell.open" nocase
    condition:
        $tauri_open and $dangerous_protocols
}

Sigma Rule

title: CVE-2025-31477 Tauri Shell Plugin Dangerous Protocol
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects Tauri shell plugin open calls with dangerous protocols
author: Valters IT
date: 2025-04-10
logsource:
    category: application
    product: tauri
detection:
    selection:
        EventID: 1001  # Example event ID for Tauri plugin calls
        Data|contains:
            - 'file://'
            - 'smb://'
            - 'nfs://'
            - 'ftp://'
    condition: selection
falsepositives:
    - Legitimate use of file:// for local files (rare)
level: high

Suricata Rule

alert tcp any any -> any any (msg:"CVE-2025-31477 Tauri Shell Plugin Dangerous Protocol"; content:"shell.open"; nocase; pcre:"/(file|smb|nfs|ftp):\/\//"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate:

  • Update the Tauri shell plugin to version 2.2.1 or later.
  • If immediate update is not possible, disable the open endpoint or restrict it to a whitelist of safe protocols.

Long-term:

  • Implement input validation for all user-supplied URLs.
  • Use a strict allowlist of protocols (e.g., only https: and mailto:).
  • Monitor for unusual system calls from the Tauri application.

Patch Details:

  • Upgrade to @tauri-apps/plugin-shell@2.2.1 (npm) or tauri-plugin-shell 2.2.1 (Cargo).

Valters IT Signature: This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters.it.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-31477/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.