CVE-2026-54630
KrytyczneCVSS 9.6Streszczenie
W Part-DB przed wersją 2.12.1 mechanizm blokowania niebezpiecznych rozszerzeń przy przesyłaniu załączników nie obejmuje rozszerzenia .phar. Plik .phar przesłany jako załącznik trafia do katalogu public/media/, który jest dokument root Apache, a konfiguracja Apache kieruje .phar do PHP-FPM, co pozwala na wykonanie dowolnego kodu PHP.
Ocena ryzyka
Uwierzytelniony użytkownik z domyślnej grupy users może przesłać złośliwy plik .phar i uzyskać wykonanie kodu jako użytkownik www-data, co może prowadzić do przejęcia serwera.
Rekomendacja
Zaktualizuj Part-DB do wersji 2.12.1 lub nowszej oraz rozważ usunięcie .phar z obsługiwanych rozszerzeń w konfiguracji Apache/PHP-FPM.
Inne podatności w Part-DB
Zobacz wszystkie- CVE-2026-86055Wysokie
Part-DB przed wersją 2.13.3 buduje bezwzględny URL linku do resetowania hasła na podstawie nagłówka HTTP Host dostarczonego przez klienta, bez walidacji zaufanego hosta. Nieuwierzytelniony atakujący może wysłać żądanie resetu hasła dla znanego konta ze sfałszowanym nagłówkiem Host, powodując wysłanie linku z hostem kontrolowanym przez atakującego, ale z prawdziwym tokenem resetowania. Gdy ofiara otworzy link (lub zrobi to skaner poczty), token wycieka do atakującego, który może przejąć konto, w tym konto administratora.
- CVE-2026-86020Średnie
Part-DB przed wersją 2.13.2 zawiera podatność na wstrzyknięcie formuł arkusza kalkulacyjnego w procesie importu/eksportu części. Uwierzytelniony użytkownik z uprawnieniami do importu może zaimportować plik CSV zawierający wartości z prefiksem formuły, takie jak =1+1, do kontrolowanych pól części. Gdy część zostanie wyeksportowana jako arkusz XLSX, Part-DB zapisuje wartość za pomocą setCellValue() bez neutralizacji znaków formuły, co może spowodować wykonanie formuły przez oprogramowanie arkusza kalkulacyjnego innego użytkownika.
- CVE-2026-86019Średnie
Part-DB przed wersją 2.13.2 pozwala uwierzytelnionym użytkownikom API obejść skonfigurowany maksymalny rozmiar załącznika, przesyłając załączniki przez API z danymi pliku zakodowanymi w base64. Aplikacja egzekwuje limit rozmiaru dla zwykłych przesyłań przez przeglądarkę, ale ścieżka API base64 nie stosuje tej samej walidacji. W rezultacie użytkownik z dostępem do API i uprawnieniami do tworzenia załączników może przesłać pliki większe niż limit, potencjalnie wyczerpując miejsce na dysku i powodując odmowę usługi.
- CVE-2026-86018Średnie
Part-DB przed wersją 2.13.2 pozwala uwierzytelnionym użytkownikom obejść skonfigurowany maksymalny rozmiar załącznika podczas korzystania z funkcji „Download external file” po stronie serwera. Gdy pobieranie załączników po stronie serwera jest włączone, Part-DB pobiera zdalny plik i strumieniuje go bezpośrednio na dysk bez egzekwowania limitu MAX_ATTACHMENT_FILE_SIZE. W rezultacie użytkownik z uprawnieniami do tworzenia lub edycji załączników może spowodować przechowywanie plików większych niż limit, potencjalnie wyczerpując miejsce na dysku i powodując odmowę usługi.
- CVE-2026-59188Średnie
Part-DB przed wersją 2.12.3 sanityzuje pliki SVG wyłącznie na podstawie rozszerzenia nazwy pliku kontrolowanego przez użytkownika, a nie rzeczywistego typu zawartości. Uwierzytelniony atakujący może przesłać złośliwy plik SVG z ładunkiem JavaScript podając inne rozszerzenie (np. .jpg), całkowicie omijając sanityzację. Gdy dowolny użytkownik wyświetli załącznik inline, przeglądarka otrzyma Content-Type: image/svg+xml i wykona osadzony skrypt w kontekście Part-DB.
- CVE-2026-55600Średnie
W Part-DB przed wersją 2.12.2 komunikaty walidacji BOM są renderowane z użyciem filtra |raw w Twig, a zawierają placeholdery wypełniane nazwami części kontrolowanymi przez użytkownika. Użytkownik mogący edytować nazwę części może zapisać znaczniki HTML, które zostaną wyrenderowane na stronie wyników walidacji BOM innego użytkownika, co prowadzi do przechowywanego wstrzyknięcia HTML.
- CVE-2026-54631Średnie
W Part-DB przed wersją 2.12.1 plik .env w repozytorium zawiera stałą wartość APP_SECRET, której oficjalny obraz Docker jbtronics/part-db1 nie nadpisuje ani nie losuje przy starcie kontenera. Symfony używa APP_SECRET jako klucza HMAC do podpisywania ciasteczek remember-me, więc atakujący znający ten sekret może sfałszować ciasteczko remember-me dowolnego użytkownika i uzyskać w pełni uwierzytelnioną sesję bez poświadczeń.
- CVE-2026-54615Średnie
W Part-DB, systemie zarządzania inwentarzem komponentów elektronicznych, w wersjach przed 2.12.1 występuje podatność typu stored XSS. Klasa LogEntryExtraFormatter w gałęzi CollectionElementDeleted wstawia nazwę usuniętego pod-elementu (getOldName(), getCollectionName()) do HTML bez użycia htmlspecialchars(), co pozwala użytkownikowi z niskimi uprawnieniami zapisać złośliwy kod HTML/JS jako nazwę pod-elementu, a następnie wywołać jego wykonanie w przeglądarce administratora lub audytora przeglądającego dziennik aktywności lub historię elementu.
Oryginalny opis (angielski, źródło NVD)
Part-DB is an open source inventory management system for electronic components. Prior to version 2.12.1, the part attachment upload handler stores uploaded files under the web-served media directory using the client-supplied file extension, and its extension blocklist does not include phar. AttachmentSubmitHandler::renameBlacklistedExtensions() rewrites dangerous extensions (php, phtml, sh, cgi, py, js, html, htaccess, ...) to .txt, but phar is absent from the list, so a .phar file keeps its extension. Public attachments (the default) are written into public/media/, which is the Apache document root. The shipped Apache configuration routes .phar to PHP-FPM, so the stored file is executed as PHP on request. The per-attachment-type extension filter is empty by default and is not consulted by the upload handler in a way that blocks this, and a non-admin user in the default users group can create an attachment type with no filter and attach files to parts. Any authenticated user in the default users group uploads a .phar attachment to a part and fetches it under /media/, executing arbitrary PHP as the www-data web user. Ability to exploit depends on the webserver config, docker image contained the vulnerability by default. This issue has been patched in version 2.12.1.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

