Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft template with fuzzing + unsigned code block
-
DeliveryDeliver template to victim's DAST workflow
-
ExploitOperator runs Nuclei with -dast
-
ExecutionDAST branch skips code-signing check
-
PersistUnsigned code queued into execution
-
ImpactArbitrary shell commands run on scanner host
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK
2 techniques across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the operator (a) launch Nuclei with the |
| Impact | This is a genuine remote-code-execution flaw (arbitrary shell commands, CWE-78) whose real-world risk is meaningfully constrained by its exploitation model, which is why the vendor CVSS of 4.7 is Medium rather than Critical. The vector CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:N encodes the key limiters: AV:L and UI:R because the attack requires a Nuclei operator to actively run a DAST scan and feed it an attacker-supplied template; AC:H because two conditions must coincide (the |
| Exploit ScenarioDerived | A CI pipeline or security team runs a Nuclei DAST scan ( |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 22, 2026
Arbitrary shell command execution is possible in ProjectDiscovery Nuclei versions 3.0.0 through 3.9.x when DAST mode (-dast) loads an attacker-supplied, unsigned multiprotocol template that combines an HTTP fuzzing: block with a code: block, allowing the embedded unsigned code request to bypass the code-template signature check and run shell commands on the scanning host. The flaw is a signature-verification bypass (CWE-78 command injection) and is constrained in practice: it requires the operator to enable DAST and to point the scanner at a malicious template, and it does not affect users who scan only with trusted, signed first-party templates or who do not use DAST. No public exploit code has been identified at time of analysis and the issue is not listed as confirmed actively exploited (CISA KEV); it is fixed in Nuclei 3.10.0. Note that the independent assessment rates the vector at CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H, treating confidentiality, integrity, and availability as fully impacted once the payload executes, which is a higher impact picture than the vendor-published 4.7 Medium score.
RemediationAI
Upgrade to Nuclei 3.10.0 or later, which is the vendor-released patched version (release notes: https://github.com/projectdiscovery/nuclei/releases/tag/v3.10.0; advisory: https://github.com/projectdiscovery/nuclei/security/advisories/GHSA-jpf4-98qj-qr67; fix PR: https://github.com/projectdiscovery/nuclei/pull/7472, commit 1c440e755a97471c56fb0276ee8a8c4132974645). If upgrade cannot be performed immediately, the most effective compensating control is to eliminate the trigger condition: do not run DAST scans (-dast) against untrusted, third-party, or community-contributed template sets, and do not enable DAST in SDK integrations that consume externally supplied templates - the trade-off is loss of DAST fuzzing coverage for those scans. Restrict template loading to a vetted, signed first-party template directory and treat any template that contains both a fuzzing: block and a code: block as untrusted until reviewed, since that pairing is the specific structure weaponized by this bypass; this requires template review effort and can break legitimate custom multiprotocol templates. Where DAST must be used, run scans in a disposable, least-privileged container or workspace with no access to host secrets, cloud credentials, or the internal network, so that successful command execution is contained at the cost of added environment overhead and reduced scan reach. Auditing for prior compromise should focus on template sources used with -dast and on child processes spawned by the Nuclei binary, since detection of the injected code: block is otherwise indistinguishable from legitimate template execution.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 4 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Nuclei is a vulnerability scanner driven by a YAML-based DSL in which templates declare requests across protocols including http, network, and code. The code: protocol is the dangerous one: it hands a source string to an interpreter engine (the proof-of-concept template in the upstream fix uses py/python3) and executes it as a local process, which is why upstream gates it behind a cryptographic signature flag (the parsed template's Verified field) and normally requires an explicit -code opt-in. The vulnerable path sits in pkg/catalog/loader/loader.go inside LoadTemplatesWithTags: when DAST mode is active, template loading took a branch that accepted multiprotocol templates containing a fuzzing: block without reapplying the 'HasCodeRequest() && !Verified && !HasWorkflows()' skip logic, so a template that paired a fuzzable HTTP request with an unsigned code: block was queued for execution. The root cause class is CWE-78 (improper neutralization of special elements used in an OS command), realized here not by direct input concatenation but by bypassing the authorization check that is supposed to prevent untrusted template code from ever reaching the command-execution engine. The upstream fix (PR #7472, commit 1c440e755a97471c56fb0276ee8a8c4132974645) hoists the unsigned-code check so it runs before any loading path, including DAST, and adds a regression integration case (protocols/code/dast-unsigned.yaml plus dastUnsignedCode) asserting that the unsigned template must error out rather than execute. Affected installs are captured by the CPE cpe:2.3:a:projectdiscovery:nuclei:*:*:*:*:*:*:*:* covering the 3.0.0-to-pre-3.10.0 range.
Know when Nuclei gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:N
Attacker-supplied template must be loaded by an operator running -dast (AV:L, UI:R, AC:H); arbitrary shell execution yields full C/I/A on the scanner host, so I raise impact above the vendor's I:H-only.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Nuclei is a vulnerability scanner built on a simple YAML-based DSL. From 3.0.0 until 3.10.0, the DAST template loading branch does not apply the unsigned code-template signature check before accepting a template that contains both a fuzzing: block and an unsigned code: block. When an operator enables -dast, an untrusted multiprotocol template can place an unsigned code request into the execution queue and run arbitrary shell commands even without -code or a valid cryptographic signature. The issue affects CLI DAST scans and SDK integrations that enable DAST while accepting attacker-supplied templates. This issue is fixed in version 3.10.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Nuclei is a vulnerability scanner powered by YAML based templates. Rated high severity (CVSS 7.8), this vulnerability is
Nuclei is a vulnerability scanner. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no authen
projectdiscovery/nuclei is a fast and customisable vulnerability scanner based on simple YAML based DSL. Rated high seve
Local attackers with write access to Nuclei's on-disk template storage can bypass template signature verification and ca
Local file disclosure in ProjectDiscovery Nuclei 3.0.0 through 3.9.x lets an untrusted, unsigned workflow template read
Sensitive environment-variable disclosure in ProjectDiscovery Nuclei (versions 3.0.0 through anything before 3.10.0) all
Local file disclosure in ProjectDiscovery Nuclei 3.0.0 through 3.9.x lets an attacker-controlled MySQL-compatible endpoi
DSL expression injection in ProjectDiscovery Nuclei before 3.8.0 allows remote code execution when using the -env-vars f
EUVD-2026-84556
GHSA-jpf4-98qj-qr67
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB