eBPF tracing: oktatói anyagok és példák

 ( trey | 2019. január 2., szerda - 12:50 )

eBPF should stand for something meaningful, like Virtual Kernel Instruction Set (VKIS), but due to its origins it is extended Berkeley Packet Filter. It can be used for many things: network performance, firewalls, security, tracing, and device drivers. Some of these have plenty of free documentation online, like for tracing, and others not yet.

Részletek itt.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ez az eBPF tényleg egy elég érdekes dolog, tracingen kívül is sok dologra használható. Pl. könnyen lehet vele user-kernel adatmegosztást csinálni ráadásul biztonságosan, mert az eBPF verifier nem engedi hogy túlindexeljünk egy tömböt vagy olyan memóriához nyúljunk, ami kívül esik a kontextuson amiben dolgkozunk.
4.14-es kernelbe bekerült egy konténerek közti kommunikáción gyorsító megoldás, a sockmap ami használható kernel spaceben socketek közötti adat redirectionre. Ennek a vezérlő interfésze eBPF-ben lett megírva, pontosabban nagyon könnyen, normál eBPF map-ekkel módosíthatjuk, melyik socketek között szeretnénk kernel space adat átirányítást végezni. Ez némileg gyorsítja az átvitelt.
Sajnos ebben a részben van egy bug, ami miatt nyár óta nem tudok hosszabb blogposztot írni a shadowsocks verziómról (https://github.com/SPYFF/shadowsocks-libev-nocrypto/tree/ebpf), ami kihasználja eBPF-el a sockmap-et, de remélem előbb utóbb fixálják (sajnos nekem egyelőre túl nagy feladat, az eredeti fejlesztő pedig nagyon elfoglalt, háromszor, utóljára 3 hete is megígérte hogy ASAP fixálja).

>> Ez az eBPF tényleg egy elég érdekes dolog, tracingen kívül is sok dologra használható.

Igen, pl. kernel exploitok egyszerűbb kivitelezésére.

Blackhatek kedvelik ezt.