Policy design5 min read

Managed installer is not a convenience flag. It is a trust channel

Designating one trusts everything it writes, and everything its child processes write. That makes the choice a security decision rather than an operational one.

Managed installer is what makes App Control practical at scale. Without it, a large application can mean rules for every binary, library and component it ships, and the policy becomes something nobody maintains.

It is also the one place in an App Control design where trust can be manufactured rather than granted, and that part gets far less attention than it should.

What you are actually trusting

Designating a managed installer does not trust a program. It trusts an origin.

Windows watches the designated process, and the processes that process launches, and tags the files they write to disk as having come from a managed installer. The policy then permits those files because of where they came from, not because of anything about the files themselves.

Read that again with an adversary in mind. You are trusting everything that process and its children can write.

That is the right model when the process is a governed deployment channel. It is a very different proposition when the process is an application's own updater.

Microsoft's own caveat is stronger than most people realise

This is not an inference. Microsoft states that managed installer is heuristic based and does not provide the same security guarantees as explicit allow and deny rules, and that users with administrator privileges, or malware running as an administrator, may be able to circumvent the intent of a policy where managed installer is allowed.

A feature the vendor describes as heuristic should not be carrying the same weight in your design as a rule that names a signer.

Worth knowing too that the identification half of this runs on AppLocker even though App Control does the enforcing, which is the single most common surprise in a deployment. AppLocker and App Control covers that dependency, and Intune deployed and still blocked covers what it looks like when a piece of it is missing.

The question it quietly changes

Application control asks whether a file is trusted. Managed installer adds a second question underneath it.

Can a trusted installer be persuaded to create a trusted file?

An attacker who can influence a designated process does not have to defeat App Control at all. They do not need a signing certificate, a policy change or administrative access to your management platform. They need the trusted installer to write something on their behalf, and the origin tag does the rest.

That is the risk in one sentence. A badly chosen managed installer is a bridge between untrusted input and trusted execution.

Why updaters are usually the wrong candidate

The reasoning that leads here is entirely understandable. An application will not sit still, its updater is what keeps it current, so make the updater a managed installer and the problem disappears.

The trouble is that application updaters are built for convenience, not as enterprise trust boundaries. Across the ones you will meet, some run in user context. Some accept command line arguments. Some read update content from writable paths. Some launch child processes. Some fetch packages from vendor controlled locations. Some load plug ins, scripts or helper files.

Each of those is a way for something other than the vendor to influence what gets written, and once written, the file carries an origin your policy honours.

A separate argument applies to how many of these you end up with, and it is covered in an application that updates itself. This one is about whether a given candidate belongs at all, and that is a question about the channel rather than the count.

Questions to put to any candidate

Before a process is designated, it is worth answering these honestly.

  • Can a standard user start it, or influence when it runs?
  • Can a standard user influence what it writes, or where?
  • Does it launch child processes?
  • Can it write executables, libraries, scripts or installers?
  • Does it accept paths or arguments from outside?
  • Does it read packages from a location somebody could write to?
  • Does it download content from outside your control?
  • Is there already a deployment path that could carry this instead?

Uncertainty on any of these is an answer. A trust channel you cannot describe precisely is not one you should be designating.

The model that holds up

Keep the trust channel narrow and make it the one you already govern.

Your deployment platform is the managed installer. Microsoft names Intune and Configuration Manager as the intended examples, and the reason is not brand preference. Those are channels where the package source, the approval, the deployment scope and the update lifecycle are all things somebody owns.

Turn off application self update where you can, so releases arrive by the route you chose rather than the route the vendor chose.

Then make that route fast, because the reason self update gets tolerated is a real one. Falling behind on patches is its own risk, and no security team wins the argument by being slower.

That last point is where these two pressures usually collide, and it is the collision worth designing for rather than choosing a side in.

Where PoliEze fits

Speed is what makes the narrow model sustainable. PoliEze Flow exists so releases can be picked up, approved and delivered through the deployment channel you already trust, quickly enough that nobody needs to argue for letting applications update themselves.

The result is the trade most estates assume they cannot have. Software stays current, and managed installer trust stays with one governed channel instead of spreading to every updater that asked.

Sources

Questions about this

What does designating a managed installer actually trust?
More than the installer. Windows watches the designated process and the processes it launches, and tags what they write to disk as having come from a managed installer. So you are not trusting one program, you are trusting everything that program and its children can write.
Is managed installer as strong as an explicit allow rule?
No, and Microsoft says so directly. It is heuristic based and does not carry the same guarantees as explicit allow and deny rules. Microsoft also notes that an administrator, or malware running as one, may be able to work around the intent of a policy where managed installer is permitted.
Why is an application updater a poor candidate?
Because updaters are built for convenience rather than as enterprise trust boundaries. Many run in user context, accept command line arguments, read from writable locations, launch child processes or fetch content from outside your control. Any of those turns the updater into a bridge between untrusted input and trusted execution.
What should be a managed installer then?
Your enterprise deployment platform, and ideally only that. Microsoft names Intune and Configuration Manager as the intended examples, because those are channels where the package source, the approval, the scope and the update lifecycle are all governed.
How do we patch quickly without trusting every updater?
By taking the update through the channel you already trust rather than letting each application update itself. That means turning off self update where you can and packaging releases through the deployment platform instead, which keeps patching fast and the trusted set narrow.

Related reading

Stuck on the thing this article describes?

If you are working through this on a real fleet and it is not going the way the documentation suggests, that is the conversation we are best at. Send us the block events.