← back
CVE-2023-38950highunder attackCWE-22

CVE-2023-38950

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 7.5epss 85%
from disclosure to weapon
Published on NVDAug 3
CISA KEV+655d
exploitation probability
85%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
1 public exploit(s)
Action required by CISAfederal deadline: 2025-06-09

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Summary

Falha de path traversal (CWE-22) na API iclock do ZKTeco BioTime, que permite a um atacante não autenticado ler arquivos arbitrários do sistema via rede, sem qualquer credencial. É crítica na prática: está no catálogo KEV da CISA com exploração confirmada, tem EPSS altíssimo (0,85) e PoC pública, então não é um CVSS 7.5 'de prateleira' — é risco ativo para quem ainda expõe a interface iclock na internet.

Technical detail

A API iclock do BioTime é o canal usado pelos próprios terminais biométricos (relógios de ponto ZKTeco) para se comunicar com o servidor central — registrar batidas de ponto, sincronizar dados de funcionários, etc. Por design, esse endpoint precisa aceitar conexões de dispositivos sem autenticação prévia forte, o que já reduz a superfície de proteção disponível para o fornecedor corrigir a falha sem quebrar a funcionalidade original.

O problema é que um dos parâmetros aceitos pela API — usado para referenciar caminhos de arquivo, provavelmente ligado a upload/download de logs, fotos ou arquivos de configuração dos terminais — não sanitiza sequências de travessia de diretório (`../` e variantes codificadas). Isso permite que o valor enviado pelo cliente escape do diretório esperado e aponte para qualquer arquivo legível pelo processo do servidor web, incluindo arquivos de configuração da aplicação, banco de dados local ou arquivos de sistema, dependendo de permissões do processo.

O atacante controla o payload da requisição e não precisa de nenhuma sessão válida — a mesma característica que torna a API acessível para os terminais físicos a torna acessível para qualquer cliente HTTP na rede. Não há evidência nas fontes de que a falha exija parâmetros GET/POST específicos documentados publicamente por escrito oficial; o mecanismo confirmado é leitura arbitrária de arquivo (impacto em confidencialidade), sem impacto direto reportado em integridade ou disponibilidade, o que é consistente com o vetor CVSS C:H/I:N/A:N.

How it’s exploited

O vetor é de rede (AV:N), sem necessidade de autenticação (PR:N) e sem interação do usuário (UI:N) — só precisa que a interface web/API do BioTime esteja alcançável pelo atacante, tipicamente na porta HTTP/HTTPS padrão do produto. Complexidade de ataque é baixa (AC:L): não há condição de corrida, nem engenharia social, nem dependência de configuração incomum além do endpoint estar exposto.

Existe PoC pública e template Nuclei circulando, o que torna a exploração trivial de automatizar em escala — scanners de internet conseguem varrer faixas de IP em busca de instâncias BioTime vulneráveis e extrair arquivos sensíveis sem deixar rastro de autenticação. O resultado prático é exfiltração de arquivos do servidor: credenciais de banco de dados, arquivos de configuração da aplicação, ou outros dados que permitam escalar o ataque (por exemplo, obter credenciais para acesso administrativo subsequente).

A presença no catálogo KEV da CISA confirma exploração ativa em ambiente real, e o relatório da Fortinet sobre resposta a incidentes no Oriente Médio cita essa CVE entre as usadas em campanhas — o que reforça que não é exploração apenas teórica ou de laboratório. O EPSS de 0,85 é compatível com essa realidade: a chance de exploração no curto prazo é alta para qualquer instância exposta.

Versions

Affected
ZKTeco BioTime v8.5.5, conforme testado e reportado pelo pesquisador. O advisory oficial do fornecedor não foi lido integramente nesta pesquisa; não há confirmação aqui de um range de versões anteriores também vulneráveis além da testada.
Fixed in
ZKBioTime 9.0.120240617.19506 e versões posteriores.

How to protect

A correção do fornecedor está na versão 9.0.120240617.19506 do ZKBioTime (nome atual do produto, sucessor do BioTime). Atualizar para essa versão ou posterior é a mitigação definitiva confirmada pelo fornecedor.

Se a atualização não for possível de imediato, o paliativo real é restringir o acesso de rede ao endpoint iclock/API — via firewall, segmentação de rede ou VPN — permitindo apenas os terminais legítimos e o tráfego administrativo necessário, nunca exposição direta à internet. Esse controle reduz drasticamente a superfície de ataque mas não elimina o risco de um atacante já dentro da rede interna, então não substitui o patch.

Não existe mitigação eficaz baseada apenas em WAF genérico contra path traversal nesse caso, porque a lista de payloads de bypass (encoding, null byte, variações de barra) é extensa e um WAF mal ajustado tende a gerar falsos negativos; regras específicas para o padrão de URL da API iclock ajudam, mas são companheiras do patch, não substitutas dele. Monitorar exposição pública da porta do BioTime/ZKBioTime é o primeiro passo prático antes de qualquer outra ação.

How to detect

Em logs de acesso web do servidor BioTime/ZKBioTime, procure por requisições ao endpoint iclock contendo sequências de travessia de diretório (`../`, `..%2f`, `..\`, ou variantes com codificação dupla) e tentativas de acessar caminhos fora da árvore esperada da aplicação (arquivos de configuração, `/etc/passwd`, arquivos `.env`, bancos SQLite locais). Respostas HTTP 200 com corpo de tamanho incomum para esse endpoint, ou conteúdo que não corresponde ao formato esperado de resposta de terminal biométrico, são indício de exploração bem-sucedida.

Como o endpoint aceita tráfego não autenticado por natureza (é o canal dos próprios terminais), não há sinal de autenticação anômala para diferenciar tráfego legítimo de ataque — a única distinção confiável é o padrão de payload no parâmetro de caminho. Scanners automatizados usando o template Nuclei público tendem a gerar rajadas de requisições repetidas ao mesmo endpoint em curto intervalo, o que também é um sinal a monitorar via IDS/IPS de rede.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
A path traversal vulnerability in the iclock API of ZKTeco BioTime v8.5.5 allows unauthenticated attackers to read arbitrary files via supplying a crafted payload. This vulnerability was fixed in version 9.0.120240617.19506 of ZKBioTime.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.