CVE-2023-38950

ZKTeco BioTime

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2025-05-19

Официальное описание

ZKTeco BioTime contains a path traversal vulnerability in the iclock API that allows an unauthenticated attacker to read arbitrary files via supplying a crafted payload.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2023-38950 представляет собой критическую уязвимость типа Path Traversal (обход путей) в API-интерфейсе iclock программного обеспечения ZKTeco BioTime.

Проблема заключается в недостаточной фильтрации входных данных, передаваемых в параметрах запроса к API. Неавторизованный злоумышленник может отправить специально сформированный HTTP-запрос, содержащий последовательности обхода директорий (например, ../), что позволяет выйти за пределы корневого каталога веб-сервера. Это дает возможность удаленно прочитать конфиденциальные файлы системы, включая конфигурационные файлы с паролями БД, ключи шифрования и системные файлы ОС.

Как исправить

Основным способом устранения уязвимости является обновление программного обеспечения до версии, в которой разработчик внедрил механизмы валидации путей.

  1. Перейдите на официальный сайт ZKTeco или свяжитесь с технической поддержкой для получения актуального патча или дистрибутива BioTime (версии 8.5.3 build 20230620 или новее).
  2. Перед установкой создайте резервную копию базы данных и текущей директории приложения.
  3. Остановите службы BioTime:
net stop BioTime

  1. Запустите инсталлятор обновления от имени администратора и следуйте инструкциям мастера установки.
  2. После завершения обновления убедитесь, что службы запущены:
net start BioTime

Временные меры

Если немедленное обновление невозможно, необходимо ограничить возможности эксплуатации уязвимости на уровне сетевой инфраструктуры и конфигурации сервера.

  1. Настройте Web Application Firewall (WAF) для блокировки запросов к эндпоинтам /iclock/, содержащих подозрительные символы:
\.\.\/
\.\.\\
%2e%2e%2f

  1. Ограничьте доступ к API BioTime, разрешив подключения только с доверенных IP-адресов (IP Whitelisting) ваших терминалов и административных панелей.

  2. Запустите службу BioTime от имени пользователя с минимальными привилегиями в системе (Service Account), чтобы ограничить доступ процесса к системным файлам (например, /etc/shadow или C:\Windows\System32\config\SAM).

  3. Включите подробное логирование HTTP-запросов на веб-сервере (IIS или Nginx, используемый в BioTime) для мониторинга попыток эксплуатации:

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpLogging" -name "dontLog" -value $false