CVE-2026-33639
WysokieCVSS 7.2Streszczenie
W InvoicePlane przed wersją 1.7.2 ustawienie tax_rate_decimal_places kontrolowane przez administratora jest wstawiane do instrukcji ALTER TABLE dla tabeli ip_tax_rates w Settings::index() bez ścisłej walidacji liczbowej. Spreparowana wartość ustawienia może dodać klauzule do instrukcji zmieniającej schemat i usunąć lub zmienić wymagane kolumny bazy danych. Podatność naprawiono w wersji 1.7.2.
Ocena ryzyka
Uszkodzenie schematu bazy danych może trwale zmodyfikować struktury danych finansowych i uniemożliwić korzystanie z aplikacji, prowadząc do utraty danych i przestoju.
Rekomendacja
Zaktualizuj InvoicePlane do wersji 1.7.2 lub nowszej. Przed aktualizacją wykonaj kopię zapasową bazy danych.
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, InvoicePlane interpolates the administrator-controlled tax_rate_decimal_places setting into an ALTER TABLE statement for ip_tax_rates in Settings::index() without strict integer validation. A crafted setting value can add clauses to the schema-changing statement and remove or alter required database columns. The resulting schema corruption can permanently modify financial data structures and make the application unavailable. This vulnerability is fixed in 1.7.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

