Skip to main content

CVE-2026-104867immich-app immich insecure direct object reference

Low priorityMedium4.3EPSS 0.31%, higher than 24% of scored CVEs

CVE-2026-104867 is a insecure direct object reference in immich-app immich, rated medium (4.3 on CVSS 3.1).

Why this priority: Medium severity, with no exploitation signal.

Published · Updated · NVD status: Deferred

What it is

Changing an identifier in a request reaches another user's records. Permissions are too broad to separate the people who should and should not have access.

How it is reached

An attacker can exploit it over the network, with an ordinary user account, and nobody has to click anything.

What an attacker gains

The direct impact is limited: partial access to data or a partial outage. In practice, this kind of flaw lets an attacker reach data or actions their role should not allow.

Is it being exploited?

CISA's SSVC assessment notes a public proof of concept. EPSS estimates a 0.31% chance of exploitation activity in the next 30 days, higher than 24% of scored CVEs.

What to do

  1. Upgrade immich-app immich to 3.2.0 or later.
  2. Until it is patched, review who holds accounts that can reach it.

Description from NVD

Immich is a high-performance self-hosted photo and video management solution. From 3.0.0 until 3.2.0, the GET /api/admin/users/{id}/calendar-heatmap route in server/src/controllers/user-admin.controller.ts uses the ordinary Permission.UserRead permission without an admin-route requirement, and UserAdminService.getCalendarHeatmap in server/src/services/user-admin.service.ts does not compare the authenticated user with the requested user identifier or perform a separate access check. Any authenticated non-admin user can therefore request another account's upload or capture-date activity heatmap for an arbitrary date range. AssetRepository.getCalendarHeatmap in server/src/repositories/asset.repository.ts filters by owner, date, and deletion state but not visibility, so the returned daily counts and total count include archived and locked assets. The route exposes counts and activity dates but does not return asset metadata or content, and it does not affect integrity or availability. This issue is fixed in version 3.2.0.

What this means for your architecture.

A CVE names a product. Whether it matters depends on where that product sits in your systems: what reaches it, which trust boundary it guards and what it can reach once compromised. Veriom maps your components, their relationships and your trust boundaries from your code, cloud and delivery evidence, so you can see where a component like this sits. The radar itself does not look at your systems.

Components it touches

  • Permission checks in APIs and admin surfaces. The flaw sits between one role or tenant and another.
  • Multi-tenant services. The flaw sits between one role or tenant and another.

Trust boundaries in play

  • Authenticated network access. An account is needed, so exposure follows who can sign in: customers, partners or staff.
  • Between one role or tenant and another. An attacker who crosses it can reach data or actions their role should not allow.

Questions to answer about your own systems

  • Where does immich-app immich run in your systems, and at which version?
  • Which of those instances can be reached from the internet or partner networks?
  • What can it reach once compromised: which data stores, secrets and services?

Sources

  • CVE records and CVSS scores from the NVD CVE API. This product uses the NVD API but is not endorsed or certified by the NVD.
  • Exploitation status from CISA’s Known Exploited Vulnerabilities catalog.
  • Exploit likelihood from FIRST’s Exploit Prediction Scoring System (EPSS), refreshed daily.
  • Explanations are written by Veriom from fixed templates over each record’s data, not by a person reviewing each CVE. Descriptions are quoted from the records as published.