X

eBPF (extended BPF)

1. eBPF (extended BPF)의 개념 및 필요성

  • eBPF(extended BPF): BPF는 원래 Berkeley Packet Filter의 약자였지만, eBPF가 패킷 필터 외 다양한 기능을 수행함으로 BPF의 약어는 의미가 없으며, eBPF는 독립된 용어로 사용함.
개념 필요성
패킷 분석 등 커널 기능의 안전 및 효율적 확장 위해 커널 소스 코드 변경 없이 OS 커널 공간 내 샌드박스 프로그램을 실행하는 기술 – 향상된 패킷 필터링 프로세스 수행
– 고급 성능 분석, 디버깅 기능 제공
– 시스템/네트워크 관측가능성 구현
– JIT 컴파일러 기반 분석 성능 향상
  • 초기 BPF(Classic Berkeley Packet Filter)는 단순 패킷 분석/필터링 형태로 시작되었고, eBPF를 통해 OS 커널 수준부터 전체 S/W 스택에 노코드 기반 관측가능성(Observability)을 구현

 

2. eBPF의 아키텍처, 구성요소 및 동작 절차

(1) eBPF의 아키텍처

  • eBPF를 통해 Application 기능 추가 시 운영 체제는 JIT(Just-In-Time) 컴파일러와 검증 엔진 기반 OS 커널 내 네이티브로 컴파일된 것처럼 안전성과 실행 효율성을 보장하여 추가 기능 실행

(2) eBPF의 구성요소

구분 구성요소 역할
사용자
App 개발
측면
Observability – 메트릭, 추적, 로그 기반 시스템 상태 예측
– 시스템 로그, 패킷 분석/필터링 기능
eBPF Byte Code – 패킷 분석/필터링 등 eBPF 프로그램 컴파일
– eBPF 아키텍처 준수, 런타임 오류 방지
User Space Loader – eBPF 맵을 관리하는 사용자 공간 프로그램
– 바이트코드를 커널에 로드, 적절한 후크에 연결
커널
런타임
측면
JIT Complier – 바이트코드를 특정 플랫폼의 기계어로 즉시 변환
– Just-In-Time, 하드웨어 네이티브 수준 성능 향상
Maps – Key-Value, Read/Write 액세스 데이터 구조
– 커널과 사용자 공간 App 간 상호 작용 지원
eBPF Hook – 커널 코드를 eBPF 프로그램에 연결하는 지점
XDP 등 커널이 후크에 도달 시 eBPF 코드 실행
Helper Function – 시스템 호출 API 기반 커널 함수 집합
– 명령어 집합 내 미지원 작업 수행 지원

(3) eBPF 동작 절차

# 동작 절차 세부 동작 내용
바이트코드
컴파일
개발자가 eBPF 프로그램(CPU 사용량 모니터링, 패킷 필터링 등)을 작성하고 바이트코드를 컴파일
커널에
로드
eBPF 컴파일러가 상위 수준 C 코드를 하위 수준 바이트코드로 변환, 사용자 공간 로더는 BPF 시스템 호출을 생성하여 프로그램을 커널에 로드
프로그램
안전성 검증
프로그램 바이트코드와 맵이 준비되면 eBPF는 프로그램이 커널에서 실행하기에 안전한지 확인하기 위해 검증 프로세스 실행
기계어 변환 eBPF는 인터프리터나 JIT 컴파일러를 사용하여 바이트코드를 실행 가능한 기계어로 변환
프로그램
상호 작용
eBPF 프로그램이 실행되면 개발자는 eBPF 맵을 사용하여 사용자 공간에서 프로그램과 상호 작용
커널에서
언로드
eBPF가 작업을 완료하면 로더는 BPF 시스템 호출을 다시 사용하여 커널에서 언로드
  • eBPF는 커널 수준의 관측가능성 구현 및 다양한 기능 활용이 가능하나, 이로 인해 심각한 보안 취약점이 발생할 수 있으므로 eBPF 검증기 등으로 취약점 해결 필요

 

3. eBPF의 문제점 및 대응방안

문제점 대응방안
– eBPF 프로그램은 검증 과정의 복잡성으로 인해 안전성 보장 어려움
– CVE-2023-2163 취약점 등 악용하여 컨테이너, 임의 읽기/쓰기, 커널 루트 권한 탈취 가능
– Google Buzzer 기반 eBPF 검증기 취약점 자동 감사
– 오픈소스 커뮤니티 기여를 통해 퍼저 도구 개발 등 보안 취약점 해결
  • eBPF는 관측가능성 구현 및 다양한 기능 추가가 가능하여 Meta(Facebook) 데이터 센터 로드밸런서, Google GKE의 네트워킹 및 보안, 네이버의 NAT 시스템, 카카오의 L2DSR 로드밸런서 등에 활용되며, 상기 보안 문제점을 개선하여 네트워크 외 다양한 분야로 확장될 것으로 전망

 
[참고]

  • 한국전자통신연구원(ETRI), 클라우드 네이티브 환경에서 네트워킹 및 보안을 위한 eBPF 기술 동향
  • IBM, eBPF란 무엇인가요
Categories: CA/운영체제
도리: