Ready_ Wasn’t Ready – cztery krytyczne podatności w Symfonia eDokumenty

Maksymilian Kubiak

Wprowadzenie

Symfonia eDokumenty, wcześniej znana jako Ready_TM, to system zarządzania dokumentami (DMS) wykorzystywany przez wiele firm do obsługi elektronicznego obiegu dokumentów. Ściśle zintegrowany z narzędziami takimi jak Symfonia ERP, odgrywa kluczową rolę w przetwarzaniu wrażliwych danych biznesowych w licznych polskich przedsiębiorstwach.

Wraz ze Sławomirem Zakrzewskim przeanalizowałem wersję 7.19.39.7 tej aplikacji i odkryliśmy cztery krytyczne podatności, zarejestrowane jako:

  • CVE-2025-1980 – Zdalne wykonanie kodu (RCE) przez brak kontroli nad przesyłanymi plikami
  • CVE-2025-1981 – SQL Injection
  • CVE-2025-1982 – Lokalna inkluzja plików (Local File Inclusion) umożliwiająca nieautoryzowany dostęp do plików
  • CVE-2025-1983 – Trwałe XSS (Stored Cross-Site Scripting)

Te krytyczne luki w zabezpieczeniach pokazują, jak istotne jest systematyczne i dokładne testowanie bezpieczeństwa aplikacji obsługujących poufne dane. To przypomnienie, że nawet dobrze ugruntowane systemy bez dedykowanych testów mogą narazić firmy na poważne ryzyko — od zakłóceń w działaniu po wycieki danych.

CVE-2025-1980 – Zdalne wykonanie kodu przez brak kontroli nad przesyłanymi plikami

Podatność dotyczyła funkcji do przesyłania awatarów, dostępnej w interfejsie użytkownika Symfonia eDokumenty. Choć mechanizm miał akceptować jedynie pliki graficzne (np. .jpg, .png), nie weryfikował ani typu pliku, ani jego rozszerzenia.

W rezultacie możliwe było przesłanie dowolnego pliku — w tym skryptu PHP — który był następnie zapisywany w publicznie dostępnym katalogu na serwerze. Ponieważ serwer WWW był skonfigurowany do wykonywania plików .php, atakujący mógł przesłać webshell i uruchomić go przez bezpośredni URL, uzyskując zdalne wykonanie kodu (RCE).

Scenariusz exploitacji

  • Zaloguj się do aplikacji i przejdź do ustawień swojego konta (prawy górny róg).
  • Wybierz webshell PHP i tymczasowo zmień jego rozszerzenie na .jpg.
  • Prześlij plik, przechwytując żądanie za pomocą narzędzia proxy (np. Burp Suite) i zmień rozszerzenie pliku w żądaniu na .php.
  • Odpowiedź serwera zawiera ścieżkę zapisu pliku (nazwa pliku zostanie zmodyfikowana).
  • Wejdź na podany adres URL – kod PHP zostanie wykonany przez serwer.

Główne przyczyny

  • Brak walidacji rozszerzeń plików po stronie backendu (np. dopuszczania wyłącznie .jpg, .png)
  • Brak sprawdzania typu MIME
  • Przesyłane pliki zapisywane w katalogu dostępnym z poziomu przeglądarki i obsługiwanym przez serwer jako wykonywalny

CVE-2025-1981 – SQL Injection

Ta podatność została odkryta w module Faktury zakupu, konkretnie w ścieżce:
Faktury zakupu → Faktury → Wszystkie → Filtry

Funkcja filtrowania akceptowała dane wejściowe od użytkownika do tworzenia zapytań SQL, ale nie stosowała odpowiedniego filtrowania ani parametryzacji danych po stronie backendu. Umożliwiało to wstrzykiwanie dowolnego kodu SQL bezpośrednio do logiki zapytania.

Uwierzytelniony użytkownik mógł za pomocą spreparowanego filtra manipulować zapytaniem SQL, co prowadziło do pozyskania poufnych danych — w tym hashy haseł — lub wykonania destrukcyjnych operacji (modyfikacja/usuwanie rekordów).

