Ocena 8.8 w skali CVSS (Common Vulnerability Scoring System – skala 0-10 oceniająca powagę luki) to sygnał do natychmiastowej reakcji. Taki wynik przypisano luce w FrontAccounting, popularnym systemie ERP (Enterprise Resource Planning) typu open source. Oprogramowanie to jest często wybierane przez małe i średnie przedsiębiorstwa, również w Polsce, do zarządzania finansami, fakturowaniem i księgowością. Podatność oznaczona jako CVE-2026-40521 umożliwia zdalne wykonanie kodu, co w praktyce oznacza możliwość przejęcia kontroli nad serwerem, na którym działa aplikacja.

Problem dotyczy wszystkich wersji FrontAccounting przed 2.4.20 1. Atak wymaga posiadania konta w systemie, nawet o niskich uprawnieniach. Biorąc pod uwagę, że systemy ERP często mają wielu użytkowników o różnym poziomie dostępu, ryzyko znalezienia przez atakującego punktu wejścia jest realne. Kompromitacja systemu księgowego to nie tylko ryzyko kradzieży danych finansowych, ale także naruszenie zgodności z RODO (Rozporządzenie o Ochronie Danych Osobowych) i potencjalne problemy w kontekście integracji z systemami, takimi jak Krajowy System e-Faktur (KSeF).

TL;DR

  • Produkt: FrontAccounting, wersje przed 2.4.20.
  • Wektor: Uwierzytelniony użytkownik wykorzystuje lukę typu Path Traversal przy wysyłaniu załącznika.
  • Luka: CVE-2026-40521 (CVSS 8.8), prowadzi do RCE (Remote Code Execution — zdalne wykonanie kodu na komputerze ofiary).
  • Wskaźniki: Żądania POST do mechanizmu obsługi załączników, gdzie parametr unique_name zawiera sekwencję ../.
  • Kogo dotyczy: Polskie firmy, zwłaszcza z sektora MŚP, używające podatnych wersji FrontAccounting do fakturowania i księgowości.
  • Pierwszy ruch: Weryfikacja używanej wersji oprogramowania i natychmiastowa aktualizacja do wersji 2.4.20 lub nowszej.

Wektor ataku

Luka należy do kategorii Path Traversal, sklasyfikowanej jako CWE-22 (Common Weakness Enumeration – klasyfikacja typów luk). Ten typ błędu polega na niewystarczającej walidacji danych wejściowych, co pozwala manipulować ścieżkami plików i folderów na serwerze. W tym przypadku problem zlokalizowano w mechanizmie przesyłania załączników 2.

