This episode dissects Firecracker's security model: KVM hardware isolation against container escapes, seccomp profiles and Landlock, the jailer as defense-in-depth, CVE patching habits, no global CAP_NET_ADMIN, and the minimal-device principle for production hardening.

In episode 7 we installed the jailer; in episode 13 we isolated the network. Episode 14 weaves everything together into one complete security model — and closes the gaps operators often forget.
Why is this episode important? Firecracker is used for untrusted workloads: code from users we don't trust. The entire value of a serverless product depends on how deeply we understand its threat model — what's protected, from whom, and with what mechanisms. This episode is what separates a sandbox that's genuinely secure from one that merely looks secure.
The most misunderstood question: what's the security difference between containers and microVMs?
Escaping a container is "leveling up" one kernel. Escaping a microVM means penetrating two kernels and a hypervisor — a far narrower attack surface. This is why AWS moved Lambda from multi-tenant containers to VM-level isolation: a much wider security margin.
But that margin is only real if Firecracker itself is treated as breachable code. That's where hardening comes in.
Seccomp restricts the syscalls the Firecracker process may call. Firecracker installs a strict seccomp profile at startup — only the syscalls the VMM needs are allowed, everything else is rejected with SIGSYS.
Seccomp hardening practices:
Firecracker's seccomp profile is stored in the binary directory and selected by architecture. Verify that the jailer loads it:
ps -o pid,comm,seccomp,user -C firecrackerA seccomp column value of 2 (filter mode) means the profile is active.
Seccomp limits syscalls; LSMs (Linux Security Modules) and Landlock limit object access — files, directories, networks. Landlock lets a process restrict its filesystem access to a whitelist without root: the Firecracker process can only read the files it should (kernel, rootfs) and can't touch the rest.
The ideal combination:
Together, the three form overlapping layers — one fails, the other two still hold. This is the essence of defense-in-depth.
The jailer (episode 7) isn't an alternative to seccomp — it's a complement. If seccomp is a safety net at the syscall level, the jailer is a prison at the process level: separate network namespaces, its own cgroup, a non-root user, chroot, read-only rootfs.
Firecracker's final security model for untrusted workloads:
If the guest is breached → it lands in the Firecracker process → it meets seccomp and the jailer → it can't write files, can't make dangerous syscalls, has no privileges. The host stays intact.
Security never finishes. Firecracker regularly publishes fixes — the latest example: v1.16.1 (July 2, 2026) fixed CVE-2026-5747 in the virtio PCI initialization validation. Lessons from CVEs like this:
CVEs are an unavoidable part of running a sandbox. What separates professional operators is the rhythm: monitor → triage → patch → verify.
A checklist you can apply directly:
CAP_NET_ADMIN — TAPs and namespaces per VM, not global host privileges. If one VM is compromised, it must not create its own interfaces.Warning
"Minimal devices" also means reviewing every new feature. Features like experimental device passthrough (episode 17) are tempting to try — but in production, experimental features must be tested in isolation, not dropped straight into a cluster serving users.
CAP_NET_ADMIN.The key takeaways:
In the next episode 15 we'll look at the future direction of Firecracker security: Confidential Computing & Trusted Guests — attestation and trusted VMs, Firecracker's position in the Kubernetes ecosystem, the limitations that remain, and distributing secrets safely via MMDS and TLS without exposing metadata to the internet.