[분석가] 분석 — CVE-2024-50164
The Linux kernel BPF verifier flaw (CVE‑2024‑50164) allows unprivileged locals to write into read‑only eBPF maps, and should be mitigated immediately by applying the upstream patch or disabling unprivileged BPF.
📋 요약
- 심각도 high · CVSS 7.1 · EPSS 0.00206 · 악용난이도 hard
🔍 공격 기법
- 로컬 사용자가
bpf()시스템 콜을 이용해 검증되지 않은 버퍼 크기를 전달하고, MEM_UNINIT 플래그가 잘못 해석돼 읽기 전용(.rodata) 맵에 쓰기 요청을 수행합니다. - 검증 단계에서
meta = NULL로 설정되어 메모리 초기화 여부 검사가 우회되므로, 커널은 해당 쓰기를 허용하게 됩니다.
악용 가능성: 이 취약은 AV:L(Local)이며 로컬 시스템에서 BPF 프로그램을 로드할 수 있는 권한만 있으면 공격이 가능하므로 원격 공격자는 활용할 수 없습니다. AC:L·PR:L·UI:N 조합은 비특권 사용자라도 추가적인 인증이나 상호작용 없이, 즉 바로 실행 가능한 BPF 코드만으로도 이용이 가능함을 의미합니다. 실제로 공격자는 check_mem_size_reg()의 검증 결함을 이용해 읽기 전용(rodata) 맵에 임의 데이터를 쓰는 것이 가능하므로, /sys/fs/bpf 등 노출된 엔드포인트가 공격 표면이 됩니다. EPSS = 0.00206이라는 실측값은 현재 관찰된 악용 확률이 낮지만 완전히 무시할 수 없으며, KEV에 등재되지 않은 점은 아직 공개적인 야생 악용 사례가 보고되지 않았음을 시사합니다. 따라서 난이도는 hard로 평가되지만, 로컬 권한을 가진 사용자가 BPF 프로그램을 자유롭게 업로드·실행할 수 있는 환경에서는 실제 위험이 존재합니다.
💥 영향 분석
- 기술적 위험: 읽기 전용 eBPF 맵에 임의 데이터가 기록됨으로써
- 커널 메모리 무결성 훼손 → 권한 상승 및 전체 시스템 장악 가능성
- 악성 BPF 프로그램이 커널 코드 흐름을 변조해 서비스 거부(DoS) 유발 가능
- 비즈니스 위험:
- 시스템 무결성 손실로 인한 신뢰도 하락 및 규제·컴플라이언스 위반 위험
- 침해 사고 시 운영 중단 및 복구 비용 발생 가능
- 노출 규모: Linux kernel 5.19‑6.6.59, 6.7‑6.11.6 등 다수 버전(총 6개 제품 라인)에서 영향을 받음[교차검증: 다중 소스에서 일관성이 확인됐다].
🔗 관련 취약점·체이닝
- 기존 BPF 검증 결함(CVE‑2023‑xxxx 등)과 유사하게 eBPF 프로그램 로딩 단계에서 권한 상승을 야기할 수 있는 패턴이며, 본 취약점은 MEM_UNINIT 의미 오버로드가 추가된 점이 차별점입니다. 현재 알려진 체인 공격 사례는 없습니다.
🔎 탐지
auditd혹은 커널 로그에 기록되는bpf()호출 중 MAP_TYPE_RODATA 또는 BPF_MAP_TYPE_ARRAY 등 읽기 전용 맵에 대한BPF_MAP_UPDATE_ELEM시도 감시- eBPF verifier 경고(
verifier: map update to read‑only)가 발생하면 알림 설정 - SELinux/AppArmor 로그에서
bpf_map_update_elem거부 이벤트 모니터링
🛡️ 완화 방안
- 패치 적용 – 배포된 커널 업데이트(5.19 ~ 6.11.6) 중 해당 수정이 포함된 버전으로 즉시 업그레이드합니다.
- 운영 차단 – 패치를 당장 적용할 수 없는 경우,
sysctl kernel.unprivileged_bpf_disabled=1로 비특권 사용자의 BPF 프로그램 로딩을 차단하거나, cgroup/eBPF 제한 정책으로 읽기 전용 맵에 대한 쓰기를 금지합니다. - 보안 모듈 강화 – SELinux/AppArmor 정책을 최신 규칙으로 갱신해
bpf_map_update_elem의 무단 사용을 로그 및 차단하도록 설정합니다. - 모니터링 구축 – 위 탐지 지표를 기반으로 실시간 알림 파이프라인을 구성하고, 이상 징후 발생 시 즉시 조사 절차를 가동합니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.1 · non-KEV · EPSS=0.00206 · exploit=hard · in_scope=None