CVE-2026-104867
Published:October 13, 2026
Updated:October 14, 2026
The admin route "GET /api/admin/users/{id}/calendar-heatmap" is declared with "@Authenticated({ permission: Permission.UserRead })" instead of "@Authenticated({ permission: Permission.AdminUserRead, admin: true })", and the service method behind it performs no ownership or role check. Every other endpoint on "UserAdminController" carries "admin: true"; this one does not. As a result any authenticated non-admin user can retrieve any other user's activity heatmap — the per-day count of their assets and the total asset count — for an arbitrary date range. The underlying query applies no visibility filter, so archived and locked (PIN-protected) assets are included in the counts.
Affected Packages
https://github.com/immich-app/immich.git (GITHUB):
Affected version(s) >=v3.0.0 <v3.2.0Fix Suggestion:
Update to version v3.2.0Related Resources (3)
Do you need more information?
Contact UsCVSS v4
Base Score:
5.3
Attack Vector
NETWORK
Attack Complexity
LOW
Attack Requirements
NONE
Privileges Required
LOW
User Interaction
NONE
Vulnerable System Confidentiality
LOW
Vulnerable System Integrity
NONE
Vulnerable System Availability
NONE
Subsequent System Confidentiality
NONE
Subsequent System Integrity
NONE
Subsequent System Availability
NONE
CVSS v3
Base Score:
4.3
Attack Vector
NETWORK
Attack Complexity
LOW
Privileges Required
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
LOW
Integrity
NONE
Availability
NONE