Pomoc zdalna
alerty bezpieczeństwa

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.

  • Paweł Niedźwiecki
Paweł Niedźwiecki
17 września 2026 9 min czytania
Pracownice przy stanowiskach linii produkcyjnej pakują wyroby

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ć

Palec wskazuje punkt na planie kondygnacji budynkuź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

Tomasz Kaczmarek
Tomasz Kaczmarek

Mogę Ci jakoś pomóc?

Kwoty są orientacyjnymi widełkami dla małej i średniej firmy, nie danymi z tego incydentu.

Macierz ryzyka dla serwera BioTime starszego niż 9.0.120240617.19506, dostępnego z internetu Wpływ 5 | . . . . . 4 | . . . . ■ ← WYSOKIE 3 | . . . . . 2 | . . . . . 1 | . . . . . +-------------------- 1 2 3 4 5 Prawdopodobieństwo

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-38950 CVSS 3.1 (NVD, CISA) 7.5/10 ███████████████░░░░░ WYSOKA EPSS (próba w 30 dni) ~85% █████████████████░░░ BARDZO WYSOKA CISA KEV TAK ████████████████████ ataki potwierdzone Publiczny kod ataku TAK ████████████████████ wg NVD Ransomware (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 incydentu 2025-05-19 CISA dodaje lukę do katalogu KEV 2025-06-09 Termin naprawy wg CISA dla agencji federalnych 2026-07-09 Ostatnia aktualizacja wpisu w NVD 2026-09-17: TUTAJ JESTEŚMY

7. BEZPOŚREDNI LINK DO DZIAŁANIA: checklista dla CTO/CFO

Biuletyny bezpieczeństwa producenta: zkteco.com/en/Security_Bulletinsibs . Wpis w NVD: nvd.nist.gov/vuln/detail/CVE-2023-38950 .

Lp.

Zadanie

Kto

Deadline

1

Ustalić, czy firma używa BioTime i kto odpowiada za jego utrzymanie

CTO

DZISIAJ

2

Uzyskać potwierdzenie odcięcia serwera obecności od internetu

CTO

DZISIAJ

3

Zlecić zmianę hasła do bazy danych i sprawdzenie, czy nie było powtarzane

CTO

DZISIAJ

4

Zamówić u dostawcy aktualizację do wersji z poprawką

CFO

DO JUTRA

5

Zlecić przegląd logów serwera obecności

CTO

DO JUTRA

6

Ocenić z inspektorem ochrony danych, czy doszło do naruszenia danych pracowników

CTO

DO JUTRA

7

Sprawdzić umowę z dostawcą czytników: kto odpowiada za aktualizacje oprogramowania

CFO

DO JUTRA

Tomasz Kaczmarek
Tomasz Kaczmarek

Mogę Ci jakoś pomóc?

8. PYTANIA DO TWOJEGO ZESPOŁU IT

#

Pytanie

Odpowiedź

Priorytet

1

Czy używamy ZKTeco BioTime lub ZKBioTime?

TAK / NIE

🔴

2

Jaka jest wersja programu?

[wersja]

🔴

3

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.

Masz to samo u siebie?

Możemy się tym zająć

Krótka rozmowa wystarczy, żeby ocenić zakres prac i podać widełki kosztu. Bez zobowiązań.