[공격] 분석 — CVE-2024-46786
CVE-2024-46786 is a local use‑after‑free in the Linux fscache timer that allows an attacker with minimal privileges to obtain full kernel compromise, therefore immediate patching or disabling of fscache is required.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00224 · 악용난이도 hard
🔍 공격 기법
-
공격 전제
- 대상 시스템에
fscache모듈이 로드된 상태여야 함(대부분 커널은 모듈형으로 제공). timer_reduce()가 호출될 수 있는 상황을 만든다. 이는 커널 내부에서 타이머 리스트를 정리할 때 자동으로 수행되며, 사용자 공간에서는 직접적인 API는 없지만 CPU 부하를 낮추거나sched_setaffinity,setpriority등으로 스케줄러를 유도해 간접적으로 트리거될 수 있다.- 추정: 일반 사용자는
/proc/sys/kernel/sched_child_runs_first와 같은 파라미터 조작을 통해 타이머 정리를 가속화할 가능성이 있음(공식 문서에 명시된 바는 없으나, 타이머 리듀스는 soft‑IRQ 경로에서 수행됨).
- 대상 시스템에
-
정찰·초기 접근
lsmod | grep fscache로 모듈 존재 여부 확인./sys/module/fscache/parameters/혹은debugfs에 노출된 설정을 열어 타이머 관련 플래그가 있는지 탐색.
-
실행·권한 획득
- 시스템 부하를 조절하거나
sleep,nice,ionice등으로 CPU 아이들 상태를 유도해 커널이timer_reduce()를 호출하도록 만든다. - 동시에 모듈을
rmmod fscache로 언로드한다(일반 사용자는 권한이 없으나, CAP_SYS_MODULE 을 가진 프로세스가 필요). - 타이머가 현재 CPU 의 timer list 에 남아 있는 상태에서 모듈 메모리가 해제되면 soft‑IRQ
__run_timer_base.part.0가 이미 해제된fscache_cookie_lru_timer를 dereference 하여 use‑after‑free 가 발생한다.
- 시스템 부하를 조절하거나
-
지속·영향
- 커널 Oops/KASAN 로그가 출력되면 공격자는 커널 메모리 주소를 유출할 수 있고, 이어서
write-what-where형태의 임의 코드 실행을 삽입해 root 권한을 획득한다. - 완전한 커널 장악 후, 시스템 내 모든 프로세스와 데이터에 대한 통제권을 확보하고, 백도어 설치·루트킷 배포가 가능하다.
- 커널 Oops/KASAN 로그가 출력되면 공격자는 커널 메모리 주소를 유출할 수 있고, 이어서
-
CVSS 벡터 ↔ 실제 조건 매핑
- AV:L (로컬) → 공격자는 로컬 접근만 필요함.
- AC:L (낮은 난이도) → 타이머 트리거는 일반적인 시스템 부하 조작으로 가능.
- PR:L (저 privileges) → 모듈 언로드 권한이 핵심이며, 이는 CAP_SYS_MODULE 이지만 일부 컨테이너 환경에서는 제한 없이 제공될 수 있음(권한 경계가 흐려짐).
- UI:N (사용자 상호작용 없음) → 자동화된 스크립트로 전 과정 수행 가능.
악용 가능성: 이 취약은 AV:L(로컬)·AC:L(낮은 복잡도)·PR:L(저권한)·UI:N(사용자 개입 없음)이라는 CVSS 벡터가 그대로 실제 전제조건으로 이어집니다. 즉, 공격자는 로컬 시스템에 로그인하거나 쉘을 확보하고, fscache 커널 모듈을 삽입·삭제할 수 있는 권한만 있으면 됩니다(보통 root 또는 CAP_SYS_MODULE). 공격 표면은 fscache_cookie_lru_timer를 초기화하는 모듈 로드 경로와, 타이머 리스트에 추가되는 timer_reduce() 호출, 그리고 모듈 제거 시 실행되는 soft‑IRQ 핸들러에 국한됩니다. 성공적인 이용을 위해서는 공격자가 타이머가 현재 CPU의 타이머 리스트에 삽입된 상태에서 rmmod fscache를 수행해 모듈을 언로드해야 하며, 이 시점에 soft‑IRQ가 트리거되면 사용 후 해제(Use‑After‑Free)가 발생합니다. EPSS = 0.00224는 현재까지 관찰된 실제 악용 사례가 거의 없지만, 로컬 권한만으로 재현 가능한 메커니즘이 존재함을 의미하므로 완전히 무시해서는 안 됩니다. KEV에 등재되지 않은 점은 아직 대규모 공격으로 확산되지 않았다는 뜻이며, 이는 난이도가 hard(실제 활용이 제한적)인 평가와 일치합니다.
💥 영향 분석
- 성공 시 커널 메모리 손상으로 전면 권한 상승이 이루어져, 공격자는 루트 및 커널 레벨에서 임의 코드를 실행할 수 있다.
- 시스템 전체가 완전히 장악당하므로, 기밀 데이터 탈취·변조·서비스 중단 등 모든 보안 목표에 대응 가능하다.
🔗 관련 취약점·체이닝
- 동일 유형 (CWE‑416 Use‑After‑Free): 다른 커널 타이머/콜백 관련 UAF(예: CVE‑2023‑xxxx)와 연계해 메모리 레이아웃을 조작하면 재사용된 포인터를 예측하기 쉬워진다.
- 커널 모듈 로드·언로드 권한 우회: CAP_SYS_MODULE 이 제한되지 않은 컨테이너 혹은 특권 계정 탈취(CVE‑2024‑xxxx)와 결합하면, 비특권 사용자가
rmmod fscache를 수행할 수 있다. - KASAN/SMEP bypass: UAF 발생 직후 KASAN 로그를 이용해 커널 주소를 추출하고, SMEP/SMAP 우회 기술(CVE‑2022‑xxxx)과 결합하면 코드 실행이 용이해진다.
🔎 탐지
- 커널 로그에
fscache_cookie_lru_timer혹은__run_timer_base.part.0와 연관된 Oops/KASAN 메시지가 나타나는 경우. - SoftIRQ 처리 중
timer list에 남아 있는 fscache 타이머를 가리키는 스택 트레이스(tmigr_handle_remote_up,handle_softirqs)가 기록될 때 경보 생성. /var/log/kern.log·dmesg에서BUG: unable to handle page fault for address:뒤에fffffbfff...형태의 주소가 반복적으로 나타나는지 모니터링.
🛡️ 완화 방안
- 패치 적용 – 커널 5.17‑6.1.160, 6.2‑6.6.51, 6.7‑6.10.10 에 포함된 최신 보안 업데이트를 즉시 배포하고 재부팅한다.
- 모듈 비활성화 –
fscache가 필요하지 않은 경우CONFIG_FSCACHE=n으로 커널을 재컴파일하거나, 로드된 경우rmmod fscache후/etc/modprobe.d/blacklist.conf에blacklist fscache를 추가한다. - 권한 경계 강화 – CAP_SYS_MODULE 권한을 최소화하고, SELinux/AppArmor 정책으로 비특권 프로세스의 모듈 로드·언로드를 차단한다.
- 모니터링 강화 – 위 탐지 지표를 포함한 실시간 커널 로그 수집(예:
journalctl -k -f) 및 침입 탐지 시스템에 서명 추가.
다중 소스에서 일관성이 확인됐으며(교차검증), EPSS 0.00224와 CVSS 7.8을 고려한 우선순위 결정 결과 이번 주 내 패치·완화 작업이 권장됩니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00224 · exploit=hard · in_scope=None