Boundaries
A compromised application
A compromised application
Gets: its own artifact, its own state directory, its declared secrets,
its granted capabilities, its own database, its own storage namespaces.Cannot: read another app’s anything. It runs as UID 1000 inside a
Firecracker microVM with its own /30 TAP network, and MMDS is blocked before
tenant code starts. Guest-originated traffic reaches only the host’s
control-plane port; all other forwarding is dropped.Cannot: mint a token. The guest holds only the platform’s Ed25519 public
verification key.Cannot: discover another namespace or database, even by name. The
workload token resolves to exactly one binding.
A compromised build
A compromised build
Gets: a disposable VM with a firewall hole to the package registry.Cannot: reach the broker, the data service, a private network, or any
neighbour. MMDS is firewalled off before build code executes. The VM is
destroyed after every build.Cannot: attack the host kernel’s filesystem parser — output leaves as one
tar file read with
debugfs, never by mounting an untrusted ext4 image.Cannot: smuggle a credential into the artifact — output is re-scanned and
credential-shaped files are stripped.A forged request to the gateway
A forged request to the gateway
Cannot: assert an identity. Client-supplied
Tiny-* platform headers are
stripped at the gateway before proxying, and identity comes from a
short-lived token the gateway mints and the guest verifies.Cannot: replay a token across apps. Every token carries an audience, so
one minted for one boundary is rejected at another.A stolen workload token
A stolen workload token
Gets: that deployment’s database and namespaces, for as long as it is
live.Cannot: outlive the route. A superseded deployment’s token stops working
the moment traffic moves — so a rollback also revokes.Cannot: name another environment’s resources. The token is the binding
selector.
Access to one organization's ciphertext
Access to one organization's ciphertext
Cannot: decrypt it elsewhere. Secrets are sealed with AES-256-GCM under a
key derived per context, so a ciphertext cannot be moved between
organizations.Cannot: enumerate across tenants. Every organization-scoped read takes an
organizationId and filters in the query; a cross-organization ID returns
404, not 403.Control of a DNS answer
Control of a DNS answer
Cannot: widen an egress allowlist. The host resolves each declared
hostname once, at deploy time, and pins the addresses into that VM’s
forward chain.Cannot: point egress at the host’s own network. A hostname resolving into
a private range is refused outright — that would be lateral movement, not
egress.
Defense in depth in the guest
Defaults that have to be turned off deliberately
Two independent acts are required for the first two. That is the pattern: nothing
that widens exposure happens because one person made one choice.