RESEARCH ARCHIVE / JUDOZI
Judozi
Overview
Judozi is a modular offensive security framework written in pure Go. It compiles to a single static binary with zero external dependencies, designed for environments where installing packages or toolchains is not an option. The framework uses a plugin-based module system where each module implements a common interface and is auto-discovered at startup.
The framework currently ships with three modules: kernel (automated privilege escalation), persistence (post-exploitation persistence mechanisms), and recon (system enumeration and reconnaissance). After successful privilege escalation, Judozi drops into an interactive shell session with full module access.
Architecture
Every module implements the Module interface: Name(), Description(), Category(), and Run(args []string). The registry auto-discovers registered modules and dispatches execution based on CLI arguments or interactive selection. After a successful kernel exploit, the framework automatically transitions into an interactive shell with access to all modules.
Module Interface
// Every Judozi module implements this interface type Module interface { Name() string Description() string Category() string Run(args []string) error }
Kernel Module: Execution Pipeline
The kernel module is the primary attack module. It automates the entire privilege escalation workflow from kernel version detection through exploit selection, compilation or binary download, and execution.
Exploit Database
The kernel module ships with a JSON-based exploit database covering 23 CVEs across kernel versions 2.6.22 through 6.7.1. Each entry includes version range constraints, architecture support, source URLs, precompiled binary URLs, compilation commands, and execution instructions.
| CVE | Name | Kernel Range | Arch | Category |
|---|---|---|---|---|
CVE-2024-1086 | nf_tables UAF | 3.15.0 to 6.7.1 | amd64 | nftables, uaf |
CVE-2023-3269 | StackRot | 6.1.0 to 6.4.0 | amd64 | maple-tree, uaf |
CVE-2023-35829 | rkvdec UAF | 5.11.0 to 6.3.1 | amd64 | driver, uaf |
CVE-2023-32233 | Netfilter nf_tables UAF | 3.13.0 to 6.3.1 | amd64 | nftables, uaf |
CVE-2023-2640 | GameOver(lay) | 5.15.0 to 6.2.0 | amd64, arm64 | overlayfs, ubuntu |
CVE-2023-0179 | nftables OOB Write | 5.5.0 to 6.2.0 | amd64 | nftables, oob |
CVE-2022-34918 | Netfilter Heap Overflow | 5.8.0 to 5.18.8 | amd64 | nftables, heap |
CVE-2022-2588 | DirtyCred | 3.6.0 to 5.19.1 | amd64 | route4, uaf |
CVE-2022-1015 | nf_tables OOB Access | 5.12.0 to 5.17.0 | amd64 | nftables, oob |
CVE-2022-0847 | DirtyPipe | 5.8.0 to 5.16.10 | amd64, arm64 | pipe, write-anywhere |
CVE-2022-0185 | fsconfig Heap Overflow | 5.1.0 to 5.16.1 | amd64 | fsconfig, heap |
CVE-2021-33909 | Sequoia | 3.16.0 to 5.13.3 | amd64 | filesystem, seq_file |
CVE-2021-31440 | eBPF Bounds Tracking | 5.7.0 to 5.11.0 | amd64 | ebpf, verifier |
CVE-2021-22555 | Netfilter xt_compat | 2.6.19 to 5.12.0 | amd64 | netfilter, oob-write |
CVE-2021-3493 | OverlayFS Ubuntu | 3.13.0 to 5.10.99 | amd64, arm64 | overlayfs, ubuntu |
CVE-2020-8835 | eBPF Verifier Bypass | 5.5.0 to 5.6.1 | amd64 | ebpf, verifier |
CVE-2019-13272 | ptrace_link | 4.10.0 to 5.1.17 | amd64, arm64, 386 | ptrace, creds |
CVE-2018-18955 | Nested User Namespace | 4.15.0 to 4.19.1 | amd64 | userns, idmap |
CVE-2017-16995 | eBPF Arbitrary R/W | 4.4.0 to 4.14.7 | amd64 | ebpf, sign-extension |
CVE-2017-7308 | AF_PACKET | 2.6.27 to 4.10.5 | amd64 | af_packet, heap-oob |
CVE-2017-1000112 | UDP UFO | 4.4.0 to 4.12.6 | amd64 | udp, ufo |
CVE-2016-5195 | DirtyCow | 2.6.22 to 4.8.2 | amd64, arm64, 386 | cow, race-condition |
CVE-2016-0728 | Keyring Refcount | 3.8.0 to 4.4.0 | amd64 | keyring, refcount |
Kernel Version Coverage
Real World Testing
Judozi has been tested in production cloud environments, including Azure Container instances running kernel 5.15.0. The binary fallback system was validated in GCC-free environments: the framework detected 10 matching exploits, automatically downloaded precompiled binaries, and executed them without requiring any compiler toolchain on the target.
nextjs@container:/tmp$ uname -r 5.15.0-1102-azure nextjs@container:/tmp$ ./judozi kernel -auto [*] Kernel: 5.15.0 [+] Architecture: amd64 [+] Found 10 potential exploit(s) [!] GCC not available, using binary fallback mode [*] Downloading CVE-2024-1086... [+] Binary downloaded successfully (166KB) [*] Executing exploit... [*] creating user namespace (CLONE_NEWUSER)... [*] creating network namespace (CLONE_NEWNET)...
Project Structure
judozi/ ├── cmd/judozi/ │ └── main.go # CLI entry, module selection, shell dispatch ├── modules/ │ ├── kernel/ # Privilege escalation module │ │ ├── kernel.go # Module implementation │ │ └── pkg/ │ │ ├── exploit/ # Download, compile, execute logic │ │ ├── kernel/ # Version detection and parsing │ │ ├── output/ # Colored terminal output │ │ └── vulndb/ # Exploit database (exploits.json) │ ├── persistence/ # Post-exploitation persistence │ │ ├── persistence.go │ │ └── techniques/ │ └── recon/ # System reconnaissance │ ├── recon.go │ └── techniques/ ├── pkg/ │ ├── module/ # Module interface and registry │ ├── shell/ # Interactive shell session │ └── ui/ # Terminal UI framework ├── go.mod └── judozi # 5.3MB static binary