[방어] 분석 — CVE-2025-68742
The Linux kernel BPF bug (CVE-2025-68742) can cause a null‑stats dereference in soft‑irq context, leading to kernel panic; immediate mitigation is to disable cgroup BPF filters until the upstream patch is applied.
📋 요약
- 심각도 미상 · CVSS 미상 · EPSS 0.0018 · 악용난이도 hard
🔍 공격 기법
취약점은 update_effective_progs 함수가 실패하고 purge_effective_progs에서 원본 프로그램을 dummy_bpf_prog.prog 로 교체한 뒤, 소프트IRQ가 실행되면서 prog->stats 가 NULL인 상태로 u64_stats_update_begin_irqsave() 를 호출하도록 유도합니다.
공격자는 특권 계정(예: root)에서 BPF 프로그램을 cgroup에 첨부·제거하면서 인위적으로 오류를 주입(fault injection)하면, 해당 경로가 트리거됩니다. 결과는 커널 Oops/패닉이며 시스템 가용성이 상실됩니다.
악용 가능성: 이 취약점은 AV = Local, AC = High, PR = Low, UI = None 로 해석할 수 있습니다. 즉, 공격자는 동일 호스트에서 BPF 프로그램을 로드하거나 cgroup BPF detach 를 호출해야 하며, 메모리 할당 오류를 강제하는 특수한 fault‑injection 순서를 재현해야 하기 때문에 실행 환경이 제한되고 복잡도가 높습니다. EPSS 값이 0.0018 로 매우 낮고 KEV 목록에 등재되지 않은 점은 현재까지 실제 악성 코드나 공격 캠페인에서 이 결함을 활용한 사례가 거의 없음을 의미합니다. 그러나 공격 표면은 bpf() 시스템 콜과 cgroup BPF detach 경로, 특히 update_effective_progs 함수 내부의 prog->stats 포인터에 접근하는 부분으로 제한됩니다. 해당 엔드포인트는 커널 모듈 수준에서만 노출되며 네트워크 인터페이스와 직접 연결되지 않으므로 원격 공격이 불가능하고, 로컬 프로세스가 BPF 프로그램을 적재할 수 있는 권한이 전제되어야 합니다.
💥 영향 분석
- 시스템 안정성: 커널 패닉으로 전체 노드 재부팅이 필요합니다.
- 서비스 연속성: 클라우드·컨테이너 환경에서는 해당 호스트가 장애 조치 대상이 되며, 서비스 가용성이 크게 저하됩니다.
- 데이터 무결성: 비정상 종료 시 파일 시스템 로그 손상이 발생할 가능성이 있습니다.
🔗 관련 취약점·체이닝
- BPF 프로그램 로드/제거 과정에서 검증 부족으로 인한 다른 커널 Oops (예: CVE‑2024‑XXXX)와 연계될 수 있습니다.
- cgroup 기반 제한 우회 공격과 결합하면 특권 상승 시나리오를 구성할 여지가 존재합니다.
🔎 탐지
-
로그 위치
/var/log/kern.log,dmesg, 시스템 저널(journalctl -k)- Audit 로그(
auditd의kernel이벤트)
-
핵심 필드·패턴
- 메시지에 포함되는 키워드:
bpf_prog_run,prog->stats,invalid memory access,softirq,u64_stats_update_begin_irqsave,Oops,panic - 스택 트레이스 예시:
__cgroup_bpf_detach,update_effective_progs,compute_effective_progs
- 메시지에 포함되는 키워드:
-
SIEM 쿼리 예시 (Elastic Kibana DSL)
1{ 2 "query": { 3 "bool": { 4 "must": [ 5 { "match_phrase": { "message": "bpf_prog_run" } }, 6 { "regexp": { "message": ".*prog->stats.*invalid memory access.*" } } 7 ], 8 "filter": [ 9 { "range": { "@timestamp": { "gte": "now-5m" } } }10 ]11 }12 }13}-
정규식 탐지 예시 (Syslog, Splunk)
text1^.*(bpf_prog_run|prog->stats).*(invalid memory access|softirq).*$ -
오탐 튜닝
- BPF JIT 컴파일 경고(
JIT compilation failed)는 제외하도록NOT message:*JIT*조건을 추가. - 정상적인 BPF 프로그램 로드 시 발생하는
bpf_prog_load로그도 동일 패턴에 포함될 수 있으므로,event_type:load를 필터링해 배제합니다.
- BPF JIT 컴파일 경고(
-
검증 방법
- 테스트 환경에서 의도적으로
update_effective_progs실패를 유발하고, 위 쿼리가 이벤트를 포착하는지 확인. - 정상 운영 서버에서는 최근 24 시간 동안 해당 패턴이 발생하지 않았는지 검증.
- 테스트 환경에서 의도적으로
🛡️ 완화 방안
-
BPF 프로그래밍 권한 제한
kernel.unprivileged_bpf_disabled=1로 비특권 사용자의 BPF 로드 차단.
구현 난이도: 중간 → sysctl 재시작 필요.
운영 영향: 일부 모니터링·트레이싱 도구가 정상 동작하지 않을 수 있음.
검증:bpftool prog show로 비특권 사용자 접근 여부 확인.
-
커널 로그 레벨 강화
kernel.printk = "7"로 Oops 발생 시 즉시 알림 확보.
구현 난이도: 낮음 → sysctl 적용 후 재부팅 없이 적용 가능.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=미상 · non-KEV · EPSS=0.0018 · exploit=hard · in_scope=None