| Version | Supported |
|---|---|
| 0.1.x | ✅ Current |
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.
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.
| 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 |
- A custom
HTTPTransportimplementation receives the rawURLRequest, which includes theAuthorizationheader. Consumers who log inside a custom transport must not log that header or the full request. See theHTTPTransportdocumentation for safe-logging guidance. SwiftMuseError.searchDisabled(_:)carries the instance's own{"error": "..."}message verbatim. SwiftMuse cannot control its content.
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.
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.