导语
VulDB 于 2026 年 9 月 27 日披露 D-Link DIR-895L 路由器固件中的越界写漏洞,编号 CVE-2026-100740,CVSS 3.1 评分 9.9,属 CWE-787 / CWE-119。漏洞位于 L2TP 控制通道解析器,可经 UDP 1701 远程触发内存破坏,公开 PoC 已发布,而厂商目前没有可用补丁。
事件概述
- 受影响产品:D-Link DIR-895L 路由器,固件版本 A1_102b07
- 确认范围:VulDB 记录中仅 A1_102b07 被明确列为受影响版本;同一 L2TP 控制通道解析器的其他固件版本预计存在同源缺陷
- 披露时间:2026 年 9 月 26 日保留 CVE 编号,9 月 27 日公开记录
- 修复状态:截至披露,无厂商补丁,VulDB 明确表示该固件版本无已知缓解措施
技术细节
漏洞位于 tunnel_set_params() 函数(源文件 tunnel.c),属 L2TP 控制通道报文的解析路径。解析器在处理 Host Name AVP(属性值对)时,将长度字段截断到 127,但随后把 NUL 终止符写在 peer_hostname[len+1] 的位置——而该缓冲区只有 128 字节。这个越界字节及其相邻内存会被改写,形成一次可控的内存破坏。
# 触发路径(概念示意)
UDP/1701 <- 构造的 L2TP 控制报文(SCCRQ)
tunnel_set_params() -> Host Name AVP 长度 127
peer_hostname[128] 缓冲区越界写入 1 字节
# PoC 支持三种模式
python poc.py -u 192.168.0.1 --mode check
python poc.py -u 192.168.0.1 --mode check --l2tp-probe
python poc.py -u 192.168.0.1 --mode exploit --oob-send
攻击向量为网络可达,攻击复杂度低,无需用户交互,PoC 公开可用。最常见的触发场景是设备作为 L2TP 客户端向运营商或上游 L2TP 服务器发起连接时,由恶意或被冒充的对端返回构造报文;因此在公网侧放置 L2TP 服务的部署尤其需要关注。
影响评估
- 评分:CVSS 3.1 为 9.9(AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H/E:P),CVSS 4.0 为 9.4,均为严重级
- 利用复杂度:低。远程可达、公开 PoC 存在,攻击者无需复杂前置条件
- 实际危害:内存破坏可致设备崩溃(拒绝服务),在特定条件下可进一步发展为远程代码执行,进而以路由器为跳板进入内网,构成长期网络侧立足点
- 在野状态:未进入 CISA KEV,尚无公开的在野利用记录;但 PoC 公开后,被扫描与批量尝试只是时间问题
需要说明的是,CVSS 向量中的 PR:L(需要低权限)来自 VulDB 对需参与 L2TP 会话的判定,并非要求攻击者持有设备管理凭据。实际暴露判断应以设备是否在公网侧参与 L2TP 通信为准。
修复建议
- 最可靠的做法是更换设备。DIR-895L 属较老型号,在无补丁的情况下,隔离与替换比等待固件更实际。
- 若短期内无法更换,先把设备从不可信网络暴露面中移除:置于边界防火墙之后,禁止来自互联网的 L2TP 流量。
- 设备不需要终止 L2TP 连接时,直接关闭 L2TP 服务。
- 必须保留 L2TP 功能时,在边界设备上限制 UDP 1701 仅允许已知可信的对端 IP 访问,并记录全部会话。
- 监控设备异常行为:非预期出站连接、配置被改动、进程异常重启、管理面出现陌生会话。
- 把该 CVE 加入资产扫描基线,对同型号与同系列设备做一次普查,确认是否仍在网。