End of life — September 2026. SolarFlare is no longer maintained and this site is kept for reference only. No further releases, updates, bug fixes, or security patches will be published. Users are encouraged to migrate to Slipstream, the successor project, which remains actively maintained.

On this page
Project & ReleaseSecurity

Security Policy & Advisories

Vulnerability disclosure procedures, security mechanisms, and supported version matrices.

4 min readUpdated August 2026

Supported Release Versions#

VersionSupportedPatch Cadence
Latest 1.3.x releaseYesImmediate security patches & hotfixes
master branchYesContinuous rolling security updates
Older 1.x releasesBest EffortSupported until the next minor release
Pre-1.0 tagsNoUnsupported legacy releases

Reporting a Vulnerability#

If you discover a security vulnerability in SolarFlare, please do not open a public issue.

Submit a confidential report via GitHub Private Security Advisory.

Reports are triaged promptly by the maintainer.

Security Architecture & Defenses#

  • Scoped API Tokens: Fine-grained permission model prevents external automation from accessing arbitrary administrative operations.
  • CSRF Token Validation: State-changing browser requests require valid X-CSRF-Token headers.
  • Signed Webhooks: Outgoing webhook payloads carry HMAC-SHA256 signatures (X-Solarflare-Signature).
  • Encrypted Local Stream: RTSP and video/audio channels are encrypted with TLS and AES-128-GCM.

Hardening checklist#

PriorityAction
HighStrong Web UI password; never keep defaults
HighKeep origin_web_ui_allowed at lan or pc
HighNever expose port 47990 to the Internet without a hardened reverse proxy
MediumScoped Bearer tokens instead of admin Basic in automation
Mediumwebhook_secret set; receivers verify HMAC signatures
Mediumtrusted_subnet_auto_pairing disabled unless strictly needed
MediumCA-signed TLS cert when browsers reach the UI remotely
LowPrune csrf_allowed_origins and unused paired clients

Mechanisms in depth#

The origin gate (pc loopback-only, lan private/local default, wan anywhere) runs before authentication: outsiders get bare HTTP 403. Both listeners (GameStream port default 47989, Web UI port +1) share the configured cert/pkey; Moonlight pins the cert at pairing, so a key change forces re-pairing and a pre-pairing MITM is the residual risk. Passwords are salted SHA-256; API tokens are 64-char hex stored as SHA-256(token:salt). Browsers need X-CSRF-Token on state-changing calls (same-origin and allowlisted origins skip it; curl without Origin/Referer is exempt). Trusted-subnet auto-pairing silently pairs matching CIDRs — keep ranges tight. Webhooks accept https only, retry twice, and sign with X-Solarflare-Signature when a secret is set. The GameStream HTTPS handshake pool is capped at 64 concurrent to blunt slow-handshake DoS. GET /api/browse exposes host paths to the process user, so combine auth, origin policy, and OS permissions.

Fixes, versions & disclosure#

No LTS branches and no backports: fixes land on master and ride the next tag. Confirm patch state with both the installed package version and GET /api/health version. Pre-tag fixes: pull master, rebuild or re-run linux-install.sh, re-check /api/health. Monitor both SolarFlare and upstream Sunshine advisories for inherited components (OpenSSL, FFmpeg, libcurl). Reports: affected version/commit, component, reproducer, impact, optional fix — expect acknowledgement in about 7 days, a fix on master, a changelog entry, and a published advisory when impact warrants it.