Deep DiveComputer Systems
eBPF's Two Faces: Kernel Security Sensor and Rootkit Hiding Place
eBPF has become the foundation of Kubernetes autonomous security through tools like Cilium, Falco, and Traceeโyet the same kernel-level access that enables deep visibility also creates a concealment path for rootkits.
By Sean K.S. Shin
This blog summarizes research trends based on published paper abstracts. Specific numbers or findings may contain inaccuracies. For scholarly rigor, always consult the original papers cited in each post.
Every powerful security mechanism contains within it the potential for abuse. Firewalls can be reconfigured to block defenders. Encryption can shield attackers' communications. Audit logs can be manipulated to erase evidence. The pattern is consistent: the deeper a technology reaches into a system's internals, the more dangerous it becomes when turned against the system it was designed to protect.
Extended Berkeley Packet Filter (eBPF) is the latest and perhaps most consequential example of this duality. Originally designed for efficient packet filtering, eBPF has evolved into a general-purpose framework for running sandboxed programs within the Linux kernelโwithout modifying kernel source code or loading traditional kernel modules. This capability has made eBPF the foundation of modern cloud-native security and observability. It has also made eBPF a compelling concealment mechanism for sophisticated rootkits.
The Research Landscape: eBPF as Security Infrastructure
The ACM SIGOPS community and the eunomia.dev research group have independently documented eBPF's central role in Kubernetes security architecture, where three tools dominate the landscape:
Cilium provides eBPF-based networking and network security for Kubernetes clusters. By attaching eBPF programs to kernel network hooks, Cilium enforces policies at the kernel levelโfaster and more granular than iptables. Cilium inspects traffic based on application-layer identity (Kubernetes labels, service names) rather than ephemeral IP addresses.
Falco uses eBPF to intercept system calls and generate security alerts in real time. When a container executes an unexpected binary or establishes an unusual outbound connection, Falco captures the event at the kernel level. User-space evasion techniques cannot hide from kernel-level sensors.
Tracee provides runtime security and forensics by tracing kernel and user-space events through eBPF. It loads programs dynamically and detects container escapes, privilege escalation, and fileless malware execution.
Together, these tools have established what the research literature describes as "autonomous security"โsystems that detect, classify, and in some cases respond to threats without human intervention, operating at kernel speed rather than human speed.
The same properties that make eBPF effective for securityโkernel-level access, dynamic loading, system call interception, network traffic manipulationโmake it equally effective for concealment.
Traditional rootkits load kernel modules (LKMs) that modify system call tablesโleaving detectable artifacts in lsmod output and memory regions. eBPF programs, by contrast, operate within the kernel's sanctioned execution framework. An eBPF rootkit can:
Intercept and modify system call results โ hiding files, processes, and network connections from user-space tools by filtering what the kernel returns to applications
Manipulate network traffic โ redirecting, dropping, or modifying packets at the kernel level, invisible to user-space packet capture tools
Evade traditional detection โ because eBPF programs run through the kernel's own verified execution path, they may not trigger the same alerts as unauthorized kernel modules
Persist across reboots โ through systemd service files or init scripts that reload the eBPF programs at boot, using the same mechanism that legitimate security tools use for persistenceThe research notes that several proof-of-concept eBPF rootkits have been demonstrated, and the security community has documented techniques for using eBPF's bpf_probe_write_user helper to modify user-space memory from kernel contextโa capability that traditional security models did not anticipate.
Critical Analysis
<
| Claim | Source Evidence | Verdict |
|---|
| eBPF is now core infrastructure for Kubernetes autonomous security | Cilium, Falco, Tracee adoption documented across ACM SIGOPS and industry surveys | โ
Supported โ widespread production deployment |
| eBPF can be exploited as rootkit concealment within kernel space | Proof-of-concept demonstrations documented; architectural analysis confirms feasibility | โ
Supported โ demonstrated capability |
| Verifier improvements are being studied to restrict malicious eBPF use | Active research on enhanced verification, capability restriction, and runtime monitoring | โ
Supported โ ongoing research track |
| Privilege restrictions can mitigate eBPF rootkit risks | CAP_BPF separation and unprivileged eBPF restrictions documented | โ ๏ธ Partial โ reduces but does not eliminate risk for privileged attackers |
The Verifier Paradox
The eBPF verifierโthe kernel component that checks eBPF programs before executionโis designed to prevent crashes, infinite loops, and out-of-bounds memory access. It was not originally designed to distinguish between benign and malicious intent. A program that intercepts system calls and filters results is structurally identical whether it serves a security monitoring purpose or a rootkit concealment purpose.
Recent research explores extending the verifier to enforce security policies beyond safety propertiesโrestricting which eBPF program types can be loaded by which processes, limiting access to sensitive helper functions, and requiring cryptographic attestation of eBPF programs before loading. These approaches treat the verifier as a policy enforcement point rather than purely a safety mechanism.
Privilege as the Defense Boundary
The primary defense against eBPF rootkits is privilege restriction. Loading eBPF programs requires specific Linux capabilities (CAP_BPF, CAP_SYS_ADMIN, or CAP_NET_ADMIN depending on program type). In properly configured systems, only trusted security tools have these capabilities. The attack scenario requires that an adversary first achieves privilege escalationโat which point they have access to many attack vectors, not just eBPF.
However, in container environments where security tools themselves run as privileged containers with eBPF capabilities, compromising the security tool's container grants the attacker exactly the eBPF access needed for rootkit deploymentโusing the security tool's own privileges.
Open Questions
Attestation frameworks: Can eBPF programs be cryptographically signed and verified before loading? Research prototypes exist, but production-grade attestation for dynamically generated eBPF programs remains unsolved.
Runtime behavioral monitoring: If the verifier cannot distinguish malicious from benign programs structurally, can runtime monitoring detect anomalous eBPF behavior? This creates a recursive problemโwho monitors the monitor at kernel level?
Container security architecture: Should security tools requiring eBPF capabilities run inside the container environment they protect, or at a separate trust layer? Privileged security containers create a bootstrapping vulnerability.
Closing Reflection
eBPF's dual nature is not a flaw to be fixed but a fundamental characteristic to be managed. The research trajectoryโverifier enhancements, privilege restrictions, attestation frameworksโrepresents an attempt to preserve defensive benefits while constraining offensive potential. Whether that balance is achievable, or whether eBPF will follow the historical pattern of dual-use technologies where offensive and defensive capabilities co-evolve indefinitely, remains an open question.
๋ฉด์ฑ
์กฐํญ: ์ด ๊ฒ์๋ฌผ์ ์ ๋ณด ์ ๊ณต ๋ชฉ์ ์ ์ฐ๊ตฌ ๋ํฅ ๊ฐ์์ด๋ค. ํ์ ์ฐ๊ตฌ์์ ์ธ์ฉํ๊ธฐ ์ ์ ํน์ ์ฐ๊ตฌ ๊ฒฐ๊ณผ, ํต๊ณ ๋ฐ ์ฃผ์ฅ์ ์๋ณธ ๋
ผ๋ฌธ๊ณผ ๋์กฐํ์ฌ ๊ฒ์ฆํด์ผ ํ๋ค.
eBPF์ ๋ ์ผ๊ตด: ์ปค๋ ๋ณด์ ์ผ์์ด์ ๋ฃจํธํท ์์ ์ฒ
๋ชจ๋ ๊ฐ๋ ฅํ ๋ณด์ ๋ฉ์ปค๋์ฆ์๋ ์
์ฉ๋ ์ ์๋ ์ ์ฌ์ ๊ฐ๋ฅ์ฑ์ด ๋ด์ฌ๋์ด ์๋ค. ๋ฐฉํ๋ฒฝ์ ๋ฐฉ์ด์๋ฅผ ์ฐจ๋จํ๋๋ก ์ฌ์ค์ ๋ ์ ์๋ค. ์ํธํ๋ ๊ณต๊ฒฉ์์ ํต์ ์ ๋ณดํธํ๋ ์๋จ์ด ๋ ์ ์๋ค. ๊ฐ์ฌ ๋ก๊ทธ๋ ์ฆ๊ฑฐ๋ฅผ ์ง์ฐ๊ธฐ ์ํด ์กฐ์๋ ์ ์๋ค. ์ด ํจํด์ ์ผ๊ด์ ์ด๋ค. ๊ธฐ์ ์ด ์์คํ
๋ด๋ถ ๊น์์ด ํ๊ณ ๋ค์๋ก, ๋ณดํธํ๋๋ก ์ค๊ณ๋ ์์คํ
์ ๊ณต๊ฒฉํ๋ ๋ฐ ์ฌ์ฉ๋ ๋ ๋์ฑ ์ํํด์ง๋ค.
Extended Berkeley Packet Filter(eBPF)๋ ์ด๋ฌํ ์ด์ค์ฑ์ ๊ฐ์ฅ ์ต๊ทผ, ๊ทธ๋ฆฌ๊ณ ์๋ง๋ ๊ฐ์ฅ ์ค๋ํ ์ฌ๋ก์ด๋ค. ์๋ ํจ์จ์ ์ธ ํจํท ํํฐ๋ง์ ์ํด ์ค๊ณ๋ eBPF๋ ์ปค๋ ์์ค ์ฝ๋๋ฅผ ์์ ํ๊ฑฐ๋ ์ ํต์ ์ธ ์ปค๋ ๋ชจ๋์ ๋ก๋ํ์ง ์๊ณ ๋ Linux ์ปค๋ ๋ด์์ ์๋๋ฐ์ค ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋ฒ์ฉ ํ๋ ์์ํฌ๋ก ๋ฐ์ ํ๋ค. ์ด ๊ธฐ๋ฅ ๋๋ถ์ eBPF๋ ํ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ณด์ ๋ฐ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ(observability)์ ํ ๋๊ฐ ๋์๋ค. ๋ํ eBPF๋ ์ ๊ตํ ๋ฃจํธํท์ ์ํ ๋งค๋ ฅ์ ์ธ ์ํ ๋ฉ์ปค๋์ฆ์ด ๋๊ธฐ๋ ํ๋ค.
์ฐ๊ตฌ ํํฉ: ๋ณด์ ์ธํ๋ผ๋ก์์ eBPF
ACM SIGOPS ์ปค๋ฎค๋ํฐ์ eunomia.dev ์ฐ๊ตฌ ๊ทธ๋ฃน์ Kubernetes ๋ณด์ ์ํคํ
์ฒ์์ eBPF๊ฐ ํต์ฌ์ ์ธ ์ญํ ์ ๋ด๋นํ๊ณ ์์์ ๋
๋ฆฝ์ ์ผ๋ก ๋ฌธ์ํํ์ผ๋ฉฐ, ์ด ๋ถ์ผ์์๋ ์ธ ๊ฐ์ง ๋๊ตฌ๊ฐ ์ฃผ๋ฅ๋ฅผ ์ด๋ฃจ๊ณ ์๋ค.
Cilium์ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ํ eBPF ๊ธฐ๋ฐ ๋คํธ์ํน ๋ฐ ๋คํธ์ํฌ ๋ณด์์ ์ ๊ณตํ๋ค. eBPF ํ๋ก๊ทธ๋จ์ ์ปค๋ ๋คํธ์ํฌ ํ
(hook)์ ์ฐ๊ฒฐํจ์ผ๋ก์จ Cilium์ iptables๋ณด๋ค ๋น ๋ฅด๊ณ ์ธ๋ฐํ๊ฒ ์ปค๋ ์์ค์์ ์ ์ฑ
์ ์ํํ๋ค. Cilium์ ์ผ์์ ์ธ IP ์ฃผ์๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต ID(Kubernetes ๋ ์ด๋ธ, ์๋น์ค ์ด๋ฆ)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํธ๋ํฝ์ ๊ฒ์ฌํ๋ค.
Falco๋ eBPF๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ
ํธ์ถ์ ๊ฐ๋ก์ฑ๊ณ ์ค์๊ฐ์ผ๋ก ๋ณด์ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํ๋ค. ์ปจํ
์ด๋๊ฐ ์์์น ๋ชปํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ๊ฑฐ๋ ๋น์ ์์ ์ธ ์์๋ฐ์ด๋ ์ฐ๊ฒฐ์ ์๋ํ ๋, Falco๋ ์ปค๋ ์์ค์์ ํด๋น ์ด๋ฒคํธ๋ฅผ ํฌ์ฐฉํ๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ(user-space) ์ฐํ ๊ธฐ๋ฒ์ ์ปค๋ ์์ค ์ผ์๋ฅผ ํผํ ์ ์๋ค.
Tracee๋ eBPF๋ฅผ ํตํด ์ปค๋ ๋ฐ ์ฌ์ฉ์ ๊ณต๊ฐ ์ด๋ฒคํธ๋ฅผ ์ถ์ ํจ์ผ๋ก์จ ๋ฐํ์ ๋ณด์ ๋ฐ ํฌ๋ ์์ ์ ๊ณตํ๋ค. ํ๋ก๊ทธ๋จ์ ๋์ ์ผ๋ก ๋ก๋ํ์ฌ ์ปจํ
์ด๋ ํ์ถ, ๊ถํ ์์น, ํ์ผ๋ฆฌ์ค(fileless) ์
์ฑ์ฝ๋ ์คํ์ ํ์งํ๋ค.
์ด ๋๊ตฌ๋ค์ ํจ๊ป ์ฐ๊ตฌ ๋ฌธํ์์ "์์จ ๋ณด์(autonomous security)"์ด๋ผ๊ณ ์ค๋ช
ํ๋ ์์คํ
์ ๊ตฌ์ถํ๋ค. ์ฆ, ์ธ๊ฐ์ ์๋๊ฐ ์๋ ์ปค๋ ์๋๋ก ์๋ํ๋ฉฐ ์ฌ๋์ ๊ฐ์
์์ด ์ํ์ ํ์ง, ๋ถ๋ฅํ๊ณ ์ผ๋ถ ๊ฒฝ์ฐ์๋ ๋์ํ๋ ์์คํ
์ด๋ค.
๋ค๋ฅธ ์ผ๊ตด: ๋ฃจํธํท ํ๋ซํผ์ผ๋ก์์ eBPF
eBPF๋ฅผ ๋ณด์์ ํจ๊ณผ์ ์ผ๋ก ๋ง๋๋ ๋ฐ๋ก ๊ทธ ํน์ฑ๋คโ์ปค๋ ์์ค ์ ๊ทผ, ๋์ ๋ก๋ฉ, ์์คํ
ํธ์ถ ๊ฐ๋ก์ฑ๊ธฐ, ๋คํธ์ํฌ ํธ๋ํฝ ์กฐ์โ์ ์ํ์๋ ๋๊ฐ์ด ํจ๊ณผ์ ์ผ๋ก ๋ง๋ ๋ค.
์ ํต์ ์ธ ๋ฃจํธํท์ ์์คํ
ํธ์ถ ํ
์ด๋ธ์ ์์ ํ๋ ์ปค๋ ๋ชจ๋(LKM)์ ๋ก๋ํ๋๋ฐ, ์ด๋ lsmod ์ถ๋ ฅ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ์ง ๊ฐ๋ฅํ ํ์ ์ ๋จ๊ธด๋ค. ๋ฐ๋ฉด eBPF ํ๋ก๊ทธ๋จ์ ์ปค๋์ ๊ณต์ธ๋ ์คํ ํ๋ ์์ํฌ ๋ด์์ ์๋ํ๋ค. eBPF ๋ฃจํธํท์ ๋ค์๊ณผ ๊ฐ์ ์ผ์ ํ ์ ์๋ค.
์์คํ
ํธ์ถ ๊ฒฐ๊ณผ ๊ฐ๋ก์ฑ๊ธฐ ๋ฐ ์์ โ ์ปค๋์ด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐํํ๋ ๋ด์ฉ์ ํํฐ๋งํ์ฌ ์ฌ์ฉ์ ๊ณต๊ฐ ๋๊ตฌ๋ก๋ถํฐ ํ์ผ, ํ๋ก์ธ์ค, ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์จ๊ธด๋ค.
๋คํธ์ํฌ ํธ๋ํฝ ์กฐ์ โ ์ปค๋ ์์ค์์ ํจํท์ ๋ฆฌ๋ค์ด๋ ํธ, ๋๋กญ ๋๋ ์์ ํ๋ฉฐ, ์ฌ์ฉ์ ๊ณต๊ฐ ํจํท ์บก์ฒ ๋๊ตฌ์๋ ๋ณด์ด์ง ์๋๋ค.
์ ํต์ ์ธ ํ์ง ์ฐํ โ eBPF ํ๋ก๊ทธ๋จ์ ์ปค๋ ์์ฒด์ ๊ฒ์ฆ๋ ์คํ ๊ฒฝ๋ก๋ฅผ ํตํด ์คํ๋๊ธฐ ๋๋ฌธ์, ๋ฌด๋จ ์ปค๋ ๋ชจ๋๊ณผ ๋์ผํ ๊ฒฝ๊ณ ๋ฅผ ์ ๋ฐํ์ง ์์ ์ ์๋ค.
์ฌ๋ถํ
ํ์๋ ์ง์ โ ๋ถํ
์ eBPF ํ๋ก๊ทธ๋จ์ ๋ค์ ๋ก๋ํ๋ systemd ์๋น์ค ํ์ผ ๋๋ init ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ง์์ฑ์ ์ ์งํ๋ฉฐ, ์ด๋ ํฉ๋ฒ์ ์ธ ๋ณด์ ๋๊ตฌ๊ฐ ์ง์์ฑ์ ์ํด ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฉ์ปค๋์ฆ์ด๋ค.
๋นํ์ ๋ถ์
<
| ์ฃผ์ฅ | ์ถ์ฒ ๊ทผ๊ฑฐ | ํ์ |
|---|
| eBPF๋ ํ์ฌ Kubernetes ์์จ ๋ณด์์ ํต์ฌ ์ธํ๋ผ์ด๋ค | ACM SIGOPS ๋ฐ ์ฐ์
์กฐ์ฌ์ ๊ฑธ์ณ ๋ฌธ์ํ๋ Cilium, Falco, Tracee ์ฑํ ํํฉ | โ
์ง์ง๋จ โ ๊ด๋ฒ์ํ ํ๋ก๋์
๋ฐฐํฌ |
| eBPF๋ ์ปค๋ ๊ณต๊ฐ ๋ด ๋ฃจํธํท ์ํ ์๋จ์ผ๋ก ์
์ฉ๋ ์ ์๋ค | ๊ฐ๋
์ฆ๋ช
(proof-of-concept) ์์ฐ์ด ๋ฌธ์ํ๋จ; ์ํคํ
์ฒ ๋ถ์์ ํตํด ์คํ ๊ฐ๋ฅ์ฑ ํ์ธ | โ
์ง์ง๋จ โ ์
์ฆ๋ ๋ฅ๋ ฅ |
| ์
์์ eBPF ์ฌ์ฉ์ ์ ํํ๊ธฐ ์ํ ๊ฒ์ฆ๊ธฐ(verifier) ๊ฐ์ ์ด ์ฐ๊ตฌ๋๊ณ ์๋ค | ํฅ์๋ ๊ฒ์ฆ, ๊ถํ ์ ํ, ๋ฐํ์ ๋ชจ๋ํฐ๋ง์ ๊ดํ ํ๋ฐํ ์ฐ๊ตฌ | โ
์ง์ง๋จ โ ์งํ ์ค์ธ ์ฐ๊ตฌ ํ๋ฆ |
| ๊ถํ ์ ํ์ด eBPF ๋ฃจํธํท ์ํ์ ์ํํ ์ ์๋ค | CAP_BPF ๋ถ๋ฆฌ ๋ฐ ๋นํน๊ถ eBPF ์ ํ์ด ๋ฌธ์ํ๋จ | โ ๏ธ ๋ถ๋ถ์ โ ์ํ์ ์ค์ด์ง๋ง ํน๊ถ ๊ณต๊ฒฉ์์ ๋ํ ์ํ์ ์์ ํ ์ ๊ฑฐํ์ง๋ ๋ชปํจ |
์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด ์ฌ๋ฌ ๊ฐ๋
์ฆ๋ช
(proof-of-concept) eBPF ๋ฃจํธํท์ด ์์ฐ๋ ๋ฐ ์์ผ๋ฉฐ, ๋ณด์ ์ปค๋ฎค๋ํฐ๋ eBPF์ bpf_probe_write_user ํฌํผ๋ฅผ ํ์ฉํ์ฌ ์ปค๋ ์ปจํ
์คํธ์์ ์ฌ์ฉ์ ๊ณต๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ ํ๋ ๊ธฐ๋ฒ์ ๋ฌธ์ํํ์๋ค. ์ด๋ ์ ํต์ ์ธ ๋ณด์ ๋ชจ๋ธ์ด ์์ํ์ง ๋ชปํ๋ ๊ธฐ๋ฅ์ด๋ค.
๊ฒ์ฆ๊ธฐ์ ์ญ์ค
eBPF ๊ฒ์ฆ๊ธฐ(verifier)โ์คํ ์ eBPF ํ๋ก๊ทธ๋จ์ ๊ฒ์ฌํ๋ ์ปค๋ ๊ตฌ์ฑ ์์โ๋ ํฌ๋์, ๋ฌดํ ๋ฃจํ, ๊ฒฝ๊ณ ์ด๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ๋ฐฉ์งํ๋๋ก ์ค๊ณ๋์๋ค. ์ด๋ ์๋ ์์ฑ(benign) ์๋์ ์
์์ ์๋๋ฅผ ๊ตฌ๋ถํ๋๋ก ์ค๊ณ๋ ๊ฒ์ด ์๋๋ค. ์์คํ
ํธ์ถ์ ๊ฐ๋ก์ฑ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋งํ๋ ํ๋ก๊ทธ๋จ์, ๋ณด์ ๋ชจ๋ํฐ๋ง ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฃจํธํท ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ตฌ์กฐ์ ์ผ๋ก ๋์ผํ๋ค.
์ต๊ทผ ์ฐ๊ตฌ๋ ๊ฒ์ฆ๊ธฐ๋ฅผ ํ์ฅํ์ฌ ์์ ์ฑ ์์ฑ์ ๋์ด ๋ณด์ ์ ์ฑ
์ ์ ์ฉํ๋ ๋ฐฉํฅ์ ํ์ํ๊ณ ์๋ค. ์ฌ๊ธฐ์๋ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ด๋ค eBPF ํ๋ก๊ทธ๋จ ์ ํ์ ๋ก๋ํ ์ ์๋์ง ์ ํํ๊ณ , ๋ฏผ๊ฐํ ํฌํผ ํจ์์ ๋ํ ์ ๊ทผ์ ์ ํํ๋ฉฐ, ๋ก๋ ์ eBPF ํ๋ก๊ทธ๋จ์ ์ํธํ ์ฆ๋ช
(attestation)์ ์๊ตฌํ๋ ๋ฐฉ์์ด ํฌํจ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ๊ฒ์ฆ๊ธฐ๋ฅผ ์์ํ ์์ ๋ฉ์ปค๋์ฆ์ด ์๋ ์ ์ฑ
์งํ ์ง์ ์ผ๋ก ์ทจ๊ธํ๋ค.
๋ฐฉ์ด ๊ฒฝ๊ณ๋ก์์ ๊ถํ
eBPF ๋ฃจํธํท์ ๋ํ ์ฃผ์ ๋ฐฉ์ด ์๋จ์ ๊ถํ ์ ํ์ด๋ค. eBPF ํ๋ก๊ทธ๋จ์ ๋ก๋ํ๋ ค๋ฉด ํน์ Linux ๊ถํ(ํ๋ก๊ทธ๋จ ์ ํ์ ๋ฐ๋ผ CAP_BPF, CAP_SYS_ADMIN, ๋๋ CAP_NET_ADMIN)์ด ํ์ํ๋ค. ์ ์ ํ ๊ตฌ์ฑ๋ ์์คํ
์์๋ ์ ๋ขฐํ ์ ์๋ ๋ณด์ ๋๊ตฌ๋ง์ด ์ด๋ฌํ ๊ถํ์ ๋ณด์ ํ๋ค. ๊ณต๊ฒฉ ์๋๋ฆฌ์ค๋ ๊ณต๊ฒฉ์๊ฐ ๋จผ์ ๊ถํ ์์น์ ๋ฌ์ฑํด์ผ ํ๋ฉฐ, ๊ทธ ์์ ์์๋ eBPF๋ฟ๋ง ์๋๋ผ ๋ค์ํ ๊ณต๊ฒฉ ๋ฒกํฐ์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ ๋ณด์ ๋๊ตฌ ์์ฒด๊ฐ eBPF ๊ถํ์ ๊ฐ์ง ํน๊ถ ์ปจํ
์ด๋๋ก ์คํ๋๋ ์ปจํ
์ด๋ ํ๊ฒฝ์์๋, ๋ณด์ ๋๊ตฌ์ ์ปจํ
์ด๋๋ฅผ ์นจํดํ๋ ๊ฒ๋ง์ผ๋ก ๊ณต๊ฒฉ์๊ฐ ๋ฃจํธํท ๋ฐฐํฌ์ ํ์ํ eBPF ์ ๊ทผ ๊ถํ์ ์ ํํ ํ๋ํ ์ ์๋ค. ์ด๋ ๋ณด์ ๋๊ตฌ ์์ ์ ๊ถํ์ ์ด์ฉํ๋ ๋ฐฉ์์ด๋ค.
์ด๋ฆฐ ์ง๋ฌธ๋ค
์ฆ๋ช
ํ๋ ์์ํฌ(Attestation frameworks): eBPF ํ๋ก๊ทธ๋จ์ ์ํธํ ์๋ช
์ ์ ์ฉํ๊ณ ๋ก๋ ์ ์ ๊ฒ์ฆํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ฐ? ์ฐ๊ตฌ ํ๋กํ ํ์
์ ์กด์ฌํ์ง๋ง, ๋์ ์ผ๋ก ์์ฑ๋ eBPF ํ๋ก๊ทธ๋จ์ ๋ํ ํ๋ก๋์
์์ค์ ์ฆ๋ช
์ ์์ง ํด๊ฒฐ๋์ง ์์ ๊ณผ์ ์ด๋ค.
๋ฐํ์ ํ๋ ๋ชจ๋ํฐ๋ง: ๊ฒ์ฆ๊ธฐ๊ฐ ๊ตฌ์กฐ์ ์ผ๋ก ์
์์ ํ๋ก๊ทธ๋จ๊ณผ ์์ฑ ํ๋ก๊ทธ๋จ์ ๊ตฌ๋ถํ ์ ์๋ค๋ฉด, ๋ฐํ์ ๋ชจ๋ํฐ๋ง์ด ๋น์ ์์ ์ธ eBPF ๋์์ ํ์งํ ์ ์๋๊ฐ? ์ด๋ ์ฌ๊ท์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ๋คโ์ปค๋ ์์ค์์ ๋ชจ๋ํฐ๋ฅผ ๊ฐ์ํ๋ ๊ฒ์ ๋๊ตฌ์ธ๊ฐ?
์ปจํ
์ด๋ ๋ณด์ ์ํคํ
์ฒ: eBPF ๊ถํ์ด ํ์ํ ๋ณด์ ๋๊ตฌ๋ ์์ ์ด ๋ณดํธํ๋ ์ปจํ
์ด๋ ํ๊ฒฝ ๋ด๋ถ์์ ์คํ๋์ด์ผ ํ๋๊ฐ, ์๋๋ฉด ๋ณ๋์ ์ ๋ขฐ ๊ณ์ธต์์ ์คํ๋์ด์ผ ํ๋๊ฐ? ํน๊ถ ๋ณด์ ์ปจํ
์ด๋๋ ๋ถํธ์คํธ๋ํ ์ทจ์ฝ์ ์ ์์ฑํ๋ค.
๋ง๋ฌด๋ฆฌ ์ฑ์ฐฐ
eBPF์ ์ด์ค์ ํน์ฑ์ ํด๊ฒฐํด์ผ ํ ๊ฒฐํจ์ด ์๋๋ผ ๊ด๋ฆฌํด์ผ ํ ๊ทผ๋ณธ์ ์ธ ํน์ฑ์ด๋ค. ๊ฒ์ฆ๊ธฐ ๊ฐ์ , ๊ถํ ์ ํ, ์ฆ๋ช
ํ๋ ์์ํฌ ๋ฑ์ ์ฐ๊ตฌ ๋ฐฉํฅ์ ๊ณต๊ฒฉ์ ์ ์ฌ๋ ฅ์ ์ต์ ํ๋ฉด์ ๋ฐฉ์ด์ ์ด์ ์ ๋ณด์กดํ๋ ค๋ ์๋๋ฅผ ๋ํ๋ธ๋ค. ์ด๋ฌํ ๊ท ํ์ด ๋ฌ์ฑ ๊ฐ๋ฅํ์ง, ์๋๋ฉด eBPF๊ฐ ๊ณต๊ฒฉ ๋ฐ ๋ฐฉ์ด ๋ฅ๋ ฅ์ด ๋ฌดํ์ ๊ณต์งํํ๋ ์ด์ค ์ฌ์ฉ ๊ธฐ์ ์ ์ญ์ฌ์ ํจํด์ ๋ฐ๋ฅผ ๊ฒ์ธ์ง๋ ์ฌ์ ํ ์ด๋ฆฐ ์ง๋ฌธ์ผ๋ก ๋จ์ ์๋ค.