ebpf

4 개의 포스트

500 Tbps의 용량: 글로벌 네트워크 확장의 16년 (새 탭에서 열림)

Cloudflare는 지난 16년간의 성장을 통해 전 세계 330개 이상의 도시에서 총 500Tbps의 외부 연결 용량을 확보하며 글로벌 네트워크의 중추적인 역할을 수행하고 있습니다. 이 거대한 용량은 단순히 트래픽을 처리하는 것을 넘어 대규모 DDoS 공격을 감내할 수 있는 '보안 예산'의 역할을 하며, 네트워크 전체에 분산된 지능형 소프트웨어를 통해 인간의 개입 없이도 초당 수십 테라비트급의 공격을 자동으로 방어합니다. 결과적으로 Cloudflare는 단순한 콘텐츠 전달 네트워크를 넘어 에지 컴퓨팅과 차세대 라우팅 프로토콜을 주도하는 지능형 인프라로 진화했습니다. ### 500 Tbps 용량의 의미와 네트워크 확장 * 500 Tbps는 피크 트래픽 수치가 아니라, transit 제공업체, 피어링 파트너, 인터넷 교환지(IX) 등과 연결된 모든 외부 포트 용량의 합계를 의미합니다. * 2010년 단일 서비스 제공업체로 시작한 이후, 현재는 전 세계 웹 트래픽의 20% 이상을 보호하는 330개 도시 규모의 거대 네트워크로 성장했습니다. * 일상적인 트래픽은 이 용량의 일부만 사용하며, 나머지 유휴 용량은 대규모 DDoS 공격을 흡수하고 차단하기 위한 일종의 '보안 버퍼'로 활용됩니다. ### 분산형 자동 방어 체계: 31.4 Tbps 공격의 차단 과정 * 2025년 발생한 31.4 Tbps 규모의 Aisuru-Kimwolf 봇넷 공격을 엔지니어의 개입 없이 단 35초 만에 자동으로 완화했습니다. * 모든 서버는 xdpd(eXpress Data Path)와 eBPF 기반의 l4drop 프로그램을 실행하여, 공격 트래픽이 CPU 자원을 소모하기 전에 네트워크 카드(NIC) 수준에서 즉시 폐기합니다. * dosd(DoS 데몬)가 각 서버의 샘플링 데이터를 바탕으로 공격 패턴을 분석하면, 이 규칙이 Quicksilver(분산 KV 저장소)를 통해 전 세계 모든 데이터 센터에 수초 내로 전파되어 동시 대응이 이루어집니다. * 중앙 집중식 스크러빙 센터로 트래픽을 돌리지 않고, 공격이 유입된 현장에서 즉시 처리함으로써 지연 시간을 최소화하고 가용성을 보장합니다. ### 차세대 라우팅 보안: RPKI와 ASPA * BGP 하이재킹과 경로 왜곡을 방지하기 위해 RPKI(리소스 공공키 기반구조)를 전면 도입하여 잘못된 경로로 유입되는 트래픽을 원천 차단합니다. * RPKI가 경로의 '소유권'을 확인한다면, 새롭게 도입 중인 ASPA(자율 시스템 제공자 인증)는 트래픽이 거쳐온 '경로의 정당성'까지 검증하여 경로 누출(Route Leak) 사고를 예방합니다. * Cloudflare는 이러한 프로토콜의 초기 채택자로서, 인터넷 전체의 보안 표준을 높이고 더 안전한 글로벌 라우팅 환경을 구축하는 데 기여하고 있습니다. ### AI 에이전트 부상에 따른 트래픽 변화 대응 * 현재 전체 HTML 요청의 4% 이상이 AI 크롤러와 학습 파이프라인에서 발생하고 있으며, 이는 기존 검색 엔진 크롤러에 필적하는 수준입니다. * AI 크롤러는 일반 사용자 브라우저와 달리 쉼 없이 최대 대역폭으로 리소스를 긁어가는 특성이 있어, 이를 일반적인 공격 트래픽과 구분하는 것이 새로운 기술적 과제로 부상했습니다. * TLS 핑거프린팅, 행동 분석, 로봇 배제 표준(robots.txt) 준수 신호 등을 결합하여 정당한 AI 트래픽은 허용하고 악의적인 수집은 차단하는 정교한 탐지 시스템을 운영합니다. Cloudflare의 사례는 현대 인프라가 단순히 하드웨어의 확장을 넘어, 소프트웨어 기반의 지능형 자동화와 강력한 에지 컴퓨팅 역량을 갖추어야 함을 시사합니다. 기업들은 전 세계 어디서나 일관된 성능과 보안을 제공받기 위해, 대규모 분산 네트워크 인프라와 결합된 클라우드 네이티브 보안 모델을 적극적으로 고려해야 합니다.

