Homepage v2.6.0, released today, resolves GHSA-qxcr-4rv3-v23r, a high-severity authentication bypass that affects the self-hosted dashboard’s 2.0.0 through 2.5.0 releases in the official Docker image. Homepage is a popular customizable startpage for home labs, wired into Docker and service APIs. The advisory has no CVE assigned yet, its report has been sanitized for publication, and the fixing release and the advisory were published minutes apart.

The bypass

The advisory’s summary, in its own words: when Homepage’s built-in authentication is enabled (HOMEPAGE_AUTH_ENABLED=true), an unauthenticated attacker can bypass the login check on protected pages and API routes, using a Next.js internal request header combined with a build-time key that ships across the same image tag. The details: Next.js skips its middleware entirely for internal on-demand revalidation requests, identifying them by a header whose value must match the build’s preview key; the key is generated during the build and stored in the output. Supplying the header with the right value skips the middleware, including the authentication check and HOMEPAGE_ALLOWED_HOSTS validation.

What an attacker gets

Per the advisory, an unauthenticated network attacker who can reach the instance can view the dashboard and the /api/services and /api/bookmarks responses; read Kubernetes cluster and pod status, if configured; and use the service widget proxy to make Homepage send requests to configured backends and return their responses. Stored credentials are not returned directly. None of the three requires an account or a session on the instance.

The Homepage dashboard shown on a tablet: a dark glassmorphism layout with system widgets for Proxmox, NAS storage and network traffic, media tiles for Plex and Emby, and tiles for services like Radarr, Sonarr, SABnzbd, Portainer and Nextcloud, over a rainy city wallpaper.
The official Homepage dashboard screenshot, shown on a tablet. It does not depict the vulnerability. Image: Homepage.

The fix and the workaround

The fix is the upgrade: v2.6.0’s notes list “Resolve GHSA-qxcr-4rv3-v23r” in the security section, alongside an authentication architecture refactor and a fix that preserves dollar sequences in environment and file secrets. If an immediate upgrade is not possible: configure the reverse proxy to strip or reject the x-prerender-revalidate request header, and do not expose Homepage directly to untrusted networks without a proxy in front. The advisory describes the built-in authentication path in the official Docker image; instances without authentication enabled are not the case it covers. The advisory record credits the report to nicholas-fedor and the remediation to maintainer shamoon.

My read

Patch first, read second: a pre-authentication path to the dashboard, its service and bookmark APIs, and the widget proxy is about as exposed as a home-lab service gets, and the fix shipped the same morning the advisory went out. The header-strip rule is worth keeping on a reverse proxy anyway, and the episode is a reminder that a login page is not a perimeter.

Source: the v2.6.0 release and the security advisory.