v0.15.29
InnerWarden 0.15.29
Fixed
- execve events never carried the parent PID in-kernel, leaving the fileless-systemd false-positive gate (0.15.28) inert in production. The 0.15.28 post-deploy re-audit found
fileless:systemdstill firing on Azure. Root cause: the eBPF execve handler hardcodedevent.ppid = 0, so every execveppidcame from a userspace/proc/<pid>/statusfallback. That works for long-lived processes (it is whyconnectevents have a parent) but misses short-lived ones, notably systemd's sealed-executorfexecveof/proc/self/fd/Nwhose/procentry is gone before the ring reader can read it (the audit measuredppid=0on 4995/5000 execve events). Because the 0.15.28 fileless-systemd parent-lineage gate needs the parent, it almost never engaged in prod. The fix readstask_struct->real_parent->tgidin-kernel at execve, mirroring the Execution Gate'sBPRM_OFFSETSpattern: a newTASK_OFFSETSmap (real_parent+tgidbyte offsets) is populated by the userspace loader from kernel BTF (member_offset), and the handler does two boundedbpf_probe_read_kernelhops. If BTF is unavailable the offsets stay 0, the handler returns 0, and the/procfallback applies unchanged (it never reads a guessed offset). Validated live on a 6.x x86_64 kernel: the verifier accepts the program, the offsets resolve from BTF, and acomm=systemdfexecveof/proc/self/fd/Nnow reportsppid=1, so the gate resolves/proc/1/exeto systemd and suppresses the false positive. aarch64 offsets are BTF-resolved identically.
Install / upgrade (Linux, toolchain-free, signed binaries)
curl -fsSL https://innerwarden.com/install | sudo bash
# already installed: sudo innerwarden upgrade --yesEvery binary below is signed (Ed25519 + Sigstore bundle). Docs: https://github.com/InnerWarden/innerwarden/wiki · Site: https://www.innerwarden.com
What's Changed
- fix(sensor): capture execve parent PID in-kernel so the fileless-systemd gate works by @maiconburn in #1123
- release: 0.15.29 (eBPF execve parent-PID capture) by @maiconburn in #1124
Full Changelog: v0.15.28...v0.15.29