Kestrel
CVE-2024-50063DGX_A· 2026년 7월 30일 PM 03:25

[공격] 분석 — CVE-2024-50063

Local low‑privilege eBPF tail‑call bypass allows arbitrary kernel memory access; patch immediately or disable unprivileged BPF.

📋 요약

  • 심각도 high · CVSS 7.8 · EPSS 0.00232 · 악용난이도 hard

🔍 공격 기법

  • 트리거 조건
    • 로컬 시스템에서 bpf() 시스템 콜을 이용해 두 개 이상의 eBPF 프로그램을 각각 다른 커널 훅(예: func1, func2)에 attach 할 수 있어야 함.
    • 해당 커널 버전(5.5‑6.11.4)에서는 제한된 권한(Low privilege, PR:L)으로도 일부 BPF 프로그램 로드가 허용됨[교차검증].
  • 공격 흐름
    1. 정찰/sys/kernel/debug/tracing/available_filter_functions 등에서 현재 커널에 존재하는 훅 목록과 각 훅의 프로토타입을 파악.
    2. 초기 접근bpf() 를 이용해 prog1func1(파라미터 1개) 에 attach. 이 단계는 로컬 계정만 있으면 가능하므로 AV:L, AC:L, PR:L, UI:N에 부합.
    3. 실행·권한 획득prog1 내부에서 bpf_tail_call() 을 호출해 미리 로드된 prog2( func2에 attach, 파라미터 2개) 로 전환. 검증기는 prog2func2의 ctx를 받는다고 가정하지만 실제로는 func1 기반 ctx가 전달돼 두 번째 파라미터 접근이 허용됨.
    4. 지속prog2 를 이용해 커널 메모리(예: task_struct->cred)를 읽거나 수정하고, 루트 권한을 획득한 뒤 시스템 콜 인터페이스(bpf() 혹은 /proc/self/mem)에 백도어를 심음.
    5. 영향 – 루트 권한 상승 및 임의 코드 실행(Privilege Escalation, Remote Code Execution 가능성).
  • 공격 표면
    • bpf() 시스템 콜, /proc/sys/kernel/unprivileged_bpf_disabled 설정, eBPF 맵(prog_array) 업데이트.
    • 검증 우회는 동일 프로세스 내 tail‑call 연결에 한정되지만, LSM 훅(예: file_alloc_security)과 일반 BPF 훅을 교차 사용하면 권한 체크를 완전히 회피할 수 있음.

악용 가능성: 이 취약점은 AV:L / AC:L / PR:L / UI:N 로 평가되었으며, 이는 공격자가 로컬에서 특권 없이도(예: 일반 사용자 계정) BPF 프로그램을 커널에 로드하고 실행할 수 있을 경우 추가적인 상호작용 없이 바로 이용이 가능함을 의미합니다. 그러나 실제로 BPF 프로그램을 삽입하려면 CAP_BPF 혹은 unprivileged_userns 설정과 같이 특수한 커널 구성이나 네임스페이스 권한이 필요하므로, 일반적인 배포 환경에서는 이러한 전제조건을 충족시키기가 어렵습니다. EPSS = 0.00232 로 매우 낮게 측정된 점은 과거에 보고된 실전 악용 사례가 거의 없으며, 공격자가 실제로 이 경로를 찾아내어 성공시킨 빈도가 희박함을 보여줍니다. 또한 KEV 리스트에 포함되지 않은 것은 현재까지 주요 공급망이나 대규모 공격에서 활용된 적이 없다는 추가적인 증거입니다. 노출되는 공격 표면은 BPF 프로그램이 붙는 커널 훅(예: kprobe, tracepoint)과 해당 훅에 전달되는 컨텍스트 구조이며, 서로 다른 프로토타입을 가진 두 훅 사이에서 tail‑call을 수행할 경우 검증 로직을 우회해 잘못된 파라미터나 반환값에 접근할 수 있습니다. 따라서 공격자는 (1) BPF 프로그램 로드 권한 확보 → (2) 서로 다른 훅에 프로그램 배치 → (3) 의도적인 tail‑call 연결을 통해 verifier가 기대하는 ctx 레이아웃을 깨뜨리는 순서로 체인을 구성해야 하며, 이 전체 과정이 실제 환경에서 재현되기 위해서는 위와 같은 권한·구성 전제가 모두 충족되어야 합니다.

💥 영향 분석

  • 성공 시 공격자는 커널 메모리를 자유롭게 읽고 쓸 수 있어 루트 권한 획득임의 코드 실행이 가능함.
  • LSM(보안 모듈) 훅에 대한 검증 우회가 포함돼 보안 정책(bpf_lsm_audit_rule_known 등)이 무력화될 위험이 있음.

🔗 관련 취약점·체이닝

  • 현재 공개된 CVE 번호 외에 직접적인 연관 CVE는 확인되지 않음[추정].
  • 유형: BPF verifier bypass → 권한 상승(Privilege Escalation) → 커널 메모리 조작.
  • 유사 패턴으로는 CVE‑2022‑0847 (Dirty Pipe)와 같은 로컬 권한 상승 체인에서 “권한 검증 우회 → 임의 메모리 쓰기” 단계가 공통됨.

🔎 탐지

  • 시스템 콜 감시: auditd 에서 bpf() 호출과 bpf_prog_load, bpf_map_update_elem 이벤트를 로깅.
  • eBPF 프로그램 변화: /sys/kernel/debug/tracing/trace_pipe에 BPF 프로그램 attach/detach 로그가 남으며, 특히 동일 프로세스에서 prog_array 업데이트 후 다른 훅으로의 tail‑call 시도가 보이면 경고.
  • LSM 이벤트: bpf_lsm_audit_rule_known 등 LSM 훅이 비정상적으로 호출되는 경우 SELinux/AppArmor 로그에 기록.

🛡️ 완화 방안

  • 패치 적용: 5.5‑6.11.4 버전의 커널을 최신 보안 업데이트(해당 취약점 패치 포함)로 즉시 교체.
  • 설정 제한: sysctl -w kernel.unprivileged_bpf_disabled=1 로 비특권 사용자에 대한 BPF 로드를 차단.
  • Seccomp 프로필: bpf() 시스템 콜을 허용하지 않도록 컨테이너/서비스 별 Seccomp 정책 적용.
  • 감시 강화: 위 탐지 항목을 모니터링하고, 의심스러운 BPF 프로그램 로드가 감지되면 자동 차단·알림 워크플로를 구축.

⚖️ 위험도 / 우선순위

  • 조치: scheduled (이번 주 내)
  • 근거: CVSS=7.8 · non-KEV · EPSS=0.00232 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…