D9010 VmApp GitHub

Promises and limits

Security

A security claim is only worth something if it comes with its limits. Here are both.

What the platform promises

When you run an app in the launcher:

Only the files you gave it

The app's engine runs in its own VM. Folders you didn't grant do not exist inside it. Your choice of read, read and write, or write-only is enforced by the hypervisor, outside the app's reach.

No internet unless you name the sites

The VM has no network connection at all. The only way out is a proxy run by the launcher, which lets through only the hosts you allowed for that app. It never reaches your own network.

No app code runs on your Mac as you

The app's window runs in a locked-down browser engine with no file access and no internet. The only code on your Mac with your rights is the launcher itself.

What you installed is what you reviewed

Every file in a package is fingerprinted, and checked at install and again when it is shown. An update that asks for more (a new website, a new port) stops and asks you again.

A clean start every time

The system, the runtime and the app's code are read-only. Temporary files vanish when the app stops. A VM cannot outlive the launcher.

You can see and you can revoke

The Inspector shows every message and every connection. Taking back a permission closes the connections it was using at once.

What it does not protect you from

Stated plainly. The same limits are listed in the full security model.

Who the platform assumes might be an attacker

WhoWants to…What stands in the way
A malicious app engineRead or encrypt your filesThe VM boundary. Only granted folders exist.
A malicious app engineSend your data outNo network device. Only hosts you named. Every connection logged.
A malicious app engineReach your router or other computersRules name hosts, never addresses. The launcher looks the name up itself and refuses any private or local answer.
A malicious app engineAttack other appsOne VM per app. Separate data folders.
A malicious app windowTouch files, network or devicesBrowser sandbox, no Node, strict content policy, blocked popups.
A malicious app windowFake a permission promptReal decisions are native dialogs that name the app. The app cannot draw them.
Someone who tampers with a packageSwap code after you reviewed itPer-file fingerprints checked at install and at use.

How you can check this yourself

Found a problem? Please report it privately. The process is in the security policy. This is a first public build, so careful eyes are welcome.