바이트코드에서 바이트까지 - 자동화된 매직 패킷 생성 (새 탭에서 열림)

리눅스 악성코드는 커널 내에서 네트워크 트래픽을 처리하는 BPF(Berkeley Packet Filter) 프로그램을 이용해 특정 '매직 패킷'을 받을 때까지 잠복하는 방식을 자주 사용합니다. 수백 줄에 달하는 복잡한 BPF 바이트코드를 수동으로 역공학하여 매직 패킷의 구조를 파악하는 것은 분석가에게 매우 고무적인 작업이나 시간 소모가 큽니다. 이 글은 Z3 정리 증명기(Theorem Prover)를 활용한 심볼릭 실행(Symbolic Execution) 기법을 통해, 복잡한 필터 조건을 논리적 제약식으로 변환하고 이를 통과하는 패킷을 단 몇 초 만에 자동으로 생성하는 자동화 도구의 원리와 성과를 설명합니다. ### Classic BPF와 악성코드의 은닉 기법 * **Classic BPF의 특성:** 현대적인 eBPF와 달리 2개의 레지스터만을 사용하는 단순한 가상 머신 구조로, tcpdump와 같은 도구에서 네트워크 트래픽을 고속 필터링하기 위해 설계되었습니다. * **백도어 활용:** 커널 깊숙한 곳에서 동작하며 사용자 공간의 보안 도구로부터 트래픽을 숨길 수 있다는 점 때문에, BPFDoor와 같은 지능형 지속 위협(APT) 공격자들이 선호합니다. * **분석의 한계:** 악성 BPF 프로그램은 100줄 이상의 복잡한 명령어로 구성되기도 하며, LLM을 활용한 코드 해석만으로는 실제 필터를 통과하는 정확한 네트워크 패킷 바이트를 재현하기 어렵습니다. ### BPFDoor 사례를 통한 필터 논리 분석 * **동작 원리:** BPFDoor는 특정 포트를 열지 않고 유입되는 모든 트래픽을 감시하다가, 미리 정의된 특정 조건(오프셋, 프로토콜, 포트 등)을 만족하는 패킷이 들어오면 활성화됩니다. * **명령어 구조:** 실제 샘플 분석 결과, 이더넷 타입(IPv4/IPv6), 프로토콜(UDP), 목적지 포트(DNS/53) 등을 순차적으로 검사하여 'ACCEPT' 또는 'DROP' 여부를 결정하는 논리적 경로를 가집니다. * **경로 탐색:** 필터 내에는 패킷을 허용(ACCEPT)하는 여러 경로가 존재하며, 각 경로는 특정 바이트 위치의 값이 무엇이어야 하는지에 대한 구체적인 제약 조건을 포함하고 있습니다. ### 심볼릭 실행 및 Z3를 이용한 패킷 자동 생성 * **제약 조건 해결:** BPF의 결정론적(Deterministic) 특성을 활용해, 패킷 데이터를 미지수(Symbolic)로 두고 Z3 정리 증명기를 통해 필터 조건을 만족하는 값을 역산합니다. * **최단 경로 탐색 알고리즘:** 큐(Queue) 기반의 탐색 방식을 사용하여 'ACCEPT' 결과에 도달하는 가장 효율적인 명령어 실행 경로를 추적합니다. * **자동화의 이점:** 분석가가 수동으로 어셈블리 코드를 보며 패킷 바이트를 계산할 필요 없이, 알고리즘이 자동으로 유효한 명령어 경로를 따라가며 매직 패킷의 전체 바이트 배열을 생성해 줍니다. 이러한 자동화 방식은 수 시간이 걸리던 수동 분석 작업을 단 몇 초 만에 완료할 수 있게 해줍니다. 보안 분석가들은 이 기술을 활용해 BPF 기반 백도어를 신속하게 무력화하고, 침해 사고 대응 과정에서 공격자가 사용하는 통제 신호를 즉각적으로 식별할 수 있습니다.

