The proposed -AppID deny construction cannot currently be treated as a publicly documented, supported complete-mediation boundary for reused SEC_IMAGE sections; obtain a written App Control product-group determination before relying on it as a security contract.
What Microsoft documents
New-CIPolicyRule -AppID creates per-app enforcement rules controlling whether specified plug-ins, add-ins, or modules can run from a specified application. Combining -AppID with -Deny is explicitly documented for blocking a module in one application while permitting it elsewhere.^1^ The cmdlet exposes -AppID only in its DriverFilePath parameter set and describes it in those same per-app terms.^2^
Per-app rules are available on Windows 11, and App Control for Business is supported on Windows Pro, so Windows 11 Pro 24H2 is within the documented platform and edition scope.^3^
However, the available documentation does not define:
- How the application named by
-AppIDis identified at runtime. - Whether that identity is the creator, requesting process, destination process, initial process image, or another loader context.
- The exact Code Integrity enforcement point.
- Whether authorization is repeated whenever an executable image view is inserted into a destination process.
- Whether an existing, cached, named, reopened, inherited, or duplicated
SEC_IMAGEsection is reauthorized for that destination. - Whether process creation covers the initial executable and all pre-entry dependency mappings under the same per-app rule semantics.
- Any Windows 11 24H2-specific guarantee closing those routes.
Consequently, the documentation supports the ordinary per-app module-control scenario, but not the stronger conclusion that it forms a complete executable-image confinement boundary across every section-object route. This is an absence of a public guarantee—not evidence that the implementation necessarily omits the check.
Why the section APIs do not settle it
ZwMapViewOfSection explicitly maps a section into the address space identified by ProcessHandle, permits multiple views in multiple processes, and supports future child-process sharing through ViewShare. For SEC_IMAGE, the requested Win32Protect does not determine the image protections.^4^
DuplicateHandle makes the duplicate refer to the same underlying object as the original.^5^ Neither API contract states that App Control performs—or does not perform—a destination-process AppID evaluation when the executable view is mapped. Therefore, these API descriptions cannot establish the required mediation guarantee.
Policy composition does not close the gap
Your composition assumptions are otherwise aligned with documented policy behavior:
- An explicit deny takes precedence over an explicit allow.^6^
- With multiple base policies, an application must pass every base policy.
- A supplemental policy expands its base policy, so base-plus-supplemental authorization is a union.^7^
Those rules explain file-rule outcomes once an evaluation occurs. They do not document whether each reused image-section mapping causes the destination-scoped evaluation your boundary requires.
Also, AppID per-app rules are not AppId Tagging policies. AppId Tagging adds metadata to qualifying process tokens and explicitly does not control whether applications run.^8^
Required escalation
Open a Microsoft Unified/Premier support case for App Control for Business on Windows 11 Pro 24H2 and request a product-group supportability determination. A concise case question is:
Does App Control
New-CIPolicyRule -AppID -Denyauthorize an executable image against the destination process’s application identity on every executable image-view insertion, including an existing or cachedSEC_IMAGEsection reached through reopening, naming, inheritance, section-handle duplication or transfer, andViewShare? Does the same contract cover the initial process image and dependencies mapped before user-mode entry? Identify any excluded route, build dependency, or servicing limitation.
Audit-mode experiments and Code Integrity logs can characterize a particular build, but they cannot establish the servicing guarantee requested. App Control provides audit mode for policy-impact testing, and enforcement begins when that option is removed.^9^ Without an affirmative written determination covering these cases, this design should be classified as unsupported for the stated complete-mediation requirement, rather than as a demonstrated bypass.
References
- Use an App Control for Business policy to control specific plug-ins, add-ins, and modules
- New-CIPolicyRule
- App Control for Business and AppLocker feature availability
- ZwMapViewOfSection function (wdm.h)
- DuplicateHandle function (handleapi.h)
- App Control Admin Tips & Known Issues
- Use multiple App Control for Business Policies
- App Control Application ID (AppId) Tagging guide
- Understand App Control for Business policy rules and file rules