CVE-2026-47233
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 13 - wyżej niż 13% wszystkich znanych CVE
Streszczenie
Admidio to open-source'owe narzędzie do zarządzania użytkownikami. Wersja 5.0.9 dodała brakującą kontrolę `isAdministratorInventory()` do `case 'item_delete':` w `modules/inventory.php`. Ta sama poprawka nie została zastosowana do sąsiedniego `case 'field_delete':`, który niszczy całą definicję pola inwentarza, kaskadowo usuwając wszystkie wiersze `adm_inventory_item_data` i wpisy `adm_inventory_field_options`. Procedura sprawdza tylko token CSRF związany z sesją; nie ma kontroli `isAdministratorInventory()` na poziomie kontrolera, a `Admidio\Inventory\Entity\ItemField::delete()` nie egzekwuje jej na poziomie encji (w przeciwieństwie do `ItemField::save()`, które sprawdza `$gCurrentUser->isAdministrator()`). Każdy zalogowany użytkownik może trwale zniszczyć nie-systemowe pole inwentarza, wysyłając jeden POST. Wersja 5.0.10 zawiera poprawkę.
Ocena ryzyka
Ryzyko trwałego usunięcia pól inwentarza przez nieuprawnionych użytkowników, co może prowadzić do utraty danych i zakłócenia działania systemu.
Rekomendacja
Zaleca się aktualizację Admidio do wersji 5.0.10 lub nowszej oraz ograniczenie dostępu do funkcji zarządzania inwentarzem.
Oryginalny opis (angielski, źródło NVD)
Admidio is an open-source user management solution. Version 5.0.9 added a missing `isAdministratorInventory()` gate to `case 'item_delete':` in `modules/inventory.php`. The same fix was not applied to the sibling `case 'field_delete':` handler, which destroys an entire inventory field definition, cascading to every `adm_inventory_item_data` row that referenced that field and every `adm_inventory_field_options` entry. The handler validates only a session-bound CSRF token; there is no `isAdministratorInventory()` check at the controller level, and `Admidio\Inventory\Entity\ItemField::delete()` does not enforce one at the entity level either (unlike its sibling `ItemField::save()`, which does check `$gCurrentUser->isAdministrator()`). Any user who can log in to the site can permanently destroy a non-system inventory field by sending one POST. Version 5.0.10 provides an updated fix.