Programmable Flow Protection 소개: Magic Transit 고객을 위한 맞춤형 DDoS 완화 로직 (새 탭에서 열림)

클라우드플레어는 매직 트랜짓(Magic Transit) 고객이 자신의 네트워크 환경에 맞춘 DDoS 방어 로직을 직접 설계하고 배포할 수 있는 '프로그래밍 가능한 플로우 보호(Programmable Flow Protection)' 기능을 출시했습니다. 이 기능은 표준화되지 않은 독자적인 UDP 프로토콜을 사용하는 기업들이 eBPF 프로그램을 통해 트래픽의 정당성을 직접 판단하게 함으로써, 기존의 일률적인 차단 방식이 가졌던 오탐 문제를 해결합니다. 고객은 클라우드플레어의 글로벌 네트워크 인프라 위에서 직접 작성한 코드를 실행해 대규모 공격을 정교하고 유연하게 방어할 수 있습니다. ### 커스텀 UDP 프로토콜 방어의 한계 극복 * 기존 DDoS 방어 시스템은 TCP, DNS, NTP 등 잘 알려진 프로토콜의 특성을 활용해 공격을 식별하지만, 기업 고유의 커스텀 UDP 프로토콜은 내부 구조를 알 수 없어 정교한 대응이 어려웠습니다. * 알려지지 않은 UDP 트래픽에 공격이 발생할 경우, 기존에는 특정 IP나 포트 전체를 차단하거나 속도 제한(Rate Limit)을 거는 투박한 방식을 사용해야 했습니다. * 이러한 방식은 공격 트래픽뿐만 아니라 정상적인 사용자의 패킷까지 차단하여 서비스 지연이나 연결 끊김을 유발하는 부작용이 있었습니다. ### eBPF 기반의 맞춤형 방어 메커니즘 * 고객은 eBPF(Extended Berkeley Packet Filter) 프로그램을 작성하여 어떤 패킷이 '정상'이고 '비정상'인지 직접 정의할 수 있습니다. * 작성된 프로그램은 클라우드플레어의 전 세계 엣지 네트워크에 배포되어 모든 유입 패킷에 대해 즉각적인 판단(통과, 차단, 챌린지 등)을 수행합니다. * 커널 공간이 아닌 사용자 공간(Userspace)에서 프로그램을 실행함으로써 보안성을 확보하면서도, 클라우드플레어의 기존 DDoS 방어 계층 이후에 실행되어 다층적인 보호를 제공합니다. ### 상태 저장 및 고급 기능 지원 * 단순한 패킷 필터링을 넘어, 클라이언트의 상태를 저장하고 관리할 수 있는 '상태 저장(Stateful)' 기능을 지원합니다. * 클라우드플레어는 프로그램 실행 간 상태 유지, 암호화 검증, 챌린지 패킷 발송 등을 돕는 전용 API 및 헬퍼 함수(Helper Functions)를 제공합니다. * 이를 통해 게임 엔진의 고유 헤더 검증이나 토큰 기반의 인증 등 복잡한 애플리케이션 계층의 방어 로직을 네트워크 하단에서 구현할 수 있습니다. ### 실무 적용 예시: 독자적인 게임 프로토콜 보호 * 독자적인 헤더 구조를 가진 UDP 포트 기반 온라인 게임 서버의 경우, 공격자가 무작위 페이로드를 보내면 일반적인 장비로는 구분할 수 없습니다. * '프로그래밍 가능한 플로우 보호'를 활용하면 패킷 헤더 내의 특정 바이트나 고유 토큰을 검사하는 코드를 배포하여, 유효하지 않은 모든 트래픽을 클라우드플레어 엣지에서 즉시 제거합니다. * 결과적으로 원본 서버(Origin)에 도달하기 전에 공격이 차단되어 서버 자원을 보호하고 실제 이용자에게는 쾌적한 환경을 제공하게 됩니다. 현재 이 기능은 매직 트랜짓 엔터프라이즈 고객을 대상으로 베타 서비스 중입니다. 표준 프로토콜을 벗어난 고유의 통신 방식을 보유하고 있으며, 기존의 단순 차단 방식만으로는 서비스 품질 유지가 어려운 기업에게 이 기능을 통한 정밀한 트래픽 제어를 권장합니다.

