eEBF (extended Berkeley Packet Filter) linux’ta kernel de bir değişiklik yapmak veya sistem derinlemesine izlemek için çekirdek modulleri (LKM) yazmamız gerekirdi. Ancak bu yöntem oldukça risklidir. Yani sistem üzerinde çalıştığından kernel panic’e yol açabilir.
eBPF, çekirdek içinde çalışan güvenli, izole bir VM’dir. application kodunu değiştirmeden veya çekirdek modulü yüklemeden, çekirdek üzerindeki olayları (system calls, ağ paketleri, dosya işlemleri) gerçek zamanlı olarak izlemenize ve müdahale etmenize olanak sağlar.
Buradaki BPF aslında sadece paket filtresi anlamına geliyodu ama bunu genişleterek paket filterelemeden çok daha fazlasını yaptığından bu kısaltma artık anlam ifade etmediğinden başına extended ekleyerek eBPF halini aldı.
Ben de eBPF üzerine düşük seviyede bir uyarı toolu oluşturdum aynı zamanda size tool hakkında da bilgiler vereceğim.
Security
Klasik güvenli araçları genelde User Space seviyesinde çalışır. Bir saldırgan sistemde yetki yükselttiğinde bu araçları kolayca atlatabilir veya logları silebilir. eEBF ise doğrudan Kernel seviyesinde oluğu için saldırganın görüş alanının dışındadır.
eBPF burada neyin nasıl çalıştığını ne olup bittiğini direkt görür ve ptrace gibi araçlarla izleme yaparken sistem yavaşlar fakat eBPF JIT (Just-In-Time) derleyicisi sayesinde yerel hızda çalışır.
Runtime Security
-> Zero-Day tespiti için syscall paternini fark ederek anomali tespiti yapabilir
-> Konteyner Kaçışları için host sızmaya çalışan birini kernel seviyesindeki dosya erişim yetkilerini izleyerek anında müdahale edebilir.
-> Rootkit için çekirdeğe gizlenmeye çalışan yazılımları, kernel sembollerini izleyerek yakalar.
Hook Noktaları ve Program Tipleri
eBPF’in gücü çekirdeğin hemen hemen her yerine hook atabilmesidir. eBPF event odaklı olduğundan hooklar bizim için birer kapı görevi görür geçen olaylara göre sistem çağrıları, fonksiyonlar, çekirdek izleme noktaları, ağ olayları ve diğer olaylar bildirilir.
-> kprobes/uprobes = çekirdek veya kullanıcı fonksiyonları başladığında veya bittiğinde tetiklenir.
-> Tracepoint = Çekirdek içindeki statik izleme noktalarıdır; performans analizi için ideal
-> LSM (Linux Security Modules) Hooks = eBPF artık bir güvenlik modülü olarak çalışabilir. Yani bir işlemi sadece izlemekle kalmaz, politika dışı bir işlemi (yetkisiz dosya erişimini anında engelleyebilir)


Yukarıdaki koddan da anlaşılacağı üzerine sistem üzerinde herhangi bir proses gerçekleşirse sys_enter_execve izleme noktasında onu bir hook bekler ctx->args[0] path yolunu alır ve bpf_probe_read_user_st fonksiyonu da bunu belleğe kaydeder bpf_ringbuf da bizim toolumuza aktarır.
Geliştirme Araç Zincirleri
eBPF’yi iki parça düşünün: Clang/LLVM ile C’den bayt kodu ve kullanıcı alanında yükleme/yönetim. Araçlar bu ikisini farklı şekillerde sunar.
BCC = eBPF’yi Python içine gömülü C ile yazar, çalışırken derler; profilleme ve hazır araçlar için uygundur.
bpftrace = Tek satır veya küçük betiklerle izleme; arkada LLVM, tipik olarak BCC/stack ile konuşur; libbpf yazmadan hızlı gözlem.
libbpf = Derlenmiş eBPF nesnelerini yüklemek ve map/program yaşam döngüsünü yönetmek için C/C++ tarafında standart soyutlama; CO-RE/BTF yaklaşımının yaygın tabanı.
eBPF Go kütüphanesi (cilium/ebpf) = libbpf ile aynı rol, Go için: yükleme, link, map, ringbuf. Bayt kodu yine C + Clang ile üretilir; bpf2go bunu derlemede Go’ya bağlar.
Bizim tool (findo) = doğrudan eBPF C (tracepoint, ringbuf, CO-RE), kullanıcı alanında Go + cilium/ebpf + bpf2go — özet zincir: C → LLVM → bayt kodu → Go ile çalıştırma
Tools
Cilium / Tetragon = Özellikle Kubernetes ortamlarında ağ güvenliği ve çalışma zamanı (runtime) güvenliği sağlar. Tetragon, eBPF kullanarak zararlı işlemleri daha gerçekleşmeden durdurabilir.
Falco = Bulut tabanlı ortamlarda eBPF kullanarak “çalışma zamanı güvenliği” sağlayan en popüler araçlardan biridir.
Aqua Tracee = Sistem olaylarını eBPF ile görselleştiren ve şüpheli davranışları raporlayan bir araçtır.
Findo = eBPF ile execve, openat ve setuid olaylarını toplayıp basit güvenlik kurallarıyla şüpheli davranışı tespit ve görüntülenmesini sağlar. Ana hatlarıyla çalışma zamanı uyarıcıdır, yukarıdaki diğer toollar gibi engelleme yapmaz.
Sonuç
Eskiden güvenlik, sistemin üzerine giydirilen bir zırh gibiydi. eBPF ile birlikte güvenlik artık sistemin sinir sistemine yerleşmiş durumda. Eğer modern bir altyapı yönetiyorsanız, eBPF sadece bir seçenek değil, görünmez saldırılara karşı en güçlü savunma hattınızdır.
Kaynakça
https://github.com/maniakh/ebpf-tool (Kendi toolum)