Scenariusz ataku przebiega następująco:

  1. Atakujący loguje się do systemu FrontAccounting na konto, do którego posiada dostęp 3. Nie są wymagane uprawnienia administratora.
  2. Inicjuje proces przesyłania pliku, np. załącznika do transakcji.
  3. Podczas przesyłania manipuluje parametrem unique_name, który definiuje nazwę zapisywanego pliku 4.
  4. W nazwie pliku umieszcza sekwencję Path Traversal, na przykład ../../../shell.php 5. Sekwencja ../ nakazuje systemowi operacyjnemu przejście o jeden katalog w górę. Powtórzenie jej kilka razy pozwala wyjść z domyślnego katalogu na załączniki (/company/0/attachments/).
  5. Celem jest zapisanie pliku w głównym katalogu serwera WWW (tzw. web root) 6.
  6. Ponieważ system nie weryfikuje rozszerzenia przesyłanego pliku, atakujący może wgrać plik PHP z dowolną zawartością — najczęściej prosty web shell, czyli skrypt umożliwiający wykonywanie poleceń na serwerze 7.
  7. Po pomyślnym wgraniu pliku, atakujący może go wywołać bezpośrednio w przeglądarce (np. https://adres-firmy.pl/shell.php), co skutkuje wykonaniem kodu z uprawnieniami użytkownika, na którym działa serwer WWW (np. www-data lub apache). Może to zapewnić pełną kontrolę nad plikami aplikacji i potencjalnie dostęp do bazy danych.

Wskaźniki kompromitacji

Nie zidentyfikowano publicznych wskaźników kompromitacji (IoC – Indicators of Compromise) w postaci hashy plików czy adresów IP serwerów C2 (Command and Control – serwer kontrolujący zainfekowane maszyny). Rekomendujemy jednak proaktywne przeszukanie logów serwera WWW (np. Apache, Nginx) pod kątem prób wykorzystania luki. Należy szukać żądań, które spełniają poniższe kryteria.

# Wzorzec do wyszukania w logach serwera WWW
# Szukaj żądań typu POST, które w ciele zapytania (request body)
# zawierają parametr 'unique_name' z sekwencją '../'

POST /path/to/frontaccounting/includes/attachments.php HTTP/1.1
Host: [adres-twojej-domeny]
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryXYZ

------WebKitFormBoundaryXYZ
Content-Disposition: form-data; name="unique_name"

../../../shell.php
------WebKitFormBoundaryXYZ
Content-Disposition: form-data; name="file_upload"; filename="shell.php"
Content-Type: application/x-php

<?php system($_GET['cmd']); ?>
------WebKitFormBoundaryXYZ--

Dodatkowo należy przeskanować katalog główny serwera WWW oraz inne zapisywalne przez serwer katalogi w poszukiwaniu podejrzanych plików PHP, które nie są częścią aplikacji FrontAccounting. Szczególną uwagę należy zwrócić na pliki z datą modyfikacji odpowiadającą okresowi, w którym mogło dojść do ataku.

Co zrobić w 24-48h

Zalecane podejście zakłada działanie w trzech krokach. Poniższe kroki nie zastępują pełnej konsultacji z zespołem ds. bezpieczeństwa, lecz stanowią pierwszą linię obrony.

  1. Identyfikacja i aktualizacja (krytyczne): Pierwszym i najważniejszym krokiem jest weryfikacja wersji FrontAccounting. Można to zrobić w panelu administracyjnym aplikacji. Jeśli wersja jest starsza niż 2.4.20, zalecana jest natychmiastowa aktualizacja do najnowszej stabilnej wersji. Pakiety aktualizacyjne są dostępne na oficjalnej stronie projektu. Przed aktualizacją należy bezwzględnie wykonać pełną kopię zapasową plików aplikacji oraz bazy danych.

  2. Analiza logów i plików: Niezależnie od aktualizacji, należy założyć, że mogło dojść do kompromitacji. Przeszukaj logi serwera WWW pod kątem wzorców opisanych w sekcji „Wskaźniki kompromitacji”. Przeskanuj całą przestrzeń serwera w poszukiwaniu web shelli. Wiele polskich firm hostingowych udostępnia w panelach klientów skanery antywirusowe (np. ImunifyAV, Maldet), które mogą pomóc w zidentyfikowaniu złośliwego oprogramowania. 3. Wzmocnienie konfiguracji: Po załataniu luki warto rozważyć dodatkowe kroki. Skonfiguruj WAF (Web Application Firewall) do blokowania żądań zawierających sekwencje ../ w parametrach. Ogranicz uprawnienia zapisu dla użytkownika serwera WWW tylko do niezbędnych katalogów. Regularnie przeglądaj konta użytkowników w FrontAccounting i usuwaj te, które nie są już potrzebne. ## Źródła

  3. [nvd.nist.gov › CVE 2026 40521]

Źródła

Zobacz też

Przypisy

  1. FrontAccounting przed wersją 2.4.20 zawiera lukę typu path traversal. — nvd.nist.gov › CVE 2026 40521

  2. Luka znajduje się w obsłudze przesyłania załączników (attachment upload handler). — nvd.nist.gov › CVE 2026 40521

  3. Uwierzytelnieni atakujący mogą wykorzystać tę lukę do wykonania dowolnego kodu. — nvd.nist.gov › CVE 2026 40521

  4. Atakujący mogą przesyłać pliki z sekwencjami path traversal w parametrze unique_name. — nvd.nist.gov › CVE 2026 40521

  5. Możliwe jest dostarczenie sekwencji path traversal takich jak ../../../shell.php. — nvd.nist.gov › CVE 2026 40521

  6. Pozwala to na zapisywanie plików poza zamierzonym katalogiem załączników, do katalogu głównego serwera WWW. — nvd.nist.gov › CVE 2026 40521

  7. Przesyłanie plików PHP bez walidacji rozszerzeń umożliwia zdalne wykonanie kodu jako użytkownik serwera WWW. — nvd.nist.gov › CVE 2026 40521