런타임 보안을 위한 e (새 탭에서 열림)

대규모 분산 시스템에서 발생하는 초당 수백만 건의 커널 이벤트를 실시간으로 처리하기 위해선 기존의 사용자 공간 필터링 방식으로는 성능적 한계가 명확합니다. 이 글은 eBPF(Extended Berkeley Packet Filter)를 활용하여 이벤트가 발생하는 커널 내부에서 불필요한 데이터를 직접 필터링함으로써 시스템 부하를 최소화하는 아키텍처를 제안합니다. 이를 통해 CPU 사용량을 최적화하고 데이터 유실 없는 안정적인 대규모 파일 모니터링 시스템을 구축한 기술적 성과를 다룹니다. ### 기존 모니터링 방식의 병목 현상 * 수십억 개의 파일 이벤트를 사용자 공간(User-space)으로 모두 전송한 뒤 필터링하는 방식은 과도한 컨텍스트 스위칭과 데이터 복사 비용을 발생시킵니다. * 커널에서 사용자 공간으로 데이터를 넘겨주는 버퍼가 가득 찰 경우, 처리 속도가 발생 속도를 따라가지 못해 중요한 보안 또는 운영 이벤트가 누락되는 문제가 발생합니다. * 특정 프로세스의 반복적인 작업이나 무의미한 임시 파일 생성과 같은 '노이즈'가 전체 시스템 리소스의 대부분을 점유하여 모니터링 효율을 저해합니다. ### eBPF 기반의 인-커널(In-Kernel) 필터링 * eBPF를 사용하여 파일 시스템 관련 시스템 콜(open, read, write 등)이 호출되는 즉시 커널 내에서 필터링 로직을 실행합니다. * 사용자 공간의 제어부(Control Plane)가 모니터링 대상 경로(Allowlist)나 제외 대상(Denylist) 정보를 eBPF Map에 저장하면, 커널 내 eBPF 프로그램이 이 맵을 참조해 데이터를 즉시 선별합니다. * 유의미한 이벤트만 선별하여 전송하기 때문에 사용자 공간으로 전달되는 데이터의 양을 90% 이상 획기적으로 줄일 수 있습니다. ### LPM Trie를 활용한 경로 매칭 최적화 * 파일 경로는 단순 문자열 비교로 처리하기에 복잡하므로, 가장 긴 접두사 일치(LPM, Longest Prefix Match) Trie 구조를 사용하여 필터링 효율을 높입니다. * 특정 디렉토리 하위의 모든 파일이나 특정 패턴을 포함하는 경로를 효율적으로 식별하며, 규칙이 늘어나도 $O(L)$(L은 경로 깊이)의 일정한 검색 속도를 보장합니다. * 이 방식을 통해 수천 개의 복잡한 필터링 규칙이 적용된 환경에서도 커널 성능 저하 없이 실시간 매칭이 가능해집니다. ### Ring Buffer를 통한 안정적인 데이터 전달 * 기존의 Perf Buffer 방식 대신 최신 커널의 BPF Ring Buffer를 활용하여 메모리 효율성과 데이터 공유 성능을 극대화했습니다. * Ring Buffer는 여러 CPU 코어에서 동시에 발생하는 이벤트를 안전하게 처리하며, 메모리 경합을 줄이고 사용자 공간과의 통신 오버헤드를 최소화합니다. * 특히 가변 길이의 파일 경로 데이터를 처리할 때 메모리 할당 효율이 뛰어나 데이터 유실 가능성을 크게 낮춥니다. 실시간 대규모 모니터링을 설계할 때 가장 중요한 것은 '데이터 처리의 위치'입니다. eBPF를 통해 데이터의 발생지인 커널에 가깝게 필터링 로직을 전진 배치함으로써 인프라 비용을 절감하고 시스템 관측성을 높일 수 있습니다. 성능 저하 없는 정밀한 보안 감시나 실시간 파일 추적이 필요한 환경이라면 eBPF 기반의 조기 필터링 아키텍처 도입을 적극 권장합니다.