← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-11423 · CWE-22 · Disclosed 2026-06-05

A path traversal vulnerability exists in the Altium Enterprise Server Collaboration Service due to improper…

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is a master-key drawer left behind a badge reader

CVE-2026-11423 is a path traversal bug in the Altium Enterprise Server Collaboration Service. A regular authenticated user can plant a crafted filename in collaboration content, and when the MCAD or Simulation download flow later builds a server-side path from that filename, the service can be tricked into reading arbitrary files from the Windows host. The record and secondary references indicate on-premise Altium Enterprise Server is affected, Altium 365 cloud is not, and the practical fixed train is 8.1.1; in other words, treat 8.1.0 and earlier as exposed unless your vendor support channel says otherwise.

In pure impact terms this is ugly because arbitrary file read against the server can expose LocalVault.ini and related secrets, which can collapse straight into administrator access and full platform compromise. But the vendor-style 'critical by consequence' instinct overstates real-world urgency for most fleets: the attack requires a normal authenticated workspace user, hits a narrower on-prem population rather than the broader cloud estate, and there is no current KEV listing or exploitation evidence. That pushes it below internet-wormable territory, but not by much once you consider how much authority a 'mere user' can convert out of one server config file.

"Post-authenticated arbitrary file read can become full server takeover, but only on on-prem AES and only with a valid user account."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Land a normal workspace account with Burp Suite or curl

The attacker first needs any valid Altium Enterprise Server user context, not admin. That can be a legitimate insider, a contractor account, a stale shared account, or credentials obtained elsewhere. From there, a standard HTTP client such as curl or an intercept proxy such as Burp Suite is enough to drive the Collaboration Service flows.
Conditions required:
  • Valid authenticated account in the target Altium Enterprise Server workspace
  • Reachability to the on-prem Enterprise Server web endpoints
Where this breaks in practice:
  • Requires prior access, so this is not an initial-access bug
  • Many enterprises do not expose these on-prem collaboration endpoints broadly to the internet
  • SSO, IP allowlists, VPN gates, and account hygiene reduce reachable population
Detection/coverage: Most vuln scanners will miss this unless they support authenticated business-logic testing; generic unauthenticated web scans are unlikely to reach it.
STEP 02

Seed a crafted filename into collaboration content

Using Burp Suite Repeater or a scripted request, the attacker submits a collaboration message that contains a traversal sequence in the stored filename. The bug is not the upload itself; the dangerous primitive appears later when the application reuses that filename during MCAD or Simulation download path construction without proper normalization or validation.
Conditions required:
  • Ability to create or influence collaboration messages
  • Filename field is stored and later consumed by the vulnerable download flow
Where this breaks in practice:
  • Exploitability depends on the specific collaboration/download feature path being enabled and used
  • Bad input may be visible in app logs or request telemetry if verbose logging is on
Detection/coverage: Look for URL-encoded traversal patterns such as ..%5c, ..%2f, absolute paths, or suspicious file targets in IIS and application logs.
STEP 03

Trigger arbitrary file read via the download handler

The attacker invokes the vulnerable MCAD or Simulation download endpoint so the Collaboration Service resolves the crafted filename on the server. If traversal succeeds, the service reads files outside the intended content directory, turning a normal feature request into arbitrary file disclosure under the service account's filesystem permissions.
Conditions required:
  • Target server stores sensitive configuration locally and the service account can read it
  • The vulnerable endpoint returns file content or an error side channel useful for confirmation
Where this breaks in practice:
  • Blast radius is bounded by what the service account can read
  • Encrypted-at-rest secrets or split-secret designs can reduce post-read value, though Altium docs show sensitive config is file-based
Detection/coverage: Network IDS can sometimes flag traversal strings, but authenticated application-layer business logic makes coverage inconsistent. File-read telemetry from EDR on LocalVault.ini or adjacent secret files is more reliable.
STEP 04

Pivot from LocalVault.ini to admin control

The high-value target is the master server configuration, commonly located under C:\Program Files (x86)\Altium\Altium365 per Altium documentation. If that file or neighboring secret material exposes privileged credentials, OAuth secrets, certificate passwords, or key locations, the attacker can authenticate as an administrator or otherwise take over the server and its data plane.
Conditions required:
  • Readable configuration contains reusable privileged secrets
  • Those secrets remain valid and accepted by the platform
Where this breaks in practice:
  • Some environments rotate secrets, externalize them, or segregate duties enough to slow escalation
  • Successful takeover still depends on what secrets are actually present and usable
Detection/coverage: Monitor for unusual reads of LocalVault.ini, follow-on privileged logins from the same user/session, and abrupt access to admin-only APIs after collaboration feature usage.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo confirmed exploitation found in reviewed sources as of 2026-06-06. Not present in CISA KEV from the catalog search path reviewed: CISA KEV.
Proof-of-concept availabilityNo public PoC repo or researcher write-up was located in the reviewed sources. Current coverage is mainly database/indexer summaries such as VulDB and Inventive HQ.
EPSSUser-supplied EPSS is 0.00046. That is *very low* and consistent with a niche, authenticated, on-prem application bug rather than an internet-scale exploitation pattern; EPSS methodology reference: FIRST EPSS.
KEV statusNot KEV-listed in the reviewed CISA catalog path as of 2026-06-06: CISA KEV.
CVSS vector interpretationThere is no vendor or authority CVSS yet. My inferred shape is roughly AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H: remote over the app, low complexity, but requires a valid low-privilege account. That single PR:L requirement is the main downward pressure.
Affected versionsThe exact vendor range for this CVE was not found in a dedicated Altium advisory page. Secondary references state Altium Enterprise Server is affected on-prem and Altium 365 cloud is not; practical fix level is reported as 8.1.1, so defenders should assume 8.1.0 and earlier are affected until Altium confirms otherwise.
Fixed versionSecondary references point to Altium Enterprise Server 8.1.1 as fixed: Inventive HQ. Altium's official 8.1.1 release notes dated 2026-05-29 mention "significant security and platform stability improvements," which I treat as supporting but not fully explicit attribution: Altium 8.1 release notes.
Exposure populationThis is on-prem Enterprise Server only, not Altium 365 cloud. Altium documentation also shows this is a Windows/IIS-hosted server role with service-specific ports and internal service architecture, which materially narrows exposed population compared with commodity edge software: IT documentation.
Disclosure timelineUser-provided disclosure date is 2026-06-05. VulDB shows reservation on 2026-06-05 and disclosure on 2026-06-06 while citing the MITRE/CVE record URL: VulDB entry.
Reporter / source qualityThe reviewed official Altium pages do not yet show a dedicated advisory page for this exact CVE. The strongest current detail comes from the CVE description reproduced by secondary indexers, plus Altium's official platform docs and release notes. That means the *existence and core impact are clear*, but the exact vendor-affirmed affected range is still thinner than ideal.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (7.8/10)

The decisive factor is that exploitation requires authenticated remote access as a normal user, which means this is a post-initial-access privilege expansion bug rather than a drive-by internet compromise. I still place it in HIGH because the blast radius after that one hurdle is severe: arbitrary file read on the server can expose configuration secrets that convert directly into full Enterprise Server control.

HIGH Core exploit precondition: authenticated low-privilege user is required
MEDIUM Patched version mapping to 8.1.1
MEDIUM End-state escalation from file read to administrator takeover in typical deployments

Why this verdict

  • Post-authenticated remote only: this is not pre-auth and not wormable. Requiring any valid workspace user sharply reduces reachable population compared with edge-facing unauthenticated RCE.
  • On-prem only: Altium 365 cloud is not affected, which cuts exposure down to self-hosted Enterprise Server estates rather than the full platform install base.
  • Impact is still near-worst-case: once reached, arbitrary file read against a server that stores privileged config and secrets can collapse into admin authentication and full server control.
  • No exploitation signal: no KEV listing, no public campaign reporting, and a very low EPSS value all push against a CRITICAL rating.
  • Detection coverage is weak: authenticated business-logic path traversal often slips past unauthenticated scanners and perimeter controls, so if an attacker already has a foothold, this may be quiet.

Why not higher?

I am not calling this CRITICAL because every successful path starts with a prior compromise or legitimate user presence. That prerequisite implies the attacker is already inside your trust boundary, and modern enterprise controls such as SSO, VPNs, IP allowlists, and account lifecycle management remove a large share of theoretical exposure. No active exploitation evidence also matters here.

Why not lower?

I am not dropping this to MEDIUM because the payload is not a low-consequence file read. On a typical Enterprise Server host, reading master configuration and secret-bearing files can hand over administrator-equivalent control of the platform, its data, and potentially adjacent integration trust. The blast radius is too large for backlog treatment.

05 · Compensating Control

What to do — in priority order.

  1. Constrain reachability — Put Enterprise Server behind VPN, private access, or strict source-IP allowlists if it is reachable from broad user networks. This directly attacks the biggest real-world amplifier for authenticated bugs: too many people can hit the login surface. For a HIGH verdict, deploy within 30 days.
  2. Reduce who has any account at all — Purge dormant workspace users, contractor accounts, shared accounts, and unnecessary service identities from Enterprise Server and upstream IdP groups. This vulnerability starts at PR:L, so every account you remove reduces the attacker population that can trigger it. For a HIGH verdict, complete the access cleanup within 30 days.
  3. Watch the config crown jewels — Add EDR or file access monitoring for reads of LocalVault.ini, adjacent secret files, and unusual archive/download activity from the Collaboration Service context. You are looking for low-privileged app sessions followed by sensitive local file access and then privileged logins. Stand this up within 30 days.
  4. Segment the server — Restrict Enterprise Server outbound and lateral connectivity to only what it actually needs, especially database, PLM, and identity integration paths. This does not stop the traversal itself, but it limits what an attacker can do after harvesting server-side secrets. Apply within 30 days.
  5. Rotate secrets stored on-host after upgrade — If you suspect the server may already have been read, rotate privileged credentials, OAuth secrets, certificates, and service account material stored or referenced by the server. This is particularly important because the value of the bug is not the file read alone, but the reusability of what is in those files. Execute rotation as part of the post-fix hardening cycle, within 30 days for exposed instances.
What doesn't work
  • MFA on administrator accounts is not enough by itself, because the path to compromise starts from any valid low-privilege user and may harvest server-side secrets rather than attack the admin login directly.
  • Unauthenticated perimeter scanning will miss a lot of real exposure here, because the vulnerable path sits behind normal application authentication and feature workflows.
  • A generic WAF rule for ../ is not a reliable fix, because the dangerous value may be stored first and abused later in a different download flow; business-logic reuse beats simplistic pattern blocking.
06 · Verification

Crowdsourced verification payload.

Run this on the target Windows Enterprise Server host in an elevated PowerShell session, or a standard session if you already have read access to the install directory and uninstall registry. Invoke it as powershell -ExecutionPolicy Bypass -File .\check-altium-cve-2026-11423.ps1. It checks common Altium install and registry locations to determine whether the installed Enterprise Server version is before 8.1.1.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
# check-altium-cve-2026-11423.ps1\n# Purpose: Determine likely exposure to CVE-2026-11423 on a Windows Altium Enterprise Server host\n# Logic: Versions earlier than 8.1.1 are treated as VULNERABLE; 8.1.1 or later as PATCHED\n# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN\n\n[CmdletBinding()]\nparam()\n\nfunction Write-Result {\n    param(\n        [string]$State,\n        [string]$Reason,\n        [int]$Code\n    )\n    Write-Output "$State - $Reason"\n    exit $Code\n}\n\nfunction Parse-Version {\n    param([string]$Text)\n    if ([string]::IsNullOrWhiteSpace($Text)) { return $null }\n    $m = [regex]::Match($Text, '(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?')\n    if (-not $m.Success) { return $null }\n    try {\n        $maj = [int]$m.Groups[1].Value\n        $min = [int]$m.Groups[2].Value\n        $bld = [int]$m.Groups[3].Value\n        $rev = if ($m.Groups[4].Success) { [int]$m.Groups[4].Value } else { 0 }\n        return [version]::new($maj, $min, $bld, $rev)\n    } catch {\n        return $null\n    }\n}\n\n$target = [version]::new(8,1,1,0)\n$candidates = New-Object System.Collections.Generic.List[object]\n\n# 1) Uninstall registry keys\n$regPaths = @(\n    'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*',\n    'HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*'\n)\nforeach ($rp in $regPaths) {\n    try {\n        Get-ItemProperty -Path $rp -ErrorAction SilentlyContinue | ForEach-Object {\n            $name = $_.DisplayName\n            $ver  = $_.DisplayVersion\n            if ($name -match 'Altium.*(Enterprise Server|On-Prem Enterprise Server|Altium365)') {\n                $pv = Parse-Version $ver\n                if ($pv) {\n                    $candidates.Add([pscustomobject]@{ Source='Registry'; Path=$_.PSPath; Version=$pv; Raw=$ver; Name=$name })\n                }\n            }\n        }\n    } catch {}\n}\n\n# 2) LocalVault.ini under common install roots\n$iniPaths = @(\n    'C:\\Program Files (x86)\\Altium\\Altium365\\LocalVault.ini',\n    'C:\\Program Files\\Altium\\Altium365\\LocalVault.ini'\n)\nforeach ($ini in $iniPaths) {\n    if (Test-Path -LiteralPath $ini) {\n        try {\n            $content = Get-Content -LiteralPath $ini -ErrorAction Stop\n            foreach ($line in $content) {\n                if ($line -match '(?i)(Version|Build|ServerVersion)\\s*=\\s*(.+)$') {\n                    $pv = Parse-Version $Matches[2]\n                    if ($pv) {\n                        $candidates.Add([pscustomobject]@{ Source='LocalVault.ini'; Path=$ini; Version=$pv; Raw=$Matches[2]; Name='LocalVault.ini' })\n                    }\n                }\n            }\n        } catch {}\n    }\n}\n\n# 3) File version from likely binaries\n$filePaths = @(\n    'C:\\Program Files (x86)\\Altium\\Altium365\\Altium.Server.exe',\n    'C:\\Program Files (x86)\\Altium\\Altium365\\Bin\\Altium.Server.exe',\n    'C:\\Program Files (x86)\\Altium\\Altium365\\Web\\bin\\*',\n    'C:\\Program Files\\Altium\\Altium365\\Altium.Server.exe'\n)\nforeach ($fp in $filePaths) {\n    try {\n        Get-Item -Path $fp -ErrorAction SilentlyContinue | ForEach-Object {\n            if (-not $_.PSIsContainer -and $_.VersionInfo -and $_.VersionInfo.FileVersion) {\n                $pv = Parse-Version $_.VersionInfo.FileVersion\n                if ($pv) {\n                    $candidates.Add([pscustomobject]@{ Source='FileVersion'; Path=$_.FullName; Version=$pv; Raw=$_.VersionInfo.FileVersion; Name=$_.Name })\n                }\n            }\n        }\n    } catch {}\n}\n\nif ($candidates.Count -eq 0) {\n    Write-Result -State 'UNKNOWN' -Reason 'Could not determine an Altium Enterprise Server version from registry, LocalVault.ini, or common binary paths.' -Code 2\n}\n\n$best = $candidates | Sort-Object Version -Descending | Select-Object -First 1\n\nif ($best.Version -lt $target) {\n    Write-Result -State 'VULNERABLE' -Reason ("Detected version {0} from {1} ({2}); versions earlier than 8.1.1 should be treated as exposed to CVE-2026-11423." -f $best.Raw, $best.Source, $best.Path) -Code 1\n} elseif ($best.Version -ge $target) {\n    Write-Result -State 'PATCHED' -Reason ("Detected version {0} from {1} ({2}); 8.1.1 or later is treated as fixed for CVE-2026-11423." -f $best.Raw, $best.Source, $best.Path) -Code 0\n} else {\n    Write-Result -State 'UNKNOWN' -Reason 'Version comparison failed unexpectedly.' -Code 2\n}
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, find every on-prem Altium Enterprise Server instance, confirm whether it is 8.1.0 or earlier, and assume any broadly reachable or contractor-accessible instance is priority patching. For this HIGH verdict, the noisgate mitigation SLA is within 30 days: tighten exposure, remove unnecessary user accounts, and add monitoring around LocalVault.ini and post-download privileged activity. The noisgate remediation SLA is within 180 days: move affected servers to the fixed train, which current evidence points to as 8.1.1. If you know a server is internet-reachable or sits behind weak user governance, do not wait for the outer edge of that window.

Sources

  1. Altium Security Advisories
  2. Altium On-Prem Enterprise Server 8.1 Release Notes
  3. Altium On-Prem Enterprise Server IT Documentation
  4. VulDB CVE-2026-11423
  5. Inventive HQ CVE-2026-11423
  6. FIRST EPSS
  7. CISA Known Exploited Vulnerabilities Catalog
  8. Santa Fe Cyber CVE Feed Entry
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.