mazewall — Behavioral Sandboxing for JVM Applications
Per-thread syscall sandboxing using Linux Seccomp-BPF and Landlock LSM, from inside the JVM.
mazewall lets you wrap any Java/Kotlin ExecutorService with a kernel-enforced behavioral contract. The contract restricts exactly which syscalls and filesystem paths that thread pool can access — enforced by the Linux kernel, not application code.
While the examples are JVM-specific, the underlying concepts (Seccomp-BPF, Landlock, SBoB) apply to all backend runtimes and are relevant to anyone working on cloud-native security.
Read the Article Series
-
Prologue: The History of Linux Trust Issues (And Why You Should Develop Them Too)
How OS boundaries evolved from 2005 to 2021, why thread isolation failed in C++, and how managed runtimes change the rules. -
Part 1: Do You Really Know What Your App Is Doing at Runtime?
The threat model, SBoB concept, and why container-level profiles aren’t enough. -
Part 2: Let Your Code Build Its Own Sandbox
Dynamic profiling: how to observe a workload and auto-generate its minimal policy. -
Part 3: Thread-Scoped Containment Mechanics
FFM native bindings, errno safety races, Loom virtual thread carrier poisoning, GC safepoint whitelists. -
Part 4: Exploit Scenarios & Kernel Blocking
Log4Shell, fileless malware, JIT executable memory, andio_uringevasions — tested against mazewall. -
Part 5: Ahead-of-Time SBoB with GraalVM
How AOT compilation changes the security picture and removes JIT runtime noise. -
Part 6: Beyond the Thread — Isolates, WebAssembly, and Tooling
Heap-level isolation via GraalVM Isolates, instruction-level isolation via WebAssembly, and the developer tooling roadmap.
Repository
- Source & Quick Start: github.com/Pilleo/mazewall
-
Design Docs: Containment Design Security Considerations Architectural Map Kernel Primitives Roadmap Documentation Standards