Scenariusz exploitacji

  • Zaloguj się do aplikacji i przejdź do:
    Faktury zakupu → Faktury → Wszystkie → Filtry
  • Wybierz jedno z pól filtra.
  • Wprowadź następujący payload:
    1) AND 6363=(SELECT 6363 FROM PG_SLEEP(20)) AND (1=1
  • Zatwierdź filtr i obserwuj czas odpowiedzi serwera.
  • Jeżeli odpowiedź opóźnia się o ok. 20 sekund, potwierdza to obecność podatności typu time-based blind SQLi.
  • Dalszą eksploatację można zautomatyzować narzędziami takimi jak sqlmap.

Główne przyczyny:

  • Brak walidacji danych wejściowych (sanityzacji)
  • Brak stosowania zapytań parametryzowanych (prepared statements)
  • Bezpośrednie wstawianie danych użytkownika do zapytań SQL

CVE-2025-1982 – lokalna inkluzja plików

Podatność została wykryta w module Dokumenty aplikacji Symfonia eDokumenty. Użytkownicy mogą dodawać pliki z zewnętrznych źródeł za pomocą funkcji Dodaj z innej lokalizacji, umożliwiającej podanie adresu URL.

Funkcja ta akceptowała adresy URL bez weryfikacji ich schematu lub docelowego zasobu, co pozwalało na wykorzystanie URI typu file:// wskazującego na plik w lokalnym systemie plików serwera. W efekcie atakujący mógł odczytać dowolne pliki z serwera aplikacji — o ile proces aplikacji miał do nich dostęp.

Scenariusz exploitacji

  • Zaloguj się do aplikacji i przejdź do sekcji Dokumenty
  • Kliknij Nowy, następnie wybierz Plik, a potem Z lokalizacji
  • Przejdź do zakładki Załączniki i kliknij Dodaj z innej lokalizacji
  • W polu Link do pliku wprowadź: file:///etc/passwd
  • Zatwierdź formularz. Treść wskazanego pliku zostanie pobrana i dołączona do dokumentu, jakby pochodziła z zewnętrznego źródła
  • Otwórz podgląd dokumentu lub pobierz załącznik, aby zobaczyć zawartość pliku z serwera

Główne przyczyny:

  • Brak walidacji schematu URI (dopuszczenie file://)
  • Brak filtrowania lokalnego dostępu do plików
  • Aplikacja wykonywała zapytania po stronie serwera (SSR) bez ograniczeń (podobnie jak SSRF)

CVE-2025-1983 – Stored Cross-Site Scripting (XSS)

Ta podatność została wykryta w module Eksploratora plików aplikacji Symfonia eDokumenty. Problem wynikał z braku odpowiedniego oczyszczania nazw plików przed ich wyświetleniem w interfejsie użytkownika.

Atakujący mógł przesłać plik z odpowiednio spreparowaną nazwą zawierającą złośliwy kod JavaScript. Po wejściu w interakcję z tym plikiem przez innego użytkownika — np. przez otwarcie menu kontekstowego lub podgląd szczegółów — skrypt był wykonywany w kontekście przeglądarki ofiary.

Ponieważ payload był zapisany na serwerze i renderowany przy każdym załadowaniu widoku, był to klasyczny przypadek trwałego XSS (Stored XSS).

Scenariusz exploitacji

  • Zaloguj się do aplikacji i przejdź do modułu Eksplorator plików.
  • Prześlij plik o nazwie: a<img src=x onerror=prompt(document.cookie)>.jpg
  • Plik zostanie przesłany i pojawi się w widoku bez żadnej sanitacji.
  • Gdy inny użytkownik wejdzie w interakcję z plikiem (np. otworzy jego lokalizację), złośliwy kod JavaScript zostanie wykonany w jego przeglądarce.
  • Skrypt działa z uprawnieniami aktywnej sesji — umożliwiając np. kradzież sesji, eskalację uprawnień lub inne ataki w przeglądarce.

Główne przyczyny:

  • Brak filtrowania i „ucieczki” danych wejściowych (nazwy plików)
  • Nazwy plików renderowane bezpośrednio w DOM bez walidacji
  • Brak polityki bezpieczeństwa treści (Content Security Policy – CSP), która ograniczałaby wykonywanie inline scriptów

Skutki

Ta podatność umożliwiała uwierzytelnionym użytkownikom przeprowadzanie ataków stored XSS, które były aktywne między sesjami i mogły wpływać na innych użytkowników. W środowiskach z wieloma użytkownikami – takich jak intranety czy platformy współdzielonych dokumentów – konsekwencje takiego ataku mogły być poważne.

Podsumowanie

Podatności opisane w tym artykule — od zdalnego wykonania kodu po stored XSS — pokazują, jak wiele warstw ryzyka może występować w jednej aplikacji o znaczeniu krytycznym dla biznesu. Żadna z tych luk nie wymagała skomplikowanych technik ataku — ich obecność wynikała z typowych błędów projektowych i braku konsekwentnych testów bezpieczeństwa.

Symfonia eDokumenty pełni ważną rolę w przetwarzaniu dokumentów i danych w wielu firmach. Tworzenie i utrzymywanie takich systemów z myślą o bezpieczeństwie to nie tylko wymóg techniczny — to konieczność biznesowa.

To studium przypadku podkreśla wagę regularnych audytów aplikacji, stosowania bezpiecznych praktyk programistycznych i posiadania przejrzystych kanałów zgłaszania podatności. Mamy nadzieję, że analiza ta zachęci innych twórców oprogramowania do działania proaktywnie — zanim podatność zamieni się w incydent.

Podziękowania

Badania przeprowadziłem wspólnie ze Sławomirem Zakrzewskim, którego wiedza techniczna i zaangażowanie były kluczowe w zidentyfikowaniu i analizie opisanych podatności.

Dziękuję również zespołowi CERT Polska za wsparcie w odpowiedzialnym zgłoszeniu podatności do producenta i koordynację procesu ujawnienia.

Szczególne podziękowania kieruję do zespołu Symfonia za szybką reakcję i pełną współpracę. Wszystkie zgłoszone podatności zostały zaadresowane bez opóźnień, co świadczy o odpowiedzialnym podejściu do bezpieczeństwa produktu.

Źródła

Maksymilian Kubiak
Offensive Security Engineer

Czy Twoja firma jest bezpieczna w sieci?

Dołącz do grona naszych zadowolonych klientów i zabezpiecz swoją firmę przed cyberzagrożeniami już dziś!

Zostaw nam swoje dane kontaktowe, a nasz zespół skontaktuje się z Tobą, aby omówić szczegóły i dopasować ofertę do Twoich potrzeb. Dbamy o pełną dyskrecję i poufność Twoich danych, dlatego możesz nam zaufać.

Chciałbyś od razu zadać pytanie? Odwiedź naszą stronę kontaktową.