
تدقيق فقط eBPF EDR لنواة Linux 5.15+ LTS: 14 خطافًا في النواة، 15 إجراءً (13 تقنية MITRE)، تتبّع سلالة العمليات، تصدير إلى SIEM، جاهز لـ K8s/Docker.
للكشف والتدقيق فقط. مستشعر غير تنفيذي. لا يُرجع أي برنامج BPF القيمة
-EPERM؛ ولا يتم حظر أي استدعاء نظام. هذا الوكيل مستوى مراقبة وقت التشغيل، وليس مستوى منع. راجعdocs/SECURITY.mdوTHREAT_MODEL.md.
وكيل EDR لنظام Linux خفيف للغاية، للتدقيق فقط، مبني باستخدام eBPF (C) مع خادم Go عالي الكفاءة. يستهدف نواة Linux 5.15 LTS وما فوق، ويتميز بـ مسار ساخن بدون تخصيص ذاكرة، وبصمة ذاكرة أقل من 30 ميجابايت، وإثراء عميق لسياق الحاويات وK8s.
CRITICAL فورًا.cgroup_id باسم Pod وNamespace وServiceAccount دون تضخيم تنسيق البيانات في النواة البالغ 208 بايت.0.40% من وحدة المعالجة المركزية في وضع الخمول و0 من إسقاطات ringbuf تحت اختبار إجهاد بـ 25,000 عملية fork.الحالة: اكتملت المرحلة 2.7. 13 تقنية من MITRE ATT&CK عبر 16 إجراءً. تم التحقق من البداية إلى النهاية على النواة 6.12.111 (82 نجاح / 0 فشل).
| # | الإجراء | الخطورة | 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 متصلان لكنهما مُعطَّلان افتراضيًا من جانب النواة عبر
disabled_actions في config.toml.
تُغذّي نقاط الالتقاط في النواة (14) مرشّح comm/cgroup، ثم بحثًا تجزئيًا O(1) في canary_paths، ثم بحثًا في action_enabled. تُدفع الأحداث إلى ringbuf بحجم 1 MiB يحمل سجلات بحجم 208 بايت. تقرأ مساحة المستخدم إلى مخزن مؤقت مُجمَّع ثابت، وتطبّق دلو رموز لكل إجراء، وتُثري بسلسلة العمليات ومسار cgroup، وبيانات Pod الوصفية من K8s من مخابئ LRU محدودة، وتوجّه عبر 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 و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_ADMINmake kernel # kernel/bpf_program.o
make userspace # userspace/ebpf_controller
make emulation # emulation/adversary
sudo -E make verify
يشغّل فحص البيئة، والبناء، والتحقق من تخطيط بنية C/Go، والتشغيل التجريبي لمدقق BPF، والاختبار السريع وقت التشغيل، ومحاكاة الخصم، والأداء، ومصفوفة الإعدادات، وإعادة التحميل عبر SIGHUP، واستهلاك CPU في الخمول، وإثراء النسب، وحدود التخزين المؤقت، والخطافات الجديدة، ومصفوفة التنسيقات، وتسليم webhook.
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.
TOML في /etc/ebpf-edr/config.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"؛
هذا البناء للتدقيق فقط.
{
"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 سياقًا خاصًا بكل إجراء.
سطر الحالة الصحية كل 60 ثانية: