Like a janitor badge that opens the freight elevator once you're already inside the building
CVE-2026-27910 is a local elevation-of-privilege flaw in Windows Installer. Microsoft/NVD describe it as improper handling of insufficient permissions or privileges that lets an authorized local attacker elevate privileges on the same host. The affected set spans a broad slice of supported Windows releases published on April 14, 2026, including Windows Server 2012/2012 R2/2016/2019/2022/2025 and Windows 10 1607/1809/21H2/22H2 plus Windows 11 23H2/24H2/25H2/26H1; NVD lists affected builds as versions before the April 2026 cumulative-update build thresholds.
Microsoft's 7.8/HIGH CVSS is technically fair in a vacuum because successful exploitation can end in full local compromise, but it overstates operational urgency for most enterprises. The decisive friction is attacker position: this bug is not remotely reachable, not internet-exposed, and already assumes code execution or an authenticated local foothold on the target. With no KEV listing, very low EPSS (0.00052), and no public exploit trail surfaced in the reviewed sources, this behaves more like a post-initial-access privilege escalator than a front-door incident generator.
4 steps from start to impact.
Get a low-privileged foothold on the Windows host
PsExec/SMB service creation after some earlier compromise stage. This CVE does nothing for an unauthenticated remote actor by itself.- Existing code execution on the target host
- A valid low-privileged local or domain user context
- Target is one of the affected Windows builds
- This is already post-initial-access; the attacker has paid the hardest cost up front
- MFA, email controls, EDR, and remote admin hardening should have chances to stop the campaign before this step
- No internet-facing attack surface is created by the flaw itself
Confirm patch level and exploitability
ver, wmic, PowerShell, or reconnaissance tools such as Seatbelt or SharpUp. They need the host to be on a pre-April-2026 build where the Windows Installer bug is still present. This is straightforward technically, but only after local access is already in hand.- Ability to read local OS version/build data
- Windows Installer service present in a vulnerable build line
- Well-managed estates with fast cumulative-update deployment will collapse the reachable population quickly
- VDI, kiosks, and shared-user systems are more exposed than locked-down admin workstations
- Authenticated vulnerability scanners and EDR inventory already measure this step well
Abuse the Windows Installer privilege boundary
msiexec/the Windows Installer service. Microsoft has not published enough detail in the accessible advisory material to pin down the exact primitive, so exploitation details remain sparse. The likely outcome is execution or file/action handling in a higher-integrity context than intended.- Working exploit or reliable exploit implementation
- A target host where the relevant Installer code path is reachable
- No patch closing the April 2026 issue
- No reviewed primary source exposed a public exploit recipe
- App control such as WDAC/AppLocker may block unsigned payload stages even if the bug exists
- Exploit reliability for local EoP bugs can vary by build, policy, and hardening
msiexec.exe child processes, suspicious installer repair activity, temporary MSI artifacts, and privilege jumps correlated to user sessions. EDR should have process-tree visibility here, but signature-grade detections may lag if exploit details stay private.Operate as SYSTEM and expand blast radius
Mimikatz, Nanodump, or living-off-the-land service/task abuse. The impact is severe per host, but the bug still does not magically turn into domain-wide compromise without the usual follow-on steps.- Successful local privilege escalation
- Valuable credentials or lateral movement opportunities on the host
- Blast radius begins as single-host local compromise
- Credential Guard, LSASS protection, EDR tamper protection, and tiering can limit follow-on payoff
- Servers with no interactive low-priv user population are materially less likely to be used in this chain
The supporting signals.
| In-the-wild status | No confirmed in-the-wild exploitation surfaced in the reviewed sources, and the CVE is not in CISA KEV. |
|---|---|
| Proof-of-concept availability | I did not find a public GitHub PoC in the reviewed results; cvefeed.io also showed no listed GitHub exploit entries at crawl time. Treat that as absence of evidence, not proof of absence. |
| EPSS | User-supplied EPSS is 0.00052 (~0.052% predicted exploitation probability in 30 days). I could not independently confirm the exact percentile from accessible primary data. |
| KEV status | Not KEV-listed as of the reviewed CISA catalog page. No KEV date added applies. |
| CVSS vector meaning | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H means local, low complexity, low privileges required, no user interaction, with high C/I/A impact once the attacker is already on the box. |
| Affected versions | NVD/CVE data shows affected Windows families including Windows Server 2012/2012 R2/2016/2019/2022/2025, Windows 10 1607/1809/21H2/22H2, and Windows 11 23H2/24H2/25H2/26H1, with vulnerable ranges ending at the April 14, 2026 patch builds. |
| Fixed versions | Representative fixed build floors from NVD/Microsoft April 2026 updates include 14393.9060, 17763.8644, 19044.7184, 19045.7184, 22631.6936, 26100.8246, 26200.8246, and 28000.1836. Windows uses cumulative-update backports here rather than a separate product-side hotfix. |
| Scanning and exposure reality | This is not Shodan/Censys/GreyNoise bait because it is not remotely reachable by design. Exposure measurement is an asset inventory and patch-state problem, not an internet census problem. |
| Disclosure date | Published by Microsoft/NVD on 2026-04-14; NVD enrichment was updated on 2026-04-23. |
| Researcher / reporting | The accessible public records attribute the CVE to Microsoft Corporation as CNA. I could not verify a public researcher acknowledgement from the accessible advisory pages. |
noisgate verdict.
The biggest downshift is attacker position: this vulnerability requires an existing local foothold with low privileges, which means the adversary is already past your real front-door controls. It stays important because Windows Installer is widespread and the per-host impact is high, but the reachable population and entry conditions are too narrow for a practitioner-grade HIGH in most enterprises.
Why this verdict
- Start from 7.8/HIGH because a successful exploit can plausibly end in full local compromise with SYSTEM-level consequences on the host.
- Downshift for attacker position:
AV:L+PR:Lmeans the attacker already has code execution or an authenticated user session. In enterprise terms, that implies *post-initial-access*, not a new initial access path. - Downshift for exposure population: there is no direct internet-facing surface to scan, weaponize at scale, or opportunistically hit. Shodan/Censys-style population pressure is effectively absent.
- Downshift for threat intel: no KEV, no confirmed in-the-wild exploitation, and very low EPSS (0.00052) materially reduce urgency versus truly active Windows zero-days.
- Hold above LOW because Windows Installer is ubiquitous and shared-user endpoints, jump boxes, RDS/VDI, and developer workstations give local EoP bugs real chaining value once an attacker lands.
Why not higher?
There is no unauthenticated remote path, no network reachability, and no evidence in the reviewed sources that attackers are actively burning this bug at scale. A HIGH or CRITICAL call would overreact to the impact while ignoring the much more important reality that the attacker must already be on the host.
Why not lower?
This still buys meaningful privilege expansion on one of the most common enterprise platforms in the world. If you have lots of shared-user Windows endpoints or any environment where low-priv execution is common after phishing or lateral movement, local EoP bugs remain useful chain components and should not be shrugged off as mere paperwork.
What to do — in priority order.
- Prioritize shared-user Windows tiers — Move VDI, RDS, jump hosts, kiosks, help-desk workstations, and developer endpoints to the front of your normal patch queue because those are the systems where low-privileged user execution is common and this class of LPE has the most value. For a MEDIUM verdict there is no noisgate mitigation SLA, so use this as risk-based triage while you work through the standard remediation window.
- Tighten application control around installer execution — Use WDAC/AppLocker to restrict who can launch untrusted
msiexecflows, MSI packages, and common post-exploitation payload locations. This does not remove the vulnerability, but it raises friction on the likely exploit delivery stage while you remediate; for MEDIUM, there is no mitigation SLA. - Hunt for suspicious
msiexec.exebehavior — Create EDR analytics formsiexec.exespawning unusual child processes, touching temp paths at odd cadence, or correlating with privilege jumps and service/task creation. That won't stop exploitation deterministically, but it improves your odds of catching the chain early; again, no mitigation SLA applies at MEDIUM. - Reduce low-priv logon where it is unnecessary — On servers especially, remove casual interactive access for standard users and tighten who can log on locally or via RDP. The cleanest risk reduction here is simply shrinking the number of places where an attacker can satisfy the
AV:L/PR:Lprerequisite before you complete remediation.
- A WAF doesn't help because there is no web-facing exploit path here.
- Perimeter firewall rules don't solve a local privilege escalation bug that activates after code is already running on the endpoint.
- MFA alone doesn't materially reduce exploitation once the attacker already has a local session or malware execution on the host.
- Internet scanning is the wrong control surface; this is an internal patch-state and endpoint-hardening problem.
Crowdsourced verification payload.
Run this on the target Windows host or through your endpoint management tooling as a standard user; admin rights are not required for the registry reads used here. Example: powershell -ExecutionPolicy Bypass -File .\check-cve-2026-27910.ps1. The script compares the host's Windows build/UBR against the April 14, 2026 fixed build floors and prints VULNERABLE, PATCHED, or UNKNOWN.
# check-cve-2026-27910.ps1
# Purpose: Determine likely exposure to CVE-2026-27910 using Windows build/UBR thresholds.
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN, 3=ERROR
$ErrorActionPreference = 'Stop'
try {
$cvPath = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
$cv = Get-ItemProperty -Path $cvPath
$productName = [string]$cv.ProductName
$displayVersion = [string]$cv.DisplayVersion
$currentBuild = [int]$cv.CurrentBuildNumber
$ubr = [int]$cv.UBR
$versionString = "$currentBuild.$ubr"
# Fixed build floors gathered from NVD/MSRC/CVE records for the April 14, 2026 patch train.
# Some server entries beyond the NVD snippet are inferred from same-day Microsoft cumulative update lines.
$fixed = @{
9200 = 26026 # Windows Server 2012 (inferred from same patch train / sibling CVE records)
9600 = 23132 # Windows Server 2012 R2 (inferred from same patch train / sibling CVE records)
14393 = 9060 # Windows 10 1607 / Windows Server 2016
17763 = 8644 # Windows 10 1809 / Windows Server 2019
19044 = 7184 # Windows 10 21H2
19045 = 7184 # Windows 10 22H2
20348 = 5020 # Windows Server 2022 (inferred from same patch train / sibling CVE records)
22631 = 6936 # Windows 11 23H2
25398 = 2274 # Windows Server, version 23H2 (inferred from same patch train / sibling CVE records)
26100 = 8246 # Windows 11 24H2
26200 = 8246 # Windows 11 25H2 / Windows Server 2025
28000 = 1836 # Windows 11 26H1
}
if (-not $fixed.ContainsKey($currentBuild)) {
Write-Output ("UNKNOWN - Unrecognized or unsupported Windows build: Product='{0}' DisplayVersion='{1}' Build='{2}'" -f $productName, $displayVersion, $versionString)
exit 2
}
$requiredUbr = [int]$fixed[$currentBuild]
if ($ubr -lt $requiredUbr) {
Write-Output ("VULNERABLE - Product='{0}' DisplayVersion='{1}' Build='{2}' is below fixed floor '{3}.{4}' for CVE-2026-27910" -f $productName, $displayVersion, $versionString, $currentBuild, $requiredUbr)
exit 1
}
else {
Write-Output ("PATCHED - Product='{0}' DisplayVersion='{1}' Build='{2}' meets or exceeds fixed floor '{3}.{4}' for CVE-2026-27910" -f $productName, $displayVersion, $versionString, $currentBuild, $requiredUbr)
exit 0
}
}
catch {
Write-Output ("UNKNOWN - Error determining status: {0}" -f $_.Exception.Message)
exit 3
}
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.