
Linux 5.15+ LTS के लिए केवल eBPF EDR का ऑडिट करें: 14 कर्नेल हुक, 15 क्रियाएँ (13 MITRE तकनीकें), प्रक्रिया वंशावली, SIEM निर्यात, K8s/Docker तैयार।
केवल डिटेक्शन और ऑडिट। गैर-प्रवर्तनकारी सेंसर। कोई भी BPF प्रोग्राम
-EPERMनहीं लौटाता; कोई भी सिसकॉल ब्लॉक नहीं होता। यह एजेंट एक रनटाइम अवलोकन प्लेन है, निवारण प्लेन नहीं। देखेंdocs/SECURITY.mdऔरTHREAT_MODEL.md।
eBPF (C) और एक उच्च-दक्षता Go डेमॉन के साथ निर्मित एक अति हल्का, केवल-ऑडिट Linux EDR एजेंट। यह Linux कर्नेल 5.15 LTS और उससे ऊपर को लक्षित करता है, जिसमें शून्य-आवंटन हॉट पाथ, 30MB से कम मेमोरी फुटप्रिंट, और गहन कंटेनर/K8s कॉन्टेक्स्ट संवर्धन शामिल है।
CRITICAL अलर्ट ट्रिगर करता है।cgroup_id को Pod नाम, Namespace, और ServiceAccount से मैप करने के लिए Kubelet API को असिंक्रोनस रूप से पोल करता है।0.40% निष्क्रिय CPU और 0 ringbuf ड्रॉप्स।स्थिति: चरण 2.7 पूर्ण। 16 क्रियाओं में 13 MITRE ATT&CK तकनीकें। कर्नेल 6.12.111 पर एंड-टू-एंड सत्यापित (82 PASS / 0 FAIL)।
| # | क्रिया | गंभीरता | MITRE | हुक |
|---|---|---|---|---|
| 1 | Container_Namespace_Unshare | HIGH | T1611 | kprobe/__x64_sys_unshare |
| 2 | Container_Pivot_Root_Escape | CRITICAL | T1611 | kprobe/__x64_sys_pivot_root |
| 3 | Sensitive_File_Access | HIGH | T1003.008 | tracepoint/sys_enter_openat + open |
| 4 | Process_Execution | INFO/MEDIUM | T1059.004 | tracepoint/sys_enter_execve |
| 5 | Network_Connection | INFO/HIGH | T1071 | tracepoint/sys_enter_connect |
| 6 | Process_Injection | HIGH | T1055.008 | tracepoint/sys_enter_ptrace |
| 7 | Log_Tampering | HIGH | T1562.001 | tracepoint/sys_enter_unlinkat |
| 8 | Ebpf_Tampering | HIGH | T1562.001 | tracepoint/sys_enter_bpf |
| 9 | Perf_Event_Open | MEDIUM | T1562.001 | tracepoint/sys_enter_perf_event_open |
| 10 | Suspicious_Mount | HIGH | T1611 | tracepoint/sys_enter_mount |
| 11 | Namespace_Switch | HIGH | T1611 | tracepoint/sys_enter_setns |
| 12 | Chroot_Escape | HIGH | T1611 | tracepoint/sys_enter_chroot |
| 13 | Executable_Memory | MEDIUM | T1620 | tracepoint/sys_enter_mprotect |
| 14 | Core_Pattern_Modification | CRITICAL | T1611 | tracepoint/sys_enter_openat + open |
| 15 | Cgroup_Release_Agent | CRITICAL | T1611 | tracepoint/sys_enter_openat + open |
| 16 | Canary_Triggered | CRITICAL | T1552.001 | tracepoint/sys_enter_openat + open |
क्रियाएँ 9 और 13 संलग्न हैं लेकिन डिफ़ॉल्ट रूप से कर्नेल पक्ष पर
config.toml में disabled_actions के माध्यम से दबाई गई हैं।
कर्नेल हुक (14) एक comm/cgroup फ़िल्टर, एक canary_paths O(1) हैश लुकअप, फिर एक action_enabled लुकअप को फ़ीड करते हैं। इवेंट्स 208 बाइट रिकॉर्ड ले जाने वाले 1 MiB ringbuf में पुश किए जाते हैं। यूज़रस्पेस एक निश्चित पूल्ड बफ़र में पढ़ता है, प्रति क्रिया टोकन बकेट लागू करता है, प्रोसेस वंशावली और cgroup पाथ, और सीमित LRU कैश से K8s Pod मेटाडेटा के साथ संवर्धित करता है, और किसी भी गंतव्य तक Encoder + Sink के माध्यम से रूट करता है।
पूर्ण विवरण: docs/ARCHITECTURE.md।
ebpf edr एक फ़ॉर्मेट + ट्रांसपोर्ट लेयर के माध्यम से किसी भी SIEM को अलर्ट निर्यात करता है।
[output]
format = "ecs" # json | ecs | ocsf | cef | leef
target = "webhook" # file | stdout | syslog | webhook
[output.webhook]
url = "https://splunk.internal:8088/services/collector/event"
auth_header = "Splunk ${SPLUNK_HEC_TOKEN}"
splunk_hec = true
समर्थित ट्रांसपोर्ट: file, stdout, syslog (UDP/TCP/TLS), HTTPS webhook। समर्थित फ़ॉर्मेट: native JSON, ECS 8.11, OCSF 1.3.0, CEF, LEEF 2.0।
Splunk, Elastic, Sentinel, QRadar, और generic syslog के लिए रेसिपी:
docs/SIEM_INTEGRATION.md।
[output] अनुपस्थित होने पर, व्यवहार v1.x के समान बाइट-दर-बाइट होता है।
CONFIG_DEBUG_INFO_BTF=y (/sys/kernel/btf/vmlinux)docs/KERNEL_COMPATIBILITY.md देखें।CAP_BPF CAP_PERFMON CAP_SYS_ADMIN के साथ रूटmake kernel # kernel/bpf_program.o
make userspace # userspace/ebpf_controller
make emulation # emulation/adversary
sudo -E make verify
पर्यावरण जाँच, बिल्ड, C/Go struct layout assertion, BPF verifier dry-run, runtime smoke, adversary emulation, performance, config matrix, SIGHUP reload, idle CPU, lineage enrichment, cache bounds, नए hooks, format matrix, और webhook delivery चलाता है।
sudo ./install.sh --dry-run
sudo ./install.sh
sudo ./install.sh --uninstall
इंस्टॉल करता है /usr/local/sbin/ebpf-edr,
/usr/local/lib/ebpf-edr/bpf_program.o,
/etc/ebpf-edr/config.toml (मौजूदा सुरक्षित; नया डिफ़ॉल्ट .new पर),
/etc/systemd/system/ebpf-edr.service,
/etc/logrotate.d/ebpf-edr।
/etc/ebpf-edr/config.toml पर TOML। प्राथमिकता: CLI > env (EDR_*) > फ़ाइल > डिफ़ॉल्ट।
mode = "audit"
disabled_actions = [
"Perf_Event_Open",
"Executable_Memory",
]
[log]
path = "/var/log/ebpf_edr.json"
max_bytes = 52428800
max_backups = 5
level = "info"
[filter]
comm_allowlist = []
cgroup_allowlist = []
canary_paths = ["/var/run/secrets/kubernetes.io/serviceaccount/token"]
[k8s]
enrichment = true
[rates]
events_per_sec = 200
burst = 400
[container]
cache_max_entries = 5000
[context]
lineage_max_depth = 16
lineage_cache_size = 20000
cgroup_cache_size = 5000
रीलोड: sudo systemctl reload ebpf-edr। mode = "enforce" अस्वीकार किया जाता है;
यह बिल्ड केवल audit है।
{
"timestamp": "2026-10-15T23:52:41Z",
"pid": 1370, "ppid": 1369, "uid": 0,
"start_time_ns": 180763002635,
"command": "unix_chkpwd",
"action": "Sensitive_File_Access",
"target": "/etc/shadow",
"severity": "HIGH",
"mitre_id": "T1003.008",
"mitre_technique": "OS Credential Dumping: /etc/shadow",
"cgroup_id": 3874,
"cgroup_path": "/user.slice/user-0.slice/session-3.scope",
"runtime": "host",
"lineage_summary": "systemd > sshd > bash > sudo > unix_chkpwd",
"lineage": [
{"pid": 1370, "ppid": 1369, "comm": "unix_chkpwd",
"exe": "/usr/sbin/unix_chkpwd", "start_time_ns": 180763002635},
{"pid": 1369, "ppid": 1368, "comm": "sudo",
"exe": "/usr/bin/sudo", "start_time_ns": 180762998100}
]
}
aux_u16, aux_u32, aux_u64 फ़ील्ड्स क्रिया-विशिष्ट संदर्भ रखते हैं।
हर 60s पर हेल्थ लाइन: