⚡
Auto-pick the safest exploit
--auto ranks vulnerable modules by stability
(structural escapes > page-cache writes > userspace races
> kernel races) and runs the safest one. Never crashes a
production box looking for root.
$ skeletonkey --auto --i-know
[*] 3 vulnerable; safest is 'pwnkit' (rank 100)
[*] launching --exploit pwnkit...
# id
uid=0(root) gid=0(root)
🛡
151 detection rules
auditd · sigma · yara · falco. One command emits the corpus for
your SIEM. Each rule grounded in the module's own syscalls.
auditd30/31
sigma31/31
yara28/31
falco30/31
★
CISA KEV prioritized
12 of 34 CVEs in the corpus are in CISA's Known Exploited
Vulnerabilities catalog — actively exploited in the wild.
Refreshed on demand via tools/refresh-cve-metadata.py.
🧬
OPSEC notes per exploit
Each module ships a runtime-footprint paragraph: files, dmesg,
syscall observables, network, persistence. The inverse of the
detection rules — what an attacker would leave behind on
your host.
🎯
One host fingerprint, every module
core/host.c probes kernel / arch / distro / userns /
apparmor / selinux / lockdown / sudo version / polkit version
once at startup. Every detect() reads the
same cached snapshot, so verdicts stay coherent across the
corpus.
struct skeletonkey_host {
struct kernel_version kernel;
char arch[32], distro_id[64];
bool unprivileged_userns_allowed;
bool apparmor_restrict_userns;
bool kpti_enabled, selinux_enforcing;
char meltdown_mitigation[64];
char sudo_version[64], polkit_version[64];
...
};
📡
JSON for pipelines
--scan --json emits a stable schema (see
JSON_SCHEMA.md)
with triage metadata, opsec notes, and rule coverage embedded.
Ready for Splunk / Elastic / Sentinel ingest.
🔒
No SaaS. No telemetry.
One static binary. No phone-home, no analytics, no cloud
accounts. Reads /proc + /sys, runs the
probe, exits. JSON or plain text — your pipeline owns the data.
✓
22 modules empirically verified
tools/verify-vm/ spins up known-vulnerable
kernels (stock distro + mainline from kernel.ubuntu.com), runs
--explain --active per module, and records the
verdict. 28 of 34 CVEs confirmed against
real Linux across Ubuntu 18.04 / 20.04 / 22.04 + Debian 11 / 12
+ mainline 5.4.0-26 / 5.15.5 / 6.1.10 / 6.19.7. Records baked into the binary;
--list shows ✓ per module.