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-запрос, содержащий последовательности обхода директорий (например, ../), что позволяет выйти за пределы корневого каталога веб-сервера. Это дает возможность удаленно прочитать конфиденциальные файлы системы, включая конфигурационные файлы с паролями БД, ключи шифрования и системные файлы ОС.
Как исправить
Основным способом устранения уязвимости является обновление программного обеспечения до версии, в которой разработчик внедрил механизмы валидации путей.
- Перейдите на официальный сайт ZKTeco или свяжитесь с технической поддержкой для получения актуального патча или дистрибутива BioTime (версии 8.5.3 build 20230620 или новее).
- Перед установкой создайте резервную копию базы данных и текущей директории приложения.
- Остановите службы BioTime:
net stop BioTime
- Запустите инсталлятор обновления от имени администратора и следуйте инструкциям мастера установки.
- После завершения обновления убедитесь, что службы запущены:
net start BioTime
Временные меры
Если немедленное обновление невозможно, необходимо ограничить возможности эксплуатации уязвимости на уровне сетевой инфраструктуры и конфигурации сервера.
- Настройте Web Application Firewall (WAF) для блокировки запросов к эндпоинтам
/iclock/, содержащих подозрительные символы:
\.\.\/
\.\.\\
%2e%2e%2f
-
Ограничьте доступ к API BioTime, разрешив подключения только с доверенных IP-адресов (IP Whitelisting) ваших терминалов и административных панелей.
-
Запустите службу BioTime от имени пользователя с минимальными привилегиями в системе (Service Account), чтобы ограничить доступ процесса к системным файлам (например,
/etc/shadowилиC:\Windows\System32\config\SAM). -
Включите подробное логирование HTTP-запросов на веб-сервере (IIS или Nginx, используемый в BioTime) для мониторинга попыток эксплуатации:
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpLogging" -name "dontLog" -value $false