Opis podatności
CERT Polska otrzymał zgłoszenie o podatnościach w oprogramowaniu CGM CLININET i koordynował proces ujawniania informacji.
Podatność CVE-2025-2313: W usłudze Print.pl w funkcji uhcPrintServerPrint możliwe jest przekazanie do wykonania dowolnego kodu dzięki parametru CopyCounter.
Podatność CVE-2025-30036: Podatność typu Stored XSS występuje w module Oddział w polu opisu diagnozy zgonu i pozwala na wykonanie dowolnego kodu JS oraz na przejęcie sesji innego użytkownika i tym samym potencjalną eskalację uprawnień do pełnych uprawnień administracyjnych.
Podatność CVE-2025-30037: W systemie występuje wiele ścieżek, zwykle zawierających element /int/, które powinny być dostępne tylko dla wewnętrznych usług, a są wystawione publicznie i bez uwierzytelnienia dla wszystkich komputerów mających możliwość komunikacji z serwerem aplikacyjnym na 443/tcp.
Podatność CVE-2025-30038: Podatność polega na wycieku ID sesji przy zapisie pliku pobieranego z CGM CLININET. Identyfikator wycieka przez wbudowany mechanizm bezpieczeństwa w Windows, który zapisuje dodatkowe metadane w tzw. NTFS alternate data stream (ADS) dla wszystkich plików pobieranych z potencjalnie niezaufanych źródeł.
Podatność CVE-2025-30039: Nieuwierzytelniony dostęp do endpointa /cgi-bin/CliniNET.prd/GetActiveSessions.pl umożliwia przejęcie sesji dowolnego użytkownika zalogowanego do systemu, w tym użytkownika z uprawnieniami administratora.
Podatność CVE-2025-30040: Po wykonaniu zapytania GET /cgi-bin/CliniNET.prd/utils/userlogxls.pl, bez uwierzytelnienia zwracany jest plik zawierający dane z ID sesji.
Podatność CVE-2025-30041: Ścieżki: /cgi-bin/CliniNET.prd/utils/userlogstat.pl, /cgi-bin/CliniNET.prd/utils/usrlogstat.pl, /cgi-bin/CliniNET.prd/utils/dblogstat.pl udostępniają dane zawierające ID sesji.
Podatność CVE-2025-30048: Endpoint serverConfig zwracający konfigurację modułu, w tym poświadczenia, jest dostępny bez uwierzytelnienia.
Podatność CVE-2025-30055: Funkcja system przyjmuje jako argument niezaufane dane od użytkownika. W przypadku włączonej opcji EnableJSCaching możliwe jest wykonanie dowolnego kodu przekazanego jako parametr Module.
Podatność CVE-2025-30056: Funkcja RunCommand przyjmuje dowolny parametr, który jest przekazywany do wykonania w shell. Atakujący może w ten sposób doprowadzić do wykonania dowolnego kodu przez system.
Podatność CVE-2025-30057: W UHCRTFDoc przez parametr filename występuje możliwość wykonania dowolnego kodu poprzez wstrzyknięcia poleceń do system() w funkcji ConvertToPDF.
Podatność CVE-2025-30058: W usłudze PatientService.pl, w funkcji getPatientIdentifier istnieje możliwość wstrzyknięcia polecenia SQL poprzez parametr pesel.
Podatność CVE-2025-30059: W usłudze PrepareCDExportJSON.pl, w funkcji getPerfServiceIds istnieje możliwość wstrzyknięcia polecenia SQL.
Podatność CVE-2025-30060: W usłudze ReturnUserUnitsXML.pl, w funkcji getUserInfo istnieje możliwość wstrzyknięcia polecenia SQL poprzez parametr UserID.
Podatność CVE-2025-30061: W usłudze utils/Reporter/OpenReportWindow.pl istnieje możliwość wstrzyknięcia polecenia SQL poprzez parametr UserID.
Podatność CVE-2025-30063: Plik konfiguracyjny zawierający loginy i hasła do bazy danych jest możliwy do odczytania przez dowolnego lokalnego użytkownika.
Podatność CVE-2025-30064: Niedostatecznie zabezpieczona wewnętrzna funkcjonalność pozwalająca na generowanie sesji dla dowolnych użytkowników. Funkcja decodeParam sprawdza JWT, ale nie weryfikuje, jaki algorytm został użyty do podpisu. Atakujący może w ten sposób dzięki parametru ex:action w funkcji VerifyUserByThrustedService wygenerować sesję dla dowolnego użytkownika.
Podziękowania
Za zgłoszenie podatności dziękujemy Maciejowi Kazulakowi.