Please use GitHub's private reporting: the Report a vulnerability button under the repository's Security tab. Do not open a public issue for anything security-sensitive.
FundaCAD is a small project. If a report is valid the fix ships in the next release, and the advisory is credited to you unless you prefer otherwise.
Only the latest release is supported; older installers are not patched.
In scope:
- the desktop app: Tauri shell (Rust), webview frontend (TypeScript), the geometry engine, the Funda Engine (Rust, a worker process of the app)
- the engine's localhost WebSocket (token-gated, bound to 127.0.0.1), served by
fundacad-engine --wsand by the app's engine for a live session - the live session: while the app runs it writes its engine's port and token to
session.jsonin its per-user app data directory, owner-only, so an AI assistant connected through MCP can join it (docs/MCP.md). Holding that token means driving the geometry engine; reaching the DOCUMENT the user has open additionally requires the app's own live-editing setting, which is visible in the window while anyone is attached. Reports about that file's permissions, or about the session rules incrates/fundacad-engine/src/live.rs, are in scope - the signed update pipeline (release artifacts and
latest.json) - plugins: the permission model, the install-time consent screen, and everything between the download and the unpacked directory (
docs/PLUGINS.md). A bundle that installs holding permissions its screen did not show, an archive entry that lands outside the plugin's own directory, or a download accepted from anywhere but this repository's releases, are all in scope. What is NOT a finding is aprocessplugin reading the user's files: it runs as the user, the install screen says so in those words, and until per-platform sandboxing lands that is a documented limit rather than a defect. Nor is abuiltincapability reaching past its listed grants: a built-in is the app's own code, the screen says so in those words too, and its switch is a guarantee that it does not run, not a boundary around it while it does - document parsing:
.fundaand.sindrifiles, and imported STL/3MF/STEP/OBJ - the printers you configure on your own LAN
FundaCAD has no accounts and no backend. It makes no network calls of its own except the update check, a plugin download you asked for, and the printers you point it at, so there is no hosted service in scope.
Out of scope: vulnerabilities that require an already-compromised machine, and reports from automated scanners without a plausible impact. That includes another process running as the same user reading session.json: a process with that access can already read and rewrite the user's documents directly, so the file grants it nothing it did not have.