Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
eBPF for Security Observability
Search
Liz Rice
June 24, 2022
Technology
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
eBPF for Security Observability
As seen at DevOpsDays Amsterdam and KCD Berlin
Liz Rice
June 24, 2022
More Decks by Liz Rice
See All by Liz Rice
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
180
Building a cloud native business on open source
lizrice
0
270
KCD Lima: eBee in Peru!
lizrice
0
220
Unleashing the kernel with eBPF
lizrice
0
430
eBPF's Abilities and Limitations: The Truth
lizrice
0
540
Simplifying multi-cloud and multi-cluster Kubernetes deployments with Cilium
lizrice
0
310
When is a Secure Connection not encrypted? And other stories
lizrice
1
150
Keeping it simple: Cilium Mesh - networking for multi-cloud Kubernetes and beyond
lizrice
1
800
How Many Proxies Do You Need
lizrice
1
220
Other Decks in Technology
See All in Technology
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
100
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
280
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
150
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
200
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
120
サイバー捜査員研修(前半)
nomizone
1
2k
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
300
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
800
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.4k
FDEの心得
noriakioji
5
6k
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
3
23k
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
2
990
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
250
Un-Boring Meetings
codingconduct
0
390
Side Projects
sachag
455
43k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
470
Color Theory Basics | Prateek | Gurzu
gurzu
0
420
Between Models and Reality
mayunak
4
390
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
240
Balancing Empowerment & Direction
lara
6
1.2k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Are puppies a ranking factor?
jonoalderson
1
3.8k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
370
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Transcript
eBPF for Security Observability Liz Rice | @lizrice Chief Open
Source Officer, Isovalent
@lizrice
@lizrice What is ? extended Berkeley Packet Filter
@lizrice What is ? Makes the kernel programmable
@lizrice userspace kernel app event system calls eBPF program Run
custom code in the kernel
@lizrice SEC("kprobe/sys_execve") int hello(void *ctx) { bpf_trace_printk("Hello World!"); return 0;
} $ sudo ./hello bash-20241 [004] d... 84210.752785: 0: Hello World! bash-20242 [004] d... 84216.321993: 0: Hello World! bash-20243 [004] d... 84225.858880: 0: Hello World! Info about process that called execve syscall + userspace code to load eBPF program eBPF Hello World
Dynamic changes to kernel behaviour
Dynamic tracing tools
@lizrice userspace kernel Tracing tool event eBPF program Use eBPF
to collect event metrics eBPF Map metrics load Gather & show metrics
@lizrice eBPF tracing tools from iovisor/bcc
@lizrice eBPF tracing - opensnoop ~/bcc/libbpf-tools$ sudo ./opensnoop PID COMM
FD ERR PATH 5040 node 21 0 /proc/5132/cmdline 5040 node 21 0 /proc/6460/cmdline 5040 node 21 0 /proc/6460/cmdline 6461 opensnoop 18 0 /etc/localtime 5040 node 21 0 /proc/5132/cmdline 5040 node 21 0 /proc/6460/cmdline 5060 node 23 0 /home/liz/.vscode-server/data/User/workspaceStorage/48b53 5040 node 21 0 /proc/5132/cmdline 5040 node 21 0 /proc/6460/cmdline 5040 node 21 0 /proc/5132/cmdline 5040 node 21 0 /proc/6460/cmdline …
eBPF and Kubernetes
@lizrice userspace kernel pod container pod container container One kernel
per host
@lizrice userspace kernel networking access files create containers One kernel
per host pod container pod container container
@lizrice userspace kernel app app pods networking access files create
containers Kernel aware of everything on the host
@lizrice userspace app kernel app pods networking access files create
containers eBPF programs can be aware of everything
@lizrice $ kubectl gadget trace open NODE NAMESPACE POD CONTAINER
PID COMM FD ERR PATH kind-2-control-plane default xwing spaceship 361876 vi 3 0 /etc/passwd eBPF tracing on Kubernetes - Inspektor Gadget Kubernetes info
@lizrice eBPF observability tools -
@lizrice eBPF observability tools - Cilium Hubble
eBPF observability
eBPF security observability
@lizrice Security observability
@lizrice Security observability
@lizrice What activity do we care about for security? eBPF
programs
@lizrice Syscall checks within the kernel
@lizrice TOCTTOU vulnerabilities with syscalls For more details • Leo
Di Donato & KP Singh at CN eBPF Day 2021 • Rex Guo & Junyuan Zeng at DEFCON 29 on Phantom attacks Attacker changes params after inspection
@lizrice Need to make the check at the right place
@lizrice Linux Security Modules • Stable interface • Safe places
to make checks
@lizrice BPF LSM • Stable interface • Safe places to
make checks + eBPF benefits • Dynamic • Protect pre-existing processes
@lizrice $ sudo ./chmoddemo & [1] 7631 $ sudo cat
/sys/kernel/debug/tracing/trace_pipe chmod-7776 [001] d... 38197.342160: bpf_trace_printk: lsm path_chmod liz BPF LSM hook has kernel info populated SEC("lsm/path_chmod") int BPF_PROG(path_chmod, const struct path *path, umode_t mode) { bpf_printk("lsm path_chmod %s\n", path->dentry->d_iname); return 0; } Filename known to kernel
@lizrice BPF LSM • Stable interface • Safe places to
make checks + eBPF benefits • Dynamic • Protect pre-existing processes But needs kernel 5.7+ & Kubernetes context?
How stable is the Linux kernel?
@lizrice Cilium Tetragon • Safe places to make checks +
eBPF benefits • Dynamic • Protect pre-existing processes Uses kernel knowledge to hook into sufficiently stable functions Adds Kubernetes context
@lizrice Photo credit: Bibafu A Tetragonisca angustula bee guarding the
nest-entrance
@lizrice apiVersion: cilium.io/v1alpha1 kind: TracingPolicy metadata: name: "etc-files" spec: kprobes:
- call: "fd_install" … matchArgs: - index: 1 operator: "Prefix" values: - "/etc/" … Cilium Tetragon tracing policy + Policy “follows” file descriptor through read, write & close events
@lizrice $ kubectl logs ds/tetragon -c export-stdout -f | tetragon
observe 🚀 process default/xwing /usr/bin/vi /etc/passwd 📬 open default/xwing /usr/bin/vi /etc/passwd 📪 close default/xwing /usr/bin/vi 📬 open default/xwing /usr/bin/vi /etc/passwd 📝 write default/xwing /usr/bin/vi /etc/passwd 1275 bytes 📪 close default/xwing /usr/bin/vi 💥 exit default/xwing /usr/bin/vi /etc/passwd 0 Cilium Tetragon observe Policy events Kubernetes info
@lizrice Combined network and runtime visibility
eBPF preventative runtime security
@lizrice Network policy → eBPF programs drop packets
@lizrice Preventative actions from user space
@lizrice Preventative actions from kernel
@lizrice $ kubectl logs ds/tetragon -c export-stdout -f | tetragon
observe 🚀 process default/xwing /usr/bin/vi /etc/passwd 📬 open default/xwing /usr/bin/vi /etc/passwd 📪 close default/xwing /usr/bin/vi 📬 open default/xwing /usr/bin/vi /etc/passwd 📝 write default/xwing /usr/bin/vi /etc/passwd 1269 bytes 💥 exit default/xwing /usr/bin/vi /etc/passwd SIGKILL Cilium Tetragon observe Killed before write
eBPF security observability • Dynamic instrumentation - zero app modifications
• Contextual information, Kubernetes identity-aware • Option for runtime enforcement from the kernel
Thank you! cilium/tetragon @ciliumproject cilium.io | ebpf.io @lizrice