CVE-2026-39353
KrytyczneCVSS 9.1Streszczenie
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.
Ocena ryzyka
Atak może prowadzić do wykonania dowolnego kodu z uprawnieniami serwera WWW, co może skutkować pełną kompromitacją aplikacji.
Rekomendacja
Zaktualizuj InvoicePlane do wersji 1.7.2-rc-1, która zawiera poprawkę.
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-85290Średnie
Przed wersją 1.7.2 w InvoicePlane metoda Cron::recur() zapisuje nieprawidłowy klucz cron z adresu URL bezpośrednio do logu aplikacji bez neutralizacji znaków CRLF. Nieuwierzytelniony żądający może wstrzyknąć sfałszowane linie logów do ścieżki audytowej, co może zakłócić analizę kryminalistyczną i monitoring oparty na logach. 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-2026-39372Średnie
InvoicePlane przed wersją 1.7.2 przechowuje i udostępnia przesłane obrazy bez usuwania metadanych EXIF. Gdy administrator udostępni obraz innemu użytkownikowi, ten może odczytać współrzędne GPS, znaczniki czasu i informacje o urządzeniu. Luka została naprawiona w wersji 1.7.2.
Oryginalny opis (angielski, źródło NVD)
InvoicePlane is a self-hosted open source application for managing invoices, clients, and payments. Prior to 1.7.2-rc-1, InvoicePlane builds its permitted template list by scanning a PHP template directory that can be written through an administrator-controlled file-write capability. A malicious PHP file placed in the directory is automatically trusted by Mdl_templates and can be selected as public_invoice_template. When a public invoice is rendered, the guest View controller includes the trusted file and executes it with web-server privileges. This issue is fixed in version 1.7.2-rc-1.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

