SHAWZIFY

Security policy

Reporting a vulnerability

Please report privately rather than in a public issue: open a security advisory on this repository. If you cannot, open a normal issue that says only that you have a security report and asks for a contact — no details in it.

Expect an acknowledgement within a week. Fixes ship in the next release; if the problem is serious, sooner.

What SHAWZIFY does, so you know what to look at

It is a local desktop application. It has no server, no accounts and no telemetry, so most of the usual attack surface does not exist. What is left:

Local HTTP server (shawzify web). Binds 127.0.0.1 and refuses to construct on any other host. Every API request needs a token, which the CLI prints in a URL and stores in %LOCALAPPDATA%\Shawzify\web-token so the link survives a restart. Cross-origin requests are rejected. The page itself is served without authorisation — a browser cannot attach a token to a <script src> — so the document deliberately carries no secret. Anyone who can read that token can drive the engine, which is why it is not printed anywhere else. --new-token rotates it.

Media route. Serves files only from inside SHAWZIFY's own cache directory, resolved and re-checked after symlink resolution.

The stdio sidecar. The desktop shell talks to the engine over a pipe that only the parent process holds. There is no port and nothing to connect to.

Untrusted input. Audio files, MIDI files, project files, song codes and link metadata are all treated as data. Nothing from them is executed, interpolated into a shell command, or used to build a file path without validation. FFmpeg is invoked with an argument array, never a shell string.

Windows input simulation. Live playback sends ordinary SendInput keystrokes, and only while Warframe is the focused window — the check runs before every event and cannot be turned off. There is no injection, no memory access and no hooking of anything.

Network. Only two things reach out: an explicit link fetch you asked for (via yt-dlp, or the Spotify Web API with your own credentials), and a one-time model download on first use of an ML backend. No audio ever leaves the machine.

Things that are not vulnerabilities

Advisories that do not apply here

Dependency scanners flag the whole lockfile, and a lockfile covers every platform. Two categories show up on this project and neither reaches anyone who installs it:

glib (RUSTSEC unsoundness in VariantStrIter). It arrives through tauri > muda > gtk > atk > glib, and every link in that chain is Linux only. SHAWZIFY ships Windows, where the crate is not in the dependency graph at all:

cd apps\desktop\src-tauri
cargo tree -i glib --target x86_64-pc-windows-msvc   # prints nothing
cargo tree -i glib --target x86_64-unknown-linux-gnu # prints the chain above

It is also not fixable from here: 0.18.5 is the newest version Tauri's chain permits and the fix landed in 0.20.0. A future Tauri release will carry it.

Vite, Vitest and esbuild dev-server advisories. Those are build tooling. They matter to someone running npm run dev on a machine that then visits a hostile page; they are not in the installer, and npm audit --omit=dev reports nothing. They still get updated, because a contributor's machine is worth protecting too.

If you find one that does apply, the reporting instructions are above.

Supported versions

The latest release. This is a small project; there are no maintenance branches.