[분석가] 분석 — CVE-2024-50164
A BPF verifier vulnerability allows writing to read-only global maps via variable-sized buffers, requiring kernel updates or restriction of unprivileged eBPF.
📋 요약
- 심각도 high · CVSS 7.1 · EPSS 0.00206 · 악용난이도 hard
🔍 공격 기법
- 트리거 조건:
check_mem_size_reg()함수에서 전달된 버퍼의 크기를 담은 레지스터가 고정 값(const)이 아닐 경우, BPF verifier가meta값을NULL로 설정하여 쓰기 검증을 우회하는 결함을 이용합니다. - 공격 단계:
- 초기 접근: 로컬 시스템에 로그인한 저권한 사용자 계정 확보 (PR:L).
- 실행: 가변 크기 버퍼를 사용하는 BPF 프로그램을 작성하여 커널에 로드.
- 권한 상승/영향: BPF verifier의 검증 우회를 통해
.rodata와 같은 읽기 전용(read-only) 글로벌 맵에 임의 데이터를 기록.
- 공격 표면: Linux 커널의
bpf()시스템 콜 및 eBPF Verifier 인터페이스. - CVSS 벡터 분석:
- AV:L (Local): 로컬 접근 권한이 필요함.
- AC:L (Low): 공격 조건이 단순하며 특수 환경 설정이 불필요함.
- PR:L (Low): 일반 사용자 수준의 권한으로 실행 가능함.
- UI:N (None): 사용자 상호작용 없이 실행됨.
악용 가능성: 본 취약점은 Linux kernel의 BPF verifier 내 check_mem_size_reg() 함수에서 버퍼 크기가 상수가 아닐 때 메모리 초기화 검증을 누락하는 로직 오류로 인해 발생합니다. 공격자는 이를 통해 .rodata와 같은 읽기 전용(Read-only) 글로벌 맵에 데이터를 쓰는 비정상적인 쓰기 권한을 획득할 수 있습니다. CVSS 벡터 상 AV:L(Local), PR:L(Low privilege) 조건이 요구되므로, 공격자는 대상 시스템에 이미 낮은 권한의 계정으로 접속하여 BPF 프로그램을 로드할 수 있는 환경이어야 합니다. 다만, AC:L 및 UI:N인 만큼 전제조건 충족 시 트리거 과정은 단순하며, 공격 표면은 커널 내 BPF verifier와 맵 관리 인터페이스로 국한됩니다. EPSS는 0.00206으로 매우 낮고 KEV에 등재되지 않아 야생에서의 실제 악용 사례는 미관측 상태이며, 이론적 심각도 대비 실질적인 악용 가능성은 낮은 'Hard' 등급으로 판단됩니다. 결과적으로 로컬 권한 상승을 노리는 정교한 공격 시나리오에서는 유효할 수 있으나, 일반적인 외부 위협 환경에서의 즉각적인 위험도는 낮습니다.
💥 영향 분석
- 기술적 위험: 읽기 전용이어야 할 커널 메모리 영역(Global Maps)에 쓰기가 가능해짐으로써, 커널 내의 중요 설정값이나 함수 포인터 등을 변조하여 권한 상승(Privilege Escalation) 또는 커널 패닉을 통한 서비스 중단(DoS)을 유발할 수 있습니다.
- 비즈니스 영향: 시스템 무결성 파괴 및 루트 권한 탈취로 인한 데이터 유출 위험이 존재하며, 서버 가용성 저하 및 인프라 신뢰도 하락으로 이어질 수 있습니다. 영향 범위는 Linux 커널 5.19 ~ 6.11.6 버전의 광범위한 배포판을 포함합니다.
🔗 관련 취약점·체이닝
- 추정: 본 취약점은 단독으로는 읽기 전용 메모리 변조에 그치지만, 커널 내 다른 정보 유출(Information Leak) 취약점과 체이닝될 경우, 정확한 메모리 주소를 타겟팅하여 보다 정교한 권한 상승 공격으로 이어질 가능성이 높습니다. (패턴: Memory Corruption $\rightarrow$ Privilege Escalation)
🔎 탐지
- 로그 지표:
auditd또는 커널 로그에서 비정상적인 BPF 프로그램 로드 시도 및bpf()시스템 콜의 빈번한 호출 패턴 확인. - 탐지 규칙 예시:
- 로직:
sys_bpf호출 시BPF_PROG_LOAD명령과 함께 전송되는 바이트코드 내에서 가변 크기 버퍼를 다루는 특정 인스트럭션 패턴 감시. - SIEM 쿼리(의사코드):
SELECT timestamp, user, pid FROM kernel_events WHERE syscall='bpf' AND cmd='BPF_PROG_LOAD' AND user_privilege='low'
- 로직:
- 오탐 시나리오 및 튜닝: 최신 모니터링 도구(e.g., Falco, Datadog)가 정상적으로 eBPF를 사용하는 경우 오탐이 발생할 수 있습니다. 신뢰할 수 있는 바이너리 경로(Whitelist)와 실행 사용자를 정의하여 필터링하십시오.
🛡️ 완화 방안
- 즉시 (긴급 차단):
unprivileged_bpf_disabled설정을 통해 비특권 사용자의 eBPF 사용을 금지합니다.sysctl -w kernel.unprivileged_bpf_disabled=1- 난이도: 낮음 / 영향: 일부 BPF 기반 도구 작동 불가 / 검증:
sysctl값 확인.
- 단기 (완화):
seccomp프로필을 적용하여 일반 프로세스의bpf()시스템 콜 호출을 차단합니다.- 난이도: 중간 / 영향: 애플리케이션 호환성 확인 필요 / 검증: syscall trace를 통한 차단 확인.
- 근본 (해결): 영향을 받는 커널 버전(5.19 ~ 6.11.6)을 최신 보안 패치가 적용된 버전으로 업데이트합니다.
- 난이도: 중간 / 영향: 시스템 재부팅 필요(가용성 일시 중단) / 검증:
uname -r및 커널 체인지로그 확인.
- 난이도: 중간 / 영향: 시스템 재부팅 필요(가용성 일시 중단) / 검증:
[분석 근거] 본 리포트는 다중 소스 데이터의 일관성이 확인된 교차검증 결과(신뢰도 1.0)를 바탕으로 작성되었습니다. 실측 EPSS 값은 0.00206(백분위 0.10893)으로 실제 야생 악용 가능성은 현재 매우 낮으며, KEV 미등재 및 exploit 난이도가 'hard'인 점을 고려하여 우선순위를 scheduled(이번 주 내 대응)로 결정하였습니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.1 · non-KEV · EPSS=0.00206 · exploit=hard · in_scope=None