CVE-2026-123960是TOTOLINKCA300-PoE路由器固件6.2c.884中一个远程可触发的缓冲区溢出漏洞"

admin 2026-11-09 19:05:50 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

CVE-2026-123960 是 TOTOLINK CA300-PoE 路由器固件 6.2c.884 中一个远程可触发的缓冲区溢出漏洞

原创

mourenzheng
mourenzheng

网络安全民工

2026年11月8日 15:00
北京

去阅读

一、漏洞定性:一个经典的 setWanConfig 缓冲区溢出

TOTOLINK CA300-PoE 是一款带 PoE 供电能力的无线接入控制器/路由器。漏洞位于其 Web 管理 CGI 的 /cgi-bin/cstecgi.cgi 端点,具体在 setWanConfig 函数中。问题出在对 pppoeUser、priDns、secDns 这三个参数的处理上:服务端在将这些参数的值拷贝到目标缓冲区时,没有验证输入长度是否小于缓冲区容量,构成了经典的缓冲区溢出(CWE-120 / CWE-119)。

项 值
漏洞类型 缓冲区溢出(CWE-120 / CWE-119)
影响产品 TOTOLINK CA300-PoE,固件 6.2c.884
攻击入口 /cgi-bin/cstecgi.cgi,setWanConfig 函数,pppoeUser/priDns/secDns 参数
认证要求 低权限(PR:L),但攻击可远程发起(AV:N)
利用复杂度 低(AC:L,VulDB:“exploitation is known to be easy”)
公开 PoC 已有(托管在 lavender-bicycle-a5a.notion.site,VulDB 标注为公开 exploit)
CVSS 评分 8.6 High(NVD/CNA VulDB,CVSS 4.0);VulDB Meta Base Score 9.9;CIRCL/Launchpad 引用 9.4 Critical
在野利用 未确认。不在 CISA KEV,Mallory 标注 “No exploitation reported”
修复版本 无。VulDB 明确指出“没有已知的对抗措施”,建议“用替代产品替换受影响的对象”

评分差异的来源是 CVSS 版本和计算方式的不同:NVD 采用的 CVSS 4.0 基础评分为 8.6(AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H),VulDB 自己的 Meta 评分(结合了时间和利用状态)达到 9.9,而部分聚合平台引用的 CNA 评分为 9.4。无论取哪个数字,High 到 Critical 的区间都指向同一个结论:这是一个需要认真对待的远程内存损坏漏洞。


二、技术原理:参数拷贝没有边界

setWanConfig 是路由器 Web 界面用来配置 WAN 连接(如 PPPoE 拨号)的函数。pppoeUser(PPPoE 用户名)、priDns 和 secDns(主/备 DNS 服务器)都是用户可提交的字符串参数。在正常的实现中,每个参数都应该被复制到一个固定大小的缓冲区里,并且在复制前检查传入字符串的长度。

这个漏洞的本质是这个检查不存在。当一个远超目标缓冲区容量的值被提交时,拷贝操作会越过目标缓冲区的边界,覆盖相邻的内存区域。在嵌入式路由器这类环境中,堆或栈上的相邻内存往往包含函数指针、返回地址或关键的控制结构,溢出可能直接导致控制流被劫持。VulDB 的 CWE 标注同时包含了 CWE-120(缓冲区复制未检查输入大小)和 CWE-119(内存缓冲区边界内的操作限制不当),描述的是同一个根本问题。

Mallory 的分析对此保持了恰当的谨慎:具体的利用效果(如任意代码执行)尚未被公开证实。公开信息停留在“PoC 已披露、内存损坏已确认”的层面。但这不改变风险的定性——一个远程可触发、有公开 PoC、且厂商无补丁的内存损坏漏洞,本身就是攻击链中价值最高的原语之一。


三、利用条件与真实风险

利用这个漏洞需要满足的条件很少:

  1. 网络可达性:攻击者需要能访问路由器的 Web 管理接口(通常是 HTTP 端口 80 或 443)。
  2. 管理接口暴露:该接口通常监听在 LAN 侧。如果路由器开启了远程管理(从 WAN 侧可达),或者攻击者已经处于同一局域网内,利用即可发生。
  3. 低权限:CVSS 向量中的 PR:L 意味着攻击者需要某种形式的低权限访问,而不是完全未认证。但这通常只是指“能向管理接口发送请求”——在很多路由器配置中,管理界面的某些功能对未登录用户也是可触达的。

风险最高的是那些将管理接口暴露在互联网上的 CA300-PoE 设备,或者部署在攻击者可以访问 LAN 侧的网络环境中(如共享办公空间、酒店网络、多租户楼宇)。

VulDB 的记录中有一个值得注意的细节:“没有关于可能的对抗措施(countermeasures)的信息”,并建议“用替代产品替换受影响的对象”。这不是敷衍,而是对“厂商无补丁”这一现实的直接反映。


四、检测与排查:确认型号、固件和暴露面

由于 TOTOLINK 尚未发布修复版本,检测的核心是资产清点和暴露面评估,而不是扫描漏洞本身。发送溢出载荷来“测试”漏洞,在非授权环境中就是实施攻击。

4.1 Python 检测脚本(只读指纹与暴露面探测)

以下脚本仅做只读探测:尝试识别 TOTOLINK CA300-PoE 的管理接口,并检查 /cgi-bin/cstecgi.cgi 端点是否存在。不发送任何溢出载荷。

#!/usr/bin/env python3# -*- coding: utf-8 -*-\"\"\"CVE-2026-123960 TOTOLINK CA300-PoE 指纹与暴露面检测(只读)用法: python check_totolink_ca300.py http://target仅探测管理接口与端点存在性,不发送溢出载荷。\"\"\"import sysimport requestsimport urllib3urllib3.disable_warnings()
TIMEOUT = 8

def check(base):    base = base.rstrip(\"/\")    print(f\"[*] 目标: {base}\")
    # 1) 尝试识别 TOTOLINK 管理界面    try:        r = requests.get(base, timeout=TIMEOUT, verify=False, allow_redirects=True)    except requests.RequestException as e:        print(f\"[-] 连接失败: {e}\")        return
    markers = [\"TOTOLINK\", \"CA300\", \"cstecgi\"]    if any(m.lower() in r.text.lower() for m in markers):        print(\"[*] 检测到 TOTOLINK 管理界面特征\")    else:        print(\"[*] 未在前端检测到明确的 TOTOLINK 特征,继续探测端点\")
    # 2) 探测 cstecgi.cgi 端点是否存在(空 GET/POST,不携带溢出参数)    endpoint = f\"{base}/cgi-bin/cstecgi.cgi\"    try:        rp = requests.get(endpoint, timeout=TIMEOUT, verify=False)    except requests.RequestException:        try:            rp = requests.post(endpoint, data={}, timeout=TIMEOUT, verify=False)        except requests.RequestException:            print(\"[-] 无法访问 cstecgi.cgi 端点\")            return
    if rp.status_code in (200, 400, 500):        print(f\"[!] 端点 /cgi-bin/cstecgi.cgi 可达(HTTP {rp.status_code})\")        print(\"[!] 该端点的 setWanConfig 函数存在缓冲区溢出(CVE-2026-123960)\")        print(\"[!] 公开 PoC 已存在,利用难度被评估为“easy”\")    else:        print(f\"[*] 端点返回 HTTP {rp.status_code},需人工判断是否为 CA300-PoE\")
    print(\"\
[*] 固件版本确认:请在管理界面查看“系统信息”或“固件版本”\")    print(\"[*] 受影响版本:6.2c.884。无修复固件可用。\")    print(\"[*] VulDB 建议:用替代产品替换受影响的对象。\")

if __name__ == \"__main__\":    if len(sys.argv) != 2:        print(f\"用法: {sys.argv[0]} http://target\")        sys.exit(1)    check(sys.argv[1])

说明:脚本不发送任何 pppoeUser/priDns/secDns 参数,仅确认端点是否存在。如果端点返回 200/400/500,说明目标正在处理对该路径的请求,结合前端特征可初步判断为 TOTOLINK 设备。

4.2 Nuclei 模板(安全指纹版)

id: CVE-2026-123960-totolink-ca300-detect
info:  name: TOTOLINK CA300-PoE CVE-2026-123960 - Safe Endpoint Fingerprint  author: security-research  severity: high  description: |    探测 TOTOLINK CA300-PoE 的 /cgi-bin/cstecgi.cgi 端点是否存在。    不发送溢出载荷,不触发漏洞。  reference:    - https://nvd.nist.gov/vuln/detail/CVE-2026-123960    - https://vuldb.com/vuln/432023  classification:    cvss-metrics: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H    cvss-score: 8.6    cwe-id: CWE-120  tags: cve,cve2026,totolink,ca300,buffer-overflow,detect
http:  - method: GET    path:      - \"{{BaseURL}}/\"      - \"{{BaseURL}}/cgi-bin/cstecgi.cgi\"
    stop-at-first-match: true    matchers-condition: or    matchers:      - type: word        part: body        words:          - \"TOTOLINK\"          - \"CA300\"          - \"cstecgi\"        condition: or        case-insensitive: true      - type: status        status:          - 200          - 400          - 500
    extractors:      - type: kval        name: server        kval:          - server

运行方式:

nuclei -t CVE-2026-123960-totolink-ca300-detect.yaml -u http://target

说明:模板仅做端点和产品指纹,不发送任何溢出载荷。由于漏洞利用是单请求即可触发的缓冲区溢出,发送利用载荷本身就构成攻击。


五、缓解措施:没有补丁时的防御逻辑

TOTOLINK 官方尚未发布修复固件,VulDB 明确表示没有已知的对抗措施。在补丁缺位的情况下,网络层的暴露面收敛是唯一有效的防御手段。

措施 效果 局限
禁用远程管理(如果设备支持) 阻止从 WAN 侧触达管理接口 仅覆盖互联网暴露场景
将管理接口限制在专用 VLAN 或可信设备 阻止 LAN 侧的未授权攻击者 需要网络架构调整
监控对 /cgi-bin/cstecgi.cgi 的异常请求 发现利用尝试 需要流量可见性
考虑替换设备 VulDB 的建议是“用替代产品替换” 成本较高,但是没有补丁时的确定性方案

特别提示:由于 CVSS 向量中标注的是 PR:L(低权限)而非 PR:N(无认证),攻击者可能需要某种形式的低权限会话才能触达 setWanConfig。但这不意味着设备可以安全地暴露——在许多路由器配置中,管理界面的某些路径对未登录用户也是可达的,而“低权限”的具体门槛取决于设备的实际实现。


六、今晚的判断

CVE-2026-123960 的风险画像:远程可触发、有公开 PoC、利用难度低、厂商无补丁。 CVSS 评分在 8.6 到 9.9 之间的分歧,不应该成为延迟处理的理由——分歧的只是“有多严重”,而不是“是否存在风险”。

行动顺序:

  1. 清点 TOTOLINK CA300-PoE 设备,确认固件是否为 6.2c.884。
  2. 检查管理接口的暴露面:是否开启了远程管理?是否处于不可信网络可达的范围?
  3. 对暴露的管理接口进行网络隔离(VLAN、ACL、VPN)。这是当前唯一能确定性降低风险的动作。
  4. 如果设备在关键位置且无法隔离,认真考虑替换。VulDB 的建议不是随口的——当一个有公开 PoC 的远程内存损坏漏洞没有厂商补丁时,“等待”本身就是一个风险决策。

一个 CVSS 8.6 以上、PoC 公开、利用简单、没有补丁的远程缓冲区溢出,在暴露于不可信网络的前提下,暴露面收敛的时间窗口,就是攻击者利用的时间窗口。

智能设备安全闭环" 网络安全文章

智能设备安全闭环"

本文分析了智能家居、可穿戴设备和工业物联网场景中APP、云服务器与IoT的安全挑战,包括资产分析、威胁建模与安全控制措施,并提供架构图与数据流图。
评论:0   参与:  0