CVE-2026-100392
WysokieCVSS 7.0Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 12 - wyżej niż 12% wszystkich znanych CVE
Streszczenie
InvoicePlane to samodzielnie hostowana aplikacja open source do zarządzania fakturami, klientami i płatnościami. W wersji 1.7.2 funkcja Users::form() nie wykonuje kontroli autoryzacji na poziomie obiektu dla user_id = 1. Administrator drugorzędny (user_type = 1, user_id != 1) może zmienić user_type administratora głównego na 2 (Gość / tylko do odczytu), niszcząc uprawnienia konta root i blokując legalnemu właścicielowi dostęp do instancji. W momencie publikacji nie ma publicznie dostępnych poprawek.
Ocena ryzyka
Administrator drugorzędny może pozbawić uprawnień administratora głównego, blokując mu dostęp do systemu. Prowadzi to do eskalacji uprawnień i potencjalnego przejęcia kontroli nad instancją.
Rekomendacja
Brak dostępnych poprawek — monitoruj oficjalne źródła w poszukiwaniu aktualizacji. Ogranicz liczbę administratorów drugorzędnych i rozważ ręczną weryfikację zmian w kontach użytkowników.
Inne podatności w InvoicePlane
Zobacz wszystkie- CVE-2026-85293Średnie
W InvoicePlane w wersji 1.7.2-beta-1 wartość client_email jest przechowywana bez sprawdzania składni adresu e-mail i wyświetlana bez escape'owania wewnątrz atrybutów z podwójnymi cudzysłowami w formularzach mailerów. Administrator, który może edytować klienta, może zapisać dane łamiące atrybuty, a gdy mailer jest skonfigurowany, JavaScript wykonuje się po otwarciu strony mailera przez innego administratora. Problem naprawiono w wersji 1.7.2.
- CVE-2026-85292Średnie
Przed wersją 1.7.2 w InvoicePlane kontroler User_Controller porównuje wartość user_type z sesji z wymaganą rolą za pomocą luźnego operatora nierówności PHP. W niestandardowym backendzie sesji, który zwraca niespodziewane typy skalarne, type juggling może spowodować, że wartość nie będąca ściśle wymaganą rolą przejdzie kontrolę autoryzacji. Problem naprawiono w wersji 1.7.2.
- CVE-2026-85291Średnie
Przed wersją 1.7.2 w InvoicePlane metoda Users::change_password() przyjmuje user_id z URL i aktualizuje hasło tego konta bez autoryzacji na poziomie obiektu. Uwierzytelniony administrator drugorzędny może zmienić hasło konta administratora głównego bez znajomości obecnego hasła, a następnie przejąć konto i uzyskać jego dane oraz uprawnienia. Problem naprawiono w wersji 1.7.2.
- CVE-2026-85289Średnie
Przed wersją 1.7.2 w InvoicePlane brakuje walidacji tokena CSRF w metodach usuwania, takich jak Payments::delete(), Recurring::delete() i User_clients::delete(). Mimo że trasy wymagają metody POST, nie sprawdzają tokena CSRF. Atakujący może wysłać formularz z innego origin przez przeglądarkę uwierzytelnionego administratora, aby usunąć dane finansowe i inne rekordy. Problem naprawiono w wersji 1.7.2.
- CVE-2026-85274Średnie
Przed wersją 1.7.2 w InvoicePlane trasa Recurring::stop() jest dostępna przez GET i nie waliduje tokena CSRF. Gdy uwierzytelniony administrator załaduje treść kontrolowaną przez atakującego, która żąda /invoices/recurring/stop/{id}, aplikacja zatrzymuje wybraną fakturę cykliczną. Atakujący może celować w wiele identyfikatorów, przerywając cykliczne rozliczenia i powodując straty finansowe. Problem naprawiono w wersji 1.7.2.
- CVE-2026-54790Średnie
Przed wersją 1.7.2 w InvoicePlane wartość custom_field_table jest przechowywana bez sprawdzania zgodności z dozwolonymi nazwami tabel pól niestandardowych. Metoda Mdl_custom_fields::used() później konkatenuje tę wartość w pozycje identyfikatorów tabeli i kolumny w zapytaniu, co powoduje wtórną iniekcję SQL po otwarciu formularza edycji pól niestandardowych. Iniekcja może odczytywać dowolne dane ze schematu i powodować błędy lub awarię usługi. Problem naprawiono w wersji 1.7.2.
- CVE-2026-50547Wysokie
W InvoicePlane przed wersją 1.7.2 metoda Invoices::generate_xml() dołącza pochodzący z bazy danych xml_id do katalogu pomocniczego XMLconfigs i włącza wynikową ścieżkę PHP bez walidacji identyfikatora. Atakujący z niskimi uprawnieniami, mogący wpłynąć na konfigurację e-faktury, może użyć sekwencji przejścia katalogów do włączenia istniejącego pliku PHP. Wykonanie kodu wymaga oddzielnego mechanizmu przesyłania lub zapisu plików.
- CVE-2026-49850Wysokie
W InvoicePlane przed wersją 1.7.2 metody Invoices::delete() i Invoices::delete_invoice_tax() są eksponowane jako trasy zmieniające stan bez wymogu POST i walidacji tokenu CSRF. Gdy uwierzytelniony administrator załaduje treść kontrolowaną przez atakującego, która wywoła odpowiednią trasę, aplikacja może usunąć fakturę lub rekord podatku. Akcja cross-origin może usunąć dane finansowe bez wiedzy administratora.
- CVE-2017-1000238Wysokie
Wersja 1.4.10 InvoicePlane jest podatna na atak umożliwiający przesyłanie dowolnych plików, co pozwala uwierzytelnionemu użytkownikowi na przesłanie złośliwego pliku na serwer WWW. Atakujący może przesłać skrypt, który może skompromitować serwer.
- CVE-2026-39353Krytyczne
W InvoicePlane przed wersją 1.7.2-rc-1, lista dozwolonych szablonów jest budowana na podstawie katalogu PHP, który może być zapisywany przez administratora. Złośliwy plik PHP umieszczony w tym katalogu jest automatycznie zaufany i może być wybrany jako publiczny szablon, a następnie wykonany podczas renderowania publicznej faktury.
Oryginalny opis (angielski, źródło NVD)
InvoicePlane is a self-hosted open source application for managing invoices, clients, and payments. In version 1.7.2, Users::form() performs no object-level authorization check on user_id = 1. A Secondary Administrator (user_type = 1, user_id != 1) can rewrite the Primary Administrator's user_type to 2 (Guest / read-only), destroying the root account's privilege and locking the legitimate owner out of the instance. At time of publication, there are no publicly available patches.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

