Firefly III user API endpoints expose all users' information to any authenticated user (IDOR)
Summary
The User management API endpoints (GET /api/v1/users and GET /api/v1/users/{id}) are accessible to any authenticated user without admin/owner role verification, exposing all users' email addresses, roles, and account status.
Affected Endpoints
- GET /api/v1/users (UserController::index, line 94) — Lists ALL users with full details. No role check.
- GET /api/v1/users/{id} (UserController::show, line 126) — Shows any user's details by ID. No role check.
Root Cause (1-of-N Inconsistency)
Other methods in the same controller properly check for the 'owner' role:
store()—UserStoreRequest::authorize()checksauth()->user()->hasRole('owner')✓destroy()— Explicitly checks$this->repository->hasRole($admin, 'owner')✓
But index() and show() have no role check at all. The route group at routes/api.php:734-747 has no admin middleware, only the global auth:api middleware.
Exposed Data
The UserTransformer (line 40-54) returns:
email— user's email addressrole— user's role (owner/demo)blocked— account blocked statusblocked_code— block reasoncreated_at/updated_at— timestamps
Impact
Any authenticated user can:
- Enumerate ALL user accounts in the instance
- Harvest email addresses for phishing/social engineering
- Identify admin/owner accounts by role
- Determine which accounts are blocked
Exploitation
# List all users
curl -H "Authorization: Bearer <any_user_token>" https://instance/api/v1/users
# View specific user details
curl -H "Authorization: Bearer <any_user_token>" https://instance/api/v1/users/1
Suggested Fix
Add owner role checks to index() and show(), or restrict the route group with admin middleware:
// Option 1: Add check in controller methods
public function show(User $user): JsonResponse
{
if (!$this->repository->hasRole(auth()->user(), 'owner') && auth()->user()->id !== $user->id) {
throw new FireflyException('200025: No access to function.');
}
// ...
}
// Option 2: Add middleware to route group
Route::group(['middleware' => ['admin'], ...], ...)
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| Composer-Paket | grumpydictator/firefly-iii | >= 6.4.23, < 6.5.1 | 6.5.1 |
Verweise
- CVSS-Vektor
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:P- Schwäche (CWE)
CWE-863- Plattform
- Composer
- Paket
grumpydictator/firefly-iii- Veröffentlicht
- 07.03.2026
- Aktualisiert
- 11.10.2026 10:22
Quellen und Lizenzen
OSV / GitHub Advisory Database - GHSA-5q8v-j673-m5v4 - CC BY 4.0
Schwachstellenhistorie: grumpydictator/firefly-iii
Alle veröffentlichten Schwachstellen dieses Pakets (Composer-Paket), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
- Einträge insgesamt
- 26
- Erste → letzte
- 08.2021 06.2026
- Ohne Fix
- 3
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Kritisch 1
- Hoch 1
- Mittel 22
- Niedrig 2
Veröffentlichungen pro Jahr
- 2021: 12
- 2022: 5
- 2023: 3
- 2024: 3
- 2025: 0
- 2026: 3
-
Firefly III user API endpoints expose all users' information to any authenticated user (IDOR) dieser Eintrag
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.