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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Liz Rice
June 24, 2022
Technology
0
1.5k
eBPF for Security Observability
As seen at DevOpsDays Amsterdam and KCD Berlin
Liz Rice
June 24, 2022
Tweet
Share
More Decks by Liz Rice
See All by Liz Rice
Building a cloud native business on open source
lizrice
0
240
KCD Lima: eBee in Peru!
lizrice
0
200
Unleashing the kernel with eBPF
lizrice
0
340
eBPF's Abilities and Limitations: The Truth
lizrice
0
490
Simplifying multi-cloud and multi-cluster Kubernetes deployments with Cilium
lizrice
0
260
When is a Secure Connection not encrypted? And other stories
lizrice
1
120
Keeping it simple: Cilium Mesh - networking for multi-cloud Kubernetes and beyond
lizrice
1
760
How Many Proxies Do You Need
lizrice
1
180
Beginner's Guide to eBPF Programming for Networking
lizrice
1
2.6k
Other Decks in Technology
See All in Technology
GitHub Copilot CLI で Azure Portal to Bicep
tsubakimoto_s
0
180
データマネジメント戦略Night - 4社のリアルを語る会
ktatsuya
1
210
中央集権型を脱却した話 分散型をやめて、連邦型にたどり着くまで
sansantech
PRO
1
330
「通るまでRe-run」から卒業!落ちないテストを書く勘所
asumikam
2
470
Physical AI on AWS リファレンスアーキテクチャ / Physical AI on AWS Reference Architecture
aws_shota
1
110
俺の/私の最強アーキテクチャ決定戦開催 ― チームで新しいアーキテクチャに適合していくために / 20260322 Naoki Takahashi
shift_evolve
PRO
1
430
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
370
「コントロールの三分法」で考える「コト」への向き合い方 / phperkaigi2026
blue_goheimochi
0
140
20年以上続く PHP 大規模プロダクトを Kubernetes へ ── クラウド基盤刷新プロジェクトの4年間
oogfranz
PRO
0
170
ThetaOS - A Mythical Machine comes Alive
aslander
0
140
スピンアウト講座05_実践活用事例
overflowinc
0
1.1k
スピンアウト講座01_GitHub管理
overflowinc
0
1.2k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The agentic SEO stack - context over prompts
schlessera
0
710
Visualization
eitanlees
150
17k
Facilitating Awesome Meetings
lara
57
6.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
180
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
310
Balancing Empowerment & Direction
lara
5
960
Writing Fast Ruby
sferik
630
63k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Optimizing for Happiness
mojombo
378
71k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
990
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