Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain local write access to template cache
-
DeliveryOverwrite verified template with malicious code
-
ExploitRestore original modification time
-
ExecutionVictim runs Nuclei scan
-
PersistStale mtime cache skips re-verification
-
ImpactExecute arbitrary OS commands
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | Requires: (1) local write access to Nuclei's on-disk templates so the attacker can replace file contents and reset mtime via a Chtimes-style call; (2) the target template must have been previously signature-verified and cached (IndexVersion 1 metadata keyed on ModTime); (3) Nuclei must run against the tampered template with signature verification active (the default, DisableUnsignedTemplates=false), using the javascript/code protocol that executes OS commands; and (4) a victim actually invoking a scan (UI:P). Limiting factors: this is NOT remotely exploitable - an attacker with no local file access cannot trigger it, and templates that were never cached as verified are re-checked normally. Upgrading to 3.11.1 (which binds cache reuse to a content digest) fully mitigates. |
| Impact | This is a genuine but access-gated supply-chain integrity flaw, not a remotely-wormable emergency. The vendor CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H = 7.0) is internally consistent with the description: exploitation is LOCAL (an attacker must be able to rewrite template files on disk and reset their mtime), requires some existing privilege/foothold (PR:L), and is PASSIVE on the victim's side (UI:P - the victim must run Nuclei against the tampered template). The CWE-347 (improper signature verification) root cause is confirmed by the patch diff, which adds a ContentDigest and VerifierFingerprint to the cache metadata so verification is bound to content rather than modification time alone. No EPSS score, no CISA KEV entry, and no public POC were provided; VulnCheck published an advisory and the fix commit is public, but exploitation status is 'no public exploit identified at time of analysis.' The high VC/VI/VA (arbitrary OS command execution via the javascript/code protocol) is the reason the score is elevated despite local-only access. Net: a real fix-worthy trust-model bug for anyone caching verified templates in a shared or attacker-writable location, but not a mass-exploitation priority - the requirement for local file write plus a subsequent Nuclei run makes it targeted rather than widespread. |
| Exploit ScenarioDerived | An attacker who can write to Nuclei's template directory (e.g., a shared CI runner, a compromised low-priv account, or a poisoned template repo synced to disk) waits until a legitimate signed template has been verified and cached, then overwrites that file with malicious javascript/code-protocol content and uses os.Chtimes to restore the original modification time. Because Nuclei's cache keyed verification solely on mtime, the next scan reuses the stale 'verified' result and executes the attacker's OS commands. No public exploit code is identified, but the VulnCheck advisory and the fix commit's regression test demonstrate the mechanism precisely. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Local attackers with write access to Nuclei's on-disk template storage can bypass template signature verification and cause arbitrary operating system commands to execute from a tampered template in ProjectDiscovery Nuclei versions before 3.11.1 (reported as 3.7.0 through 3.10.x). The root cause is CWE-347: cached signature-verification results were keyed only on a template file's modification time, so an attacker can swap a previously verified template for unsigned malicious content and restore the original mtime to have the stale 'verified' result reused under the default configuration where unsigned templates are disabled. The assessed attack path requires local low-privilege access (CVSS 4.0 PR:L) plus a victim operator actually running a scan against the tampered template (UI:P), so this is an access-gated supply-chain integrity flaw rather than a remotely exploitable or wormable one; no public exploit identified at time of analysis, and the vendor-released fix in 3.11.1 binds cache reuse to a content digest.
RemediationAI
Vendor-released patch: upgrade to Nuclei 3.11.1, the version in which the metadata index (IndexVersion 2) records a VerifierFingerprint and ContentDigest so that a cached verification verdict can only be reused when the template content still matches what was originally signed; the corresponding upstream commit is 9de96e4dda5a03da963b9ae6582f03ea55791a76 and the advisory is at https://www.vulncheck.com/advisories/nuclei-from-3.7.0-before-3.11.1-template-signature-bypass-via-modification-time-only-cache, with engineering detail in issue https://github.com/projectdiscovery/nuclei/issues/7663. If upgrading is not immediately possible, the most direct compensating control is to delete Nuclei's on-disk metadata/catalog index so the stale Verified entries are discarded and every template is re-verified from scratch on the next run; the trade-off is slower start-up and full signature verification on each scan until the patch is applied. Because the flaw requires local write access to templates and the cache, hardening that prerequisite is equally effective: run scans under an account that has read-only permission to the template directory and its cache, and grant write access only to a separate, trusted update process - restricting the operator account to read-only prevents the mtime rollback trick entirely, at the cost of having to update templates through the privileged channel. Do not respond by setting DisableUnsignedTemplates=true, since disabling signature verification globally removes protection for every template and is strictly worse than the bug being mitigated. Finally, monitor templates and the metadata index for content changes accompanied by unchanged mtimes, and note that the non-remote nature of this issue (CVSS 4.0 AV:L) means perimeter filtering is not a meaningful mitigation; the exposure surface is local file permissions and which templates operators execute.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Nuclei loads community templates from projectdiscovery/nuclei-templates, many of which are cryptographically signed, and refuses to run unsigned templates when DisableUnsignedTemplates is left at its default of false. To avoid re-verifying every template on every run, the loader persists a gob-serialized metadata index (IndexVersion 1) containing each template's Verified flag, TemplateVerifier, and ModTime; if a file's mtime was unchanged, the cached verification verdict was reused. Because only mtime - not a content hash - was checked, an attacker who can write to the template directory could replace the contents of a signed template, reset the timestamp with a Chtimes-style call, and have the tampered file treated as verified. The impact is amplified by the javascript and code template protocols, which are compiled into runnable Goja programs capable of issuing OS commands, so a bypassed signature check translates directly into local code execution in the context of the Nuclei process. The upstream fix (commit 9de96e4dda5a03da963b9ae6582f03ea55791a76) bumps IndexVersion to 2 and adds two [32]byte fields to the metadata structure, VerifierFingerprint (identifying the public key that verified the template) and ContentDigest (binding the cached verdict to the exact content that was verified); the loader now forces re-verification whenever any of Verified, TemplateVerifier, VerifierFingerprint, or ContentDigest diverges from the freshly parsed template. The same commit also changes pkg/protocols/javascript/js.go so that unsigned init blocks are only syntax-checked at compile time and executed solely when request.options.Verified is true. The CPE string cpe:2.3:a:projectdiscovery:nuclei:*:*:*:*:*:*:*:* is a wildcard covering all versions, so version ranges must be taken from the advisory rather than the CPE, and the feed-supplied tag 'Jwt Attack' does not describe the actual mechanism, which is a signature-cache integrity failure rather than a token-handling issue.
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
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Attacker needs local write access to template files (AV:L, PR:L) and the victim must run a scan (UI:R); successful bypass yields arbitrary OS command execution, so C/I/A all High.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Nuclei versions before 3.11.1 cache template signature verification based only on file modification time without content checksums. Attackers can replace verified templates with unsigned malicious content and restore the original modification time to bypass signature checks and execute arbitrary operating system commands.
Executive ViewAI
ProjectDiscovery Nuclei, a widely used security scanning engine, contains a high-severity integrity flaw that allows an attacker with local write access to the template storage to run arbitrary operating system commands on the scanning host when an operator runs a scan against a tampered template. This undermines trust in the security tool itself and could enable an attacker to pivot from a low-privilege foothold to broader compromise of security infrastructure. Leadership should prioritize remediation because the vulnerability affects the reliability of security operations and could lead to unauthorized access or data loss if exploited.
Apply vendor patch.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Nuclei is a vulnerability scanner powered by YAML based templates. Rated high severity (CVSS 7.8), this vulnerability is
DSL expression injection in ProjectDiscovery Nuclei before 3.8.0 allows remote code execution when using the -env-vars f
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 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
Arbitrary shell command execution is possible in ProjectDiscovery Nuclei versions 3.0.0 through 3.9.x when DAST mode (-d
EUVD-2026-80901
GHSA-77rj-h8wx-6cgq
NVD
CVE.org
EPSS
Exploit-DB