This is a warehouse side door left unlatched on a system that usually lives behind the loading dock
CVE-2026-11420 covers two path traversal flaws in the Network Installation Service (NIS) of Altium Enterprise Server. Per the CVE summary surfaced by VulDB, an unauthenticated network attacker can both write arbitrary files to writable server locations and read deployment package archives; no login, session, or credentials are required. The exact vendor-published affected matrix was not available in the located advisory set, but Altium's 8.0 release notes show a fix for a *critical path traversal vulnerability* in version 8.0.4, so the safe working assumption is at least 8.0.0-8.0.3 are affected.
In pure exploit mechanics this smells like a CRITICAL: unauthenticated network reachability plus server-side file write is how you graduate from bug to box ownership. But severity in the field depends on exposure, and NIS is an on-prem administrative software-distribution feature intended for local-network use, not a mass internet SaaS surface. That exposure friction pulls it down one notch to ASSESSED AT HIGH rather than CRITICAL.
4 steps from start to impact.
Find a reachable NIS-backed Enterprise Server
curl, or proxy tooling such as Burp Suite against the Workspace web interface and related installation endpoints.- Network path to the Enterprise Server host
- NIS or its supporting web endpoints exposed to the attacker
- NIS is an on-prem administrative feature usually intended for internal software distribution, not public exposure
- Many deployments will only expose the Workspace over VPN, reverse proxy, or internal LAN
Abuse traversal to escape intended package paths
curl, the attacker sends crafted path input that causes NIS file operations to resolve outside the intended directory boundary. The CVE summary indicates two outcomes: arbitrary file write to writable locations and package archive read from the server.- The vulnerable request path is reachable unauthenticated
- The server accepts attacker-controlled file path elements
- The attacker still needs the right endpoint shape and parameter placement
- Path normalization differences, proxies, and URL rewriting can break commodity exploit attempts
Turn file access into real impact
- Writable destination exists under the service account's permissions
- The target location is operationally useful, such as a web root, executable path, or config path
- Least-privileged service accounts and hardened filesystem ACLs can limit useful write targets
- Some deployments may not expose a writable path that is immediately executable
Escalate to server takeover
- A modified file is consumed by IIS, the application stack, or a dependent service
- The attacker can trigger or wait for normal service processing
- Execution may require a service restart, app reload, or a target path that is actually interpreted
- Modern EDR can interrupt post-write execution chains even after the initial vulnerable request succeeds
The supporting signals.
| In-the-wild status | No confirmed public exploitation evidence found in the located sources, and not KEV-listed per the provided intel. |
|---|---|
| Proof-of-concept availability | No public GitHub or Exploit-DB PoC was found during this review. That reduces mass exploitation pressure, but the bug class is simple enough that private weaponization is plausible. |
| EPSS | 0.00676 from the provided intel, which is low in absolute terms and argues against immediate herd exploitation. |
| KEV status | No — not present in CISA's Known Exploited Vulnerabilities catalog based on the provided intel and review of the catalog source. |
| Exploit preconditions | Unauthenticated remote network access to a reachable Enterprise Server/NIS surface; no credentials or session are required according to the CVE summary. |
| Impact shape | Arbitrary file write to writable server locations plus package archive read. File write is the decisive risk because it can become service-account RCE or persistent service compromise. |
| Affected versions | Exact vendor matrix was not located. Based on Altium 8.0.4 release notes, treat at least versions before 8.0.4 as affected; I would not assume 7.2 is fixed because no comparable backport note was found. |
| Fixed versions | Altium release notes show the path traversal fix in Altium On-Prem Enterprise Server 8.0.4 Build 2 dated 2026-04-01. |
| Exposure reality | NIS is documented as a local-network software deployment feature and admin workflow. That sharply narrows the exposed population versus mainstream internet-facing enterprise apps. |
| Scanning / internet telemetry | No reliable public GreyNoise, Shodan, or Censys signal for CVE-specific scanning was found. Also, no public fingerprint in the located material cleanly isolates vulnerable NIS exposure, so internet census undercounts are likely. |
noisgate verdict.
The single most important factor is unauthenticated remote arbitrary file write: if an attacker can reach this service, they do not need credentials to start modifying server-side files. I kept it at HIGH instead of CRITICAL because the vulnerable component is a niche, on-prem administrative deployment service that is usually reachable only from internal management networks, which materially limits real-world exposure population.
Why this verdict
- Primary amplifier: unauthenticated remote file write means no prior compromise stage, no account, and no role assignment are needed if the service is reachable.
- Downward pressure: attacker position still requires network reachability to a niche on-prem admin feature; NIS is meant for internal software deployment, which implies many real deployments keep it off the public internet.
- Further downward pressure: no KEV, low EPSS, and no public PoC found in the reviewed sources, so there is not yet strong evidence of active attacker adoption.
- Blast radius stays serious because successful write access can become service-account code execution, binary/config overwrite, or long-lived server compromise.
Why not higher?
I did not call this CRITICAL because the real-world exposed population is narrower than the raw bug mechanics suggest. This is not a ubiquitous public edge device; it is an on-prem administrative subsystem, and there is no confirmed active exploitation or public weaponization signal in the reviewed sources.
Why not lower?
I did not push this to MEDIUM because unauthenticated server-side file write is not a minor bug class. If the host is reachable, the attacker can skip authentication entirely and move directly toward server compromise, which is too much blast radius for a lower bucket.
What to do — in priority order.
- Restrict NIS to management networks only — Put the Enterprise Server and any NIS-related endpoints behind VPN, bastion, or management VLAN controls and block direct user-subnet and internet access. For a HIGH verdict, deploy this within 30 days to meet the mitigation intent while you stage the vendor fix.
- Remove public publication paths — Audit reverse proxies, load balancers, NAT rules, and published DNS names for any Enterprise Server exposure that is broader than administrators actually need. If externally published, remove that exposure within 30 days because this CVE's value collapses when reachability disappears.
- Harden service-account and filesystem ACLs — Ensure the Altium/IIS service identity cannot write to executable paths, web content roots, or sensitive config directories beyond what is operationally required. Do this within 30 days; it does not fix traversal, but it cuts off the easiest RCE and persistence paths.
- Alert on traversal and file-write indicators — Create detections for encoded traversal sequences in IIS/reverse-proxy logs and for file modifications under
C:\Program Files (x86)\Altium\Altium365, web roots, and related config paths. Roll this out within 30 days so you have exploitation visibility before full remediation lands everywhere.
- MFA or SSO: this flaw is described as unauthenticated, so identity hardening does not sit in the exploit path.
- Relying on browser auth to the Workspace UI: the vulnerable condition is in NIS request handling, not in whether humans log in properly.
- Signature-only WAF rules: traversal variants are easy to mutate, and a WAF does nothing if the exposure is internal-only or bypasses the proxy path you are inspecting.
Crowdsourced verification payload.
Run this on the target Enterprise Server host or via your Windows remote management tooling. Invoke it with powershell.exe -ExecutionPolicy Bypass -File .\check-altium-cve-2026-11420.ps1; local read access is usually enough, but administrative rights help if your uninstall inventory or install path is locked down.
# check-altium-cve-2026-11420.ps1
# Conservative local version check for Altium On-Prem Enterprise Server
# Exit codes:
# 0 = PATCHED
# 1 = VULNERABLE
# 2 = UNKNOWN
# 3 = PRODUCT NOT FOUND (reported as UNKNOWN)
[CmdletBinding()]
param()
$ErrorActionPreference = 'SilentlyContinue'
function Get-AltiumVersionFromRegistry {
$paths = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
foreach ($path in $paths) {
$items = Get-ItemProperty -Path $path
foreach ($item in $items) {
$name = [string]$item.DisplayName
if ($name -match 'Altium.*(Enterprise Server|On-Prem Enterprise Server)') {
$ver = [string]$item.DisplayVersion
if ($ver) { return $ver }
}
}
}
return $null
}
function Get-AltiumVersionFromFiles {
$candidates = @(
'C:\Program Files (x86)\Altium\Altium365\Altium365.exe',
'C:\Program Files (x86)\Altium\Altium365\avhealth.exe',
'C:\Program Files (x86)\Altium\Altium365\Services\NIS\bin\NISDeploy.exe'
)
foreach ($file in $candidates) {
if (Test-Path $file) {
$info = Get-Item $file
$ver = $info.VersionInfo.ProductVersion
if (-not $ver) { $ver = $info.VersionInfo.FileVersion }
if ($ver) { return $ver }
}
}
return $null
}
function Normalize-Version([string]$raw) {
if (-not $raw) { return $null }
if ($raw -match '(\d+\.\d+\.\d+(?:\.\d+)?)') {
try { return [version]$Matches[1] } catch { return $null }
}
return $null
}
$rawVersion = Get-AltiumVersionFromRegistry
if (-not $rawVersion) {
$rawVersion = Get-AltiumVersionFromFiles
}
if (-not $rawVersion) {
Write-Output 'UNKNOWN - Altium On-Prem Enterprise Server not found via registry or common file paths'
exit 3
}
$version = Normalize-Version $rawVersion
if (-not $version) {
Write-Output ("UNKNOWN - Found product version string but could not parse it: {0}" -f $rawVersion)
exit 2
}
# Known fix point from Altium 8.0 release notes.
$fixed = [version]'8.0.4.0'
# Exact vendor affected matrix is not fully published in the located sources.
# Conservative logic:
# - 8.0.0.x through 8.0.3.x => VULNERABLE
# - 8.0.4.x and later => PATCHED
# - 7.x / other major branches => UNKNOWN
if ($version.Major -eq 8 -and $version.Minor -eq 0) {
if ($version -lt $fixed) {
Write-Output ("VULNERABLE - Detected Altium Enterprise Server version {0}; below fixed 8.0.4" -f $version)
exit 1
} else {
Write-Output ("PATCHED - Detected Altium Enterprise Server version {0}; at or above fixed 8.0.4" -f $version)
exit 0
}
}
Write-Output ("UNKNOWN - Detected version {0}; exact affected range outside 8.0.x was not confirmed in authoritative sources" -f $version)
exit 2
If you remember one thing.
8.0.x hosts to the fixed build (8.0.4 or later) within 180 days per the noisgate remediation SLA; if you discover an internet-exposed instance, do not wait for the full patch window before shrinking reachability.Sources
- Altium Security Advisories
- Altium On-Prem Enterprise Server 8.0 Release Notes
- Altium Network Installation Service Documentation
- VulDB CVE-2026-11420 Summary
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS API Documentation
- NVD Vulnerability API Documentation
- Altium On-Prem Enterprise Server 7.2 Release Notes
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.