Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify target Immich user with active session
-
DeliveryCraft /auth/login URL with malicious continue payload
-
ExploitDeliver link via phishing or chat
-
InstallVictim click triggers redirect() to attacker JS
-
C2XSS executes in Immich origin
-
ExecutePayload mints all-permission API key
-
ImpactPersistent account takeover via stolen key
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Victim must already be authenticated to a vulnerable Immich instance (commit range 4ffa26c9 to pre-4eb1003) and must click an attacker-supplied link pointing at /auth/login with a malicious continue query parameter (UI:R in the CVSS vector). No attacker authentication is required (PR:N), no special server configuration is needed - the vulnerable code path is on the default login route - and the Immich web UI must be reachable by the victim's browser. Exploitation is limited to users with active sessions; an unauthenticated visitor would only experience a redirect/XSS without the API-key-minting takeover impact. |
| Impact | All severity signals point in the same direction: CVSS 3.1 vector AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H (9.6 Critical) reflects unauthenticated network-reachable exploitation requiring only that an already-authenticated victim click a link, with a scope change because the XSS executes in Immich's origin and yields full account control via API-key minting. Real-world impact is high because Immich instances are typically internet-reachable (self-hosted media servers behind reverse proxies) and the attacker chain converts a transient XSS into a persistent all-permission API key - a true account takeover, not just session theft. KEV status is NO and POC=NO, so this is not yet on CISA's actively-exploited list and no EPSS value was provided in the input, but the GHSA advisory plus a public patch commit make weaponization trivial for any researcher. No conflicting signals in the data; the main uncertainty is real-world exploitation prevalence, which is unknown. |
| Exploit ScenarioDerived | An attacker sends a target Immich user a chat message or email containing a link such as https://immich.example.com/auth/login?continue=javascript:fetch('/api/api-keys',{method:'POST',...}); the victim, already logged in, clicks the link, the login page hands the continue value to SvelteKit's redirect(), and the javascript: URL executes in Immich's origin. The payload calls the API-key endpoint with the victim's session cookie to create an all-permission key, exfiltrates it to the attacker, and the attacker now has persistent backend access independent of the victim's session. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 23, 2026
Reflected cross-site scripting in Immich (commits 4ffa26c9 through pre-4eb1003) allows a single-click account takeover of any authenticated user by abusing the unvalidated continue query parameter on /auth/login, which is passed directly to SvelteKit's redirect() without scheme or origin checks. The payload executes attacker-controlled JavaScript inside Immich's origin and uses the victim's session to mint an all-permission API key, yielding persistent compromise. No public exploit identified at time of analysis, but the upstream fix commit and a detailed GHSA advisory describe the flaw clearly enough to derive a working PoC.
RemediationAI
Upstream fix available (commit 4eb100327ea5da2e90381b96809f1f1cc51cc7e3); update Immich to any build that includes this commit per the vendor advisory at https://github.com/immich-app/immich/security/advisories/GHSA-8244-8vpr-vp9c. The fix introduces a Route.continue() helper that rejects continue values not beginning with a single '/', and applies it to both /auth/login and /auth/pin-prompt. If you cannot upgrade immediately, place Immich behind a reverse proxy that strips or sanitizes the continue query parameter on /auth/login and /auth/pin-prompt (for example by dropping any continue value not matching ^/[^/] in nginx or Caddy), and consider tightening the Content-Security-Policy to forbid inline script and javascript: URLs - the trade-off is that the parameter is then non-functional, so users will lose deep-link-after-login behavior. Revoking and rotating any API keys created during the exposure window is also recommended, since the exploit primitive is exactly to mint an attacker-controlled key.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Immich is a self-hosted photo and video management platform whose web frontend is built on SvelteKit. The vulnerability is a textbook CWE-79 (Improper Neutralization of Input During Web Page Generation) realized through an open-redirect-to-XSS pattern: web/src/routes/auth/login/+page.ts read url.searchParams.get('continue') and handed it straight to SvelteKit's redirect() helper. SvelteKit's redirect() accepts arbitrary URL strings including javascript: and protocol-relative (//evil.tld) values, so without scheme/origin validation an attacker-controlled URL is dereferenced in the same-origin context of the login page. The CPE cpe:2.3:a:immich-app:immich:*:*:*:*:*:*:*:* covers all Immich web builds containing the vulnerable route between commit 4ffa26c9 and the fix 4eb1003. The patch adds a Route.continue() helper in web/src/lib/route.ts that only permits values starting with '/' and not '//', and applies it to both the login and pin-prompt flows.
Know when Immich gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
Network-reachable login page (AV:N), no auth to send the link (PR:N), victim click required (UI:R), XSS in Immich origin escapes login-page scope (S:C) and API-key minting yields full C/I/A.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
immich is a high performance self-hosted photo and video management solution. From commit 4ffa26c9 until 4eb1003, a reflected cross-site scripting (XSS) vulnerability on the /auth/login page allows an attacker to fully compromise any authenticated user's account with a single link click. The continue query parameter is read from the URL and passed to SvelteKit's redirect() without any scheme or origin validation, allowing attacker-controlled JavaScript to execute inside Immich's origin. The payload then uses the victim's existing session to mint an all-permission API key on their account, leading to persistent account takeover. This vulnerability is fixed in commit 4eb1003.
Executive ViewAI
A critical vulnerability in Immich enables attackers to compromise any user account through a malicious link, gaining permanent access to photo libraries and organizational data via API tokens. Immediate action is required to prevent account takeover and unauthorized persistent access across all deployed instances.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict /auth/login endpoint access by IP whitelist if operationally feasible; implement WAF rules to block or validate the 'continue' parameter; monitor and audit API key creation events for anomalies; consider temporarily disabling public access if not business-critical, pending patch availability.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Album ownership takeover in immich before 3.0.3 allows a user with shared-album editor access to escalate to full owner
Immich versions prior to 2.5.0 contain an improper access control flaw that allows any authenticated API key to escalate
Authenticated partners in Immich through 3.3.1 can read metadata from assets stored in another user's Locked Folder - in
Remote code execution in Immich before 3.2.4 lets any authenticated non-admin user with upload permission run arbitrary
Locked asset visibility bypass in Immich through 3.1.0 exposes private photo and video assets to unauthorized viewers vi
Improper authorization in Immich's Shared Link Preview Handler (server/src/utils/access.ts, function checkSharedLinkAcce
Unauthenticated filesystem path injection in Immich's machine-learning service (vulnerable through 3.0.3, fixed in 3.3.0
Immich prior to version 2.6.0 discloses shared album passwords in cleartext within URL query parameters during authentic
Stored Cross-Site Scripting in Immich photo management platform versions prior to 2.7.0 enables authenticated attackers
Open redirect vulnerability in Immich prior to version 2.7.3 allows authenticated attackers to craft malicious shared al
Immich before 3.0.0 leaks the GPS coordinates and asset identifiers of a sharer's archived photos and videos to view-onl
Immich before 3.2.0 lets an authenticated regular user attach another user's asset to a shared link they legitimately ow
EUVD-2026-38551
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB