enodia-sentinal/enodia_sentinel
Luna 07f5261d59 Add false-positive triage via package-ownership provenance
A noisy IDS gets ignored. Adds explicit FP-handling built on provenance — a
binary owned by the package manager is almost certainly legitimate (the OSSEC
rootcheck / AIDE principle).

- provenance.py: package_owner()/is_package_owned() via pacman/dpkg/rpm, cached;
  framed as confidence-raising, never proof-of-safety
- triage.py: triage_alert() labels each detection likely-FP vs review with a
  reason (package-owned binary, loopback-only listener, allowlisted comm, …);
  reverse_shell/egress/exec rules are ALWAYS review (provenance can't clear a
  network shell); unattributable listeners are reviewed, not cleared
- cli: `enodia-sentinel triage` summarizes captured alerts and suggests
  allowlist entries
- new_listener: listener_allow_comms + optional suppress_package_owned_listeners
  gate (the best single knob for a desktop/seedbox running P2P apps)
- tests: +10 (provenance injected); README + config documented. 65/65 pass

Verified on a live seedbox: 12 detections, 11 auto-cleared as FP (qbittorrent /
nicotine / kdeconnectd / the dashboard itself), 1 correctly held for review.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 22:05:00 -07:00
..
detectors Add false-positive triage via package-ownership provenance 2026-05-31 22:05:00 -07:00
events Add event-driven eBPF execve layer with a Snort-style rule engine 2026-05-31 07:16:53 -07:00
notify Add read-only web dashboard and phone push notifications 2026-05-31 16:18:00 -07:00
static Add read-only web dashboard and phone push notifications 2026-05-31 16:18:00 -07:00
__init__.py Add read-only web dashboard and phone push notifications 2026-05-31 16:18:00 -07:00
alert.py Add event-driven eBPF execve layer with a Snort-style rule engine 2026-05-31 07:16:53 -07:00
cli.py Add false-positive triage via package-ownership provenance 2026-05-31 22:05:00 -07:00
config.py Add false-positive triage via package-ownership provenance 2026-05-31 22:05:00 -07:00
daemon.py Add read-only web dashboard and phone push notifications 2026-05-31 16:18:00 -07:00
netutil.py Relicense under GPL-3.0-or-later 2026-05-31 06:52:34 -07:00
provenance.py Add false-positive triage via package-ownership provenance 2026-05-31 22:05:00 -07:00
snapshot.py Add read-only web dashboard and phone push notifications 2026-05-31 16:18:00 -07:00
system.py Relicense under GPL-3.0-or-later 2026-05-31 06:52:34 -07:00
triage.py Add false-positive triage via package-ownership provenance 2026-05-31 22:05:00 -07:00
web.py Add read-only web dashboard and phone push notifications 2026-05-31 16:18:00 -07:00