CVE-2023-6948
Executive Summary
CVE-2023-6948 is a buffer copy vulnerability (CWE-120) in the v2_sdk_service of multiple DJI drone models. The flaw resides in the sdk_printf function within the libv2_sdk.so library, which is used by the dji_vtwo_sdk binary. An attacker on the same network can send a crafted payload to port 10000, triggering a missing input size check and causing a denial-of-service (DoS) condition by crashing the service. The CVSS score is 3.0 (Low), but the impact on drone availability is significant for operators relying on real-time telemetry and control.
This vulnerability does not affect any package registries (NPM, PyPI, Go, Ruby) and is specific to DJI's embedded firmware.
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.
No signup required
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
- Base Score: 3.0 (Low)
- Attack Vector: Adjacent Network (AV:A) – attacker must be on the same Wi-Fi or local network as the drone.
- 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 vulnerability does not affect other components.
- Confidentiality Impact: None (C:N) – no data exposure.
- Integrity Impact: None (I:N) – no data modification.
- Availability Impact: Low (A:L) – service crash leads to temporary denial of service.
Threat Level: Low. The attack requires network adjacency and only results in a DoS. However, for drone operations, this can be critical if the drone loses telemetry or control during flight.
Deep Dive & Mechanics
The vulnerability is a classic buffer copy without size checking (CWE-120). The sdk_printf function in libv2_sdk.so is used by the dji_vtwo_sdk binary to handle incoming data on port 10000. When a crafted payload is sent, the function copies data into a fixed-size buffer without verifying that the input length does not exceed the buffer capacity. This leads to a stack or heap buffer overflow, corrupting adjacent memory and causing the service to crash.
The v2_sdk_service is responsible for handling SDK commands from ground stations or mobile apps. A crash of this service can disrupt real-time telemetry, video feed, and control commands, effectively grounding the drone until the service is restarted (often requiring a power cycle).
The affected models share a common firmware base, but the exact vulnerable code path may vary slightly. The lack of a patch for all models suggests the vendor may have silently fixed it in later firmware versions without public disclosure.
Vulnerable vs. Patched Code
No patched code is publicly available. The vulnerability is present in the sdk_printf function within libv2_sdk.so. A hypothetical fix would involve adding a size check before copying data into the buffer:
Vulnerable (pseudo-code):
void sdk_printf(char *input) {
char buffer[256];
strcpy(buffer, input); // No size check
// process buffer
}
Patched (pseudo-code):
void sdk_printf(char *input) {
char buffer[256];
strncpy(buffer, input, sizeof(buffer) - 1); // Size check
buffer[sizeof(buffer) - 1] = '\0';
// process buffer
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- A DJI drone from the affected list (e.g., Mavic 3 Pro) with firmware version below the fixed threshold.
- Network access to the drone's IP on port 10000 (e.g., same Wi-Fi network).
- A tool to send raw TCP payloads (e.g., netcat, Python, or Metasploit).
Exploitation Steps:
- Identify the drone's IP address (e.g., via ARP scan or network discovery).
- Craft a payload that exceeds the expected buffer size. For example, send a long string of 'A' characters.
- Send the payload to the drone on port 10000 using TCP:
echo "AAAA...AAAA" | nc -w 2 <drone_ip> 10000 - The
v2_sdk_servicewill crash, causing a denial of service. The drone may lose telemetry and control until rebooted.
Note: No public exploit code is available, but the vulnerability is trivial to trigger.
Blue Team
Detection:
- Monitor network traffic to port 10000 for unusually large payloads or malformed packets.
- Use the YARA and Sigma rules provided in the Detection Engineering section.
- Enable logging on the drone's service (if possible) to capture crash events.
Mitigation:
- Restrict network access to port 10000 using firewall rules (e.g., only allow trusted IPs).
- Update drone firmware to the latest version if available.
- Segment the drone's network from untrusted devices.
Indicators of Compromise (IOCs)
- Network: TCP packets to port 10000 with payloads exceeding 256 bytes.
- Logs: Crash logs from
dji_vtwo_sdkorv2_sdk_serviceindicating a buffer overflow. - Behavior: Sudden loss of telemetry or control from the drone without physical intervention.
Detection Engineering
YARA Rule
rule CVE_2023_6948_DJI_Buffer_Overflow {
meta:
description = "Detects buffer overflow attempts against DJI v2_sdk_service on port 10000"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2023-6948"
strings:
$s1 = "v2_sdk_service" ascii wide nocase
$s2 = "sdk_printf" ascii wide nocase
$s3 = "libv2_sdk.so" ascii wide nocase
condition:
any of them
}
Sigma Rule
title: CVE-2023-6948 DJI v2_sdk_service Buffer Overflow Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects network traffic targeting DJI drone port 10000 with oversized payloads
author: Valters IT
date: 2025-04-10
logsource:
category: network_connection
product: suricata
detection:
selection:
dest_port: 10000
payload_length: ">256"
condition: selection
falsepositives:
- Legitimate large SDK commands (unlikely)
level: medium
Suricata Rule
alert tcp any any -> any 10000 (msg:"CVE-2023-6948 DJI v2_sdk_service Buffer Overflow Attempt"; flow:to_server,established; content:"|41 41 41 41|"; depth:256; threshold:type limit, track by_src, count 1, seconds 60; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Update drone firmware to the latest version provided by DJI for your model.
- If no update is available, restrict network access to port 10000 using firewall rules (e.g., only allow trusted IPs).
- Monitor network traffic for anomalies on port 10000.
Long-Term Recommendations:
- DJI should release a firmware patch that adds input size validation in the
sdk_printffunction. - Implement network segmentation for drone control networks.
- Use VPN or encrypted tunnels for drone communication to prevent adjacent network attacks.
Workaround: Disable the v2_sdk_service if not required, or block port 10000 at the network level.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.