Luka w systemie obecności ZKTeco BioTime (CVE-2023-38950) oddaje hasło do bazy bez logowania
Błąd w interfejsie iclock BioTime pozwala bez logowania pobrać dowolny plik z serwera, np. z hasłem do bazy. Posłużył do powrotu napastnika do sieci ofiary. Odetnij BioTime od internetu, zmień hasło i zaktualizuj.
Ten alert jest dla zarządu, CTO i CFO firm, które rejestrują czas pracy i obecność pracowników systemem ZKTeco BioTime (ZKBioTime), często instalowanym przez dostawcę czytników przy wejściu. Werdykt: jeśli serwer BioTime ma wersję starszą niż 9.0.120240617.19506 lub jest widoczny z internetu, dziś odetnij go od internetu, zaktualizuj i zmień hasło do jego bazy danych, bo luka pozwala bez logowania czytać pliki z serwera, a w udokumentowanym ataku posłużyła do powrotu napastnika do sieci ofiary.
1. CO SIĘ STAŁO? Fakty w pigułce
Amerykańska agencja CISA 19 maja 2025 roku dopisała podatność CVE-2023-38950 do katalogu KEV, czyli listy luk, o których ma dowody, że są wykorzystywane w prawdziwych atakach. Błąd tkwi w interfejsie iclock systemu BioTime: spreparowana nazwa pliku w zapytaniu pozwala wyjść poza dozwolony katalog i pobrać dowolny plik z serwera, bez logowania.
Według raportu zespołu reagowania na incydenty Fortinet z marca 2025 roku napastnik powiązany z państwem wykorzystał tę lukę w grudniu 2024 roku, by pobrać plik konfiguracyjny z hasłem do bazy danych i wrócić do sieci infrastruktury krytycznej, z której go wcześniej usunięto. Termin naprawy wg CISA minął 9 czerwca 2025 roku.
Element
Szczegóły
Identyfikator CVE
CVE-2023-38950 (w europejskiej bazie ENISA: EUVD-2023-42710)
Data dodania do CISA KEV
2025-05-19
Termin naprawy wg CISA
2025-06-09 (21 dni od wpisu)
Produkt
ZKTeco BioTime (nowsza nazwa: ZKBioTime), system rejestracji czasu pracy i obecności
Wersje zagrożone
Opis NVD: BioTime 8.5.5; zakres wersji w NVD: wszystko poniżej 9.0.1. Najbardziej narażone są serwery dostępne z internetu
Wersje bezpieczne
ZKBioTime 9.0.120240617.19506 (poprawka z czerwca 2024 roku) i nowsze; bezpieczniej traktować każdą starszą instalację jako wymagającą aktualizacji
Typ podatności
Przechodzenie po ścieżkach (path traversal) w interfejsie iclock, odczyt dowolnych plików bez uwierzytelnienia; CWE-22
Ocena CVSS
7.5/10 (CVSS 3.1, WYSOKA) wg NVD i CISA. Atak przez sieć, bez logowania i bez udziału użytkownika; wysoki wpływ na poufność, brak bezpośredniego wpływu na integralność i dostępność
2. O CO CHODZI W PROSTYCH SŁOWACH?
Wyobraź sobie pracownika archiwum, który dostaje kartkę z numerem teczki i przynosi ją z regału. Pewnego dnia na kartce jest napisane: „trzy regały w lewo, piętro wyżej, gabinet prezesa, szafka po prawej”. Nikt nie sprawdza, czy na kartce jest numer teczki, więc pracownik wykonuje polecenie i przynosi zawartość szafki prezesa.
Tak działa ta luka. BioTime przyjmuje w zapytaniu nazwę pliku do odesłania. Napastnik zamiast nazwy wpisuje kilkanaście razy „../”, czyli „katalog wyżej”, a potem ścieżkę do dowolnego pliku na serwerze. W opisanym ataku był to plik ustawień programu z hasłem do bazy danych. Samo odczytanie niczego nie psuje, ale kto ma hasło do bazy, może w niej zwykle także pisać.
💡 Path traversal (przechodzenie po ścieżkach) to błąd, w którym aplikacja pozwala wskazać plik spoza katalogu, do którego powinna mieć dostęp. „../” oznacza w systemie plików katalog nadrzędny. Interfejs iclock to część BioTime, przez którą czytniki i inne systemy komunikują się z serwerem. Plik konfiguracyjny zawiera ustawienia programu, często z hasłami do bazy danych. KEV to katalog CISA z lukami potwierdzonymi w atakach.
Scenariusz
Normalnie
Z podatnością
Czytnik przy wejściu wysyła odbicia do serwera
Serwer zapisuje dane obecności
Tak samo, a obca osoba może równolegle pobierać pliki
Obca osoba pyta serwer o plik
Dostaje tylko dozwolone pliki lub odmowę
Dostaje dowolny plik, np. z hasłem do bazy
Hasło do bazy danych w pliku ustawień
Bezpieczne na serwerze
Odczytane przez napastnika
Logi serwera
Zwykłe zapytania
Zapytanie wygląda poprawnie, serwer odpowiada „sukces”
Sprzątanie po incydencie bez spisu usług
Wydaje się kompletne
Pominięty serwer obecności pozwala napastnikowi wrócić
źródło: Pexels, Thirdman
3. JAK HAKERZY TO WYKORZYSTUJĄ?
Poniżej typowy przebieg ataku dla tej klasy podatności, oparty na przebiegu opisanym przez Fortinet. To scenariusz poglądowy, a nie odtworzenie konkretnego incydentu. Atak wymaga, by serwer BioTime był osiągalny dla napastnika, najczęściej z internetu; nie wymaga konta ani udziału pracownika. Publiczny kod ataku jest dostępny.
Etap
Czas
Akcja hakerów
Wynik
1. Wyszukiwanie
T+0 min
Znalezienie serwerów BioTime dostępnych z internetu
Lista celów
2. Odczyt pliku
T+sekundy
Zapytanie do interfejsu iclock z ciągiem „../” i ścieżką do pliku ustawień
Plik z hasłem do bazy danych
3. Dostęp do bazy
T+minuty
Logowanie do bazy danych systemu obecności
Dane pracowników, harmonogramy, identyfikatory
4. Wykorzystanie hasła gdzie indziej
T+godziny
Próba tego samego hasła na innych serwerach i systemach
Dostęp do kolejnych systemów, jeśli hasło się powtarza
5. Wejście do sieci
T+dni
Wykorzystanie serwera jako przyczółka, często razem z innymi lukami
Powrót do sieci firmy lub pierwsze wejście
6. Długotrwała obecność
T+tygodnie do miesięcy
Kradzież danych, obserwacja, przygotowanie dalszych działań
Wyciek i powtórny incydent
Konkretne scenariusze zagrożenia
🔴 Scenariusz 1: zakład produkcyjny z osiemdziesięcioma pracownikami na trzy zmiany ma BioTime dostępny z internetu, by kierownik oglądał raporty z domu; napastnik pobiera plik ustawień i kopiuje dane wszystkich pracowników.
🔴 Scenariusz 2: firma usuwa napastnika po włamaniu, ale nie uwzględnia serwera obecności w sprzątaniu; kilka tygodni później napastnik wraca tą samą drogą, jak w przypadku opisanym przez Fortinet.
🔴 Scenariusz 3: hasło do bazy BioTime jest takie samo jak do serwera plików, więc odczyt jednego pliku otwiera dostęp do dokumentów firmy.
4. DLACZEGO TO RYZYKO DLA TWOJEJ FIRMY?
System obecności żyje zwykle poza główną listą systemów IT, bo instalował go dostawca czytników. Często jest otwarty na internet dla wygody kierowników lub oddziałów. Zawiera dane osobowe pracowników, a pliki na jego serwerze dają hasła do bazy. Luka „tylko do odczytu” okazuje się w praktyce kluczem do całej bazy i punktem powrotu napastnika.
Obszar biznesu
Potencjalny wpływ
Czas do wystąpienia
Koszty szacunkowe
Operacyjny
Odtworzenie serwera obecności, przegląd powiązanych systemów, ręczna ewidencja w tym czasie
Dni
10 tys. do 80 tys. PLN (odtworzenie, praca kadr i IT)
Bezpieczeństwo danych
Wyciek danych pracowników i haseł, dostęp do bazy i innych systemów
Minuty do godzin
20 tys. do 200 tys. PLN (analiza powłamaniowa, zmiana haseł)
Finansowy
Koszty incydentu, powtórne sprzątanie po nieudanym pierwszym
Tygodnie
50 tys. do 500 tys. PLN łącznie
Reputacyjny
Utrata zaufania pracowników i klientów, pytania od partnerów
Miesiące
20 tys. do 200 tys. PLN (rekrutacja, utracone kontrakty)
Prawny
Obowiązek zgłoszenia naruszenia danych osobowych pracowników do UODO w ciągu 72 godzin, a przy danych biometrycznych także wysokie ryzyko wymagające powiadomienia osób; możliwa kara RODO do 20 mln EUR lub 4% rocznego obrotu, zależnie od okoliczności
72 godziny od wykrycia
20 tys. do 150 tys. PLN (obsługa prawna, zgłoszenia), bez ewentualnej kary
Interpretacja: prawdopodobieństwo jest bardzo wysokie (publiczny kod ataku, EPSS ok. 85%, potwierdzone ataki), a wpływ wysoki, choć CVSS mówi tylko o odczycie, bo odczytany plik daje hasło do bazy i drogę do dalszego ataku; serwer dostępny tylko z sieci wewnętrznej jest znacznie mniej narażony.
5. CO MUSISZ ZROBIĆ NATYCHMIAST?
Lp.
Priorytet
Działanie
Termin
Odpowiedzialny
1
🔴 NATYCHMIAST
Ustalić, czy firma używa BioTime lub ZKBioTime, kto go instalował i jaka jest wersja
Dziś
CTO / dostawca kontroli dostępu
2
🔴 NATYCHMIAST
Odciąć panel i interfejs BioTime od internetu; dostęp tylko z sieci firmy lub przez VPN
Dziś
Administrator sieci
3
🔴 NATYCHMIAST
Zmienić hasło do bazy danych BioTime na unikalne i sprawdzić, czy stare hasło nie było używane gdzie indziej
Dziś
Administrator / dostawca
4
🟠 PILNIE
Zaktualizować do ZKBioTime 9.0.120240617.19506 lub nowszej wersji
Do 3 dni
Dostawca / administrator
5
🟠 PILNIE
Przejrzeć logi serwera WWW pod kątem zapytań z powtarzanym „../” i odpowiedzi z kodem sukcesu
Do 7 dni
Dział IT / zewnętrzny zespół bezpieczeństwa
6
🟡 WAŻNIE
Dopisać system obecności i inne systemy od dostawców do spisu usług widocznych z internetu
Do 30 dni
CTO
7
🟡 WAŻNIE
Po każdym incydencie sprzątać według pełnego spisu usług, a nie listy systemów „z pamięci”
Do 30 dni
CTO
Jeśli aktualizacja nie jest dostępna
Producent wydał wersję ZKBioTime 9.0.120240617.19506 z poprawką, więc docelowo trzeba ją wgrać. Do tego czasu kluczowe jest ograniczenie dostępu do serwera. Oceny efektywności to ocena ekspercka.
Czasowa miara ochronna
Efektywność
Łatwość wdrożenia
Odcięcie serwera od internetu, dostęp tylko przez VPN
Wysoka wobec napastników z zewnątrz
Łatwa do średniej: oddziały i czytniki muszą łączyć się przez VPN
Reguła na zaporze aplikacyjnej (WAF) blokująca zapytania z „../”
Średnia: można ją obejść kodowaniem znaków
Średnia
Unikalne hasło do bazy danych, niepowtarzane w innych systemach
Średnia: ogranicza skutki
Łatwa
Monitorowanie logów pod kątem podejrzanych ścieżek
Niska jako ochrona, przydatna do wykrycia
Łatwa
Przed i po działaniu
Stan
Przed działaniem
Po działaniu
Dostęp do BioTime
Z internetu
Tylko z sieci firmy lub VPN
Wersja programu
Starsza niż poprawka
9.0.120240617.19506 lub nowsza
Hasło do bazy
Mogło zostać odczytane, powtarzane
Nowe i unikalne
Spis usług z internetu
Bez systemu obecności
Pełny, z systemami od dostawców
Zgodność z terminem CISA
Zaległość sprzed ponad 15 miesięcy
Luka zamknięta i udokumentowana
6. KONTEKST I SKALA ZAGROŻENIA
Aspekt
Informacja
Czy jest wykorzystywana?
TAK (potwierdzone przez CISA); Fortinet opisał wykorzystanie w grudniu 2024 roku przy powrocie napastnika do sieci ofiary
Grupy przestępcze
Wg raportu Fortinet: grupa sponsorowana przez państwo, atakująca infrastrukturę krytyczną na Bliskim Wschodzie
Kampanie ransomware
Brak potwierdzenia (CISA: Unknown)
Ocena CVSS
7.5/10 WYSOKA (CVSS 3.1, NVD i CISA)
PoC dostępny publicznie?
TAK, NVD wskazuje publiczny exploit (Packet Storm)
Liczba atakowanych firm
Brak publicznych informacji
Kto opisał lukę
Claroty Team82 (odnośnik w NVD)
Prognoza EPSS
Ok. 85% szansy próby wykorzystania w ciągu 30 dni, percentyl ok. 99,7 (wg analizy źródłowej)
Lekcja z raportu Fortinet: w chwili tamtego ataku luka nie była jeszcze w katalogu KEV. Wpis do katalogu jest ważnym, ale zawsze spóźnionym sygnałem.
Sygnały zagrożenia dla CVE-2023-38950CVSS 3.1 (NVD, CISA) 7.5/10 ███████████████░░░░░ WYSOKAEPSS (próba w 30 dni) ~85% █████████████████░░░ BARDZO WYSOKACISA KEV TAK ████████████████████ ataki potwierdzonePubliczny kod ataku TAK ████████████████████ wg NVDRansomware (CISA) Unknown ░░░░░░░░░░░░░░░░░░░░ brak potwierdzenia
Linia czasu incydentu
2023-08-03 Publikacja CVE-2023-38950 w NVD (BioTime 8.5.5)2024-06 Wersja ZKBioTime 9.0.120240617.19506 z poprawką2024-12 Napastnik wraca do sieci ofiary przez tę lukę (raport Fortinet)2025-03 Fortinet publikuje raport z incydentu2025-05-19 CISA dodaje lukę do katalogu KEV2025-06-09 Termin naprawy wg CISA dla agencji federalnych2026-07-09 Ostatnia aktualizacja wpisu w NVD2026-09-17: TUTAJ JESTEŚMY
7. BEZPOŚREDNI LINK DO DZIAŁANIA: checklista dla CTO/CFO
Czy panel lub interfejs BioTime jest dostępny z internetu?
TAK / NIE
🔴
4
Czy hasło do bazy BioTime jest używane w innych systemach?
TAK / NIE
🔴
5
Czy w logach są zapytania z powtarzanym „../”?
TAK / NIE
🟠
6
Kiedy dostawca ostatnio aktualizował system obecności?
[data]
🟠
7
Czy system obecności jest w naszym spisie usług widocznych z internetu?
TAK / NIE
🟡
Pytania diagnostyczne dla managera
✓ Czy wiem, kto instalował i kto utrzymuje system rejestracji czasu pracy?
✓ Czy systemy od dostawców (czytniki, monitoring, klimatyzacja) są objęte nadzorem IT?
✓ Czy po incydentach sprzątamy według pełnej listy usług z internetu?
✓ Czy mamy procedurę zgłoszenia naruszenia danych do UODO w 72 godziny?
✓ Czy dane pracowników, w tym biometryczne, są chronione tak samo jak dane klientów?
Podsumowanie
CVE-2023-38950 pozwala bez logowania pobrać dowolny plik z serwera ZKTeco BioTime, w tym plik z hasłem do bazy danych, a w udokumentowanym ataku posłużyła do powrotu napastnika do sieci ofiary. Luka jest wykorzystywana, kod ataku jest publiczny, więc dziś trzeba odciąć system obecności od internetu, zmienić hasło do bazy i zaplanować aktualizację do wersji z poprawką.
Czytaj dalej
Powiązane artykuły
Zestaw zmienia się codziennie, więc przy kolejnej wizycie zobaczysz inny wycinek bloga.
Błąd w NetScaler ADC i Gateway, opisany przez producenta jako awaria, pozwala według badaczy przejąć bramę VPN bez hasła. Publiczny kod istnieje, ataki trwają. Zaktualizuj urządzenia i sprawdź ślady włamania.
Luka w N-able N-central pozwala bez logowania uruchomić kod na serwerze, z którego zarządza się komputerami wielu firm. CISA potwierdza ataki. Zaktualizuj do 2026.3.1.14, odetnij konsolę od internetu i sprawdź konta.
Błąd w bibliotece Starlette, podstawie FastAPI, pozwala omijać zabezpieczenia części aplikacji, a w łańcuchu z luką LiteLLM przejąć bramkę AI. CISA potwierdza ataki. Zaktualizuj do 1.0.1 lub nowszej.
Klikając „Akceptuję”, zgadzasz się na przechowywanie plików cookie przez UXU w celu poprawy działania strony, analizy i wsparcia działań marketingowych.