Skip to content

Security: CassetteLab/SwiftMuse

Security

SECURITY.md

Security Policy

Supported versions

Version Supported
0.1.x ✅ Current

Reporting a vulnerability

Please do not open a public GitHub issue for security vulnerabilities.

Instead, report them privately via GitHub's security advisory system.

You will receive an acknowledgement within 72 hours. If the vulnerability is confirmed, a patch and coordinated disclosure will follow within a reasonable timeframe depending on severity.

Security model

SwiftMuse is a client library that talks to an AudioMuse-AI instance over HTTP. AudioMuse authentication, when enabled, is a bearer token sent in the Authorization header. The token is supplied by the consumer, held only in the configuration, and never logged.

Protections built into the library

Protection Where
Bearer token redacted in all string representations SwiftMuseConfiguration.description
Token never stored in error types SwiftMuseError
Logging is opt-in and off by default SwiftMuseConfiguration.logSubsystem
Log records carry method / path / status only, never the token SwiftMuseClient
No credentials in URLRequest query parameters (header only) SwiftMuseClient.send
Per-request timeout to avoid silent hangs SwiftMuseConfiguration.requestTimeout

Known exposure surfaces (by design)

  • A custom HTTPTransport implementation receives the raw URLRequest, which includes the Authorization header. Consumers who log inside a custom transport must not log that header or the full request. See the HTTPTransport documentation for safe-logging guidance.
  • SwiftMuseError.searchDisabled(_:) carries the instance's own {"error": "..."} message verbatim. SwiftMuse cannot control its content.

Scope

Relevant security areas:

  • Credential handling (bearer token)
  • URL construction and parameter injection
  • Response parsing (malformed or malicious instance responses)
  • Transport-layer behaviour (TLS, timeouts)

Out of scope: vulnerabilities in the AudioMuse-AI server software itself, or in the media servers it is wired to.

A note on HTTP

AudioMuse instances commonly run on a LAN over plain HTTP (e.g. http://nas.local:8000). SwiftMuse does not force HTTPS, because that is the normal deployment. When exposing an instance beyond a trusted network, put it behind TLS and use a token.

There aren't any published security advisories