[방어] 분석 — CVE-2024-46786
CVE‑2024‑46786 is a local use‑after‑free in the Linux fscache timer that can lead to kernel compromise, and the top priority is to disable the fscache module immediately while scheduling kernel patches for all affected versions.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00224 · 악용난이도 hard
🔍 공격 기법
fscache 모듈이 로드된 상태에서 timer_reduce() 가 호출되면 fscache_cookie_lru_timer 가 현재 CPU 의 타이머 리스트에 삽입됩니다. 그 후 관리자가 혹은 자동화된 스크립트가 rmmod fscache 로 모듈을 제거하면, 이미 해제된 타이머 구조체를 soft‑IRQ 컨텍스트에서 참조하게 되어 페이지 폴트가 발생하고 커널 권한을 탈취할 수 있습니다. 공격자는 로컬 사용자 권한만으로도 해당 순서를 실행하면 됩니다.
악용 가능성: 이 취약점은 CVSS 벡터가 AV:L/AC:L/PR:L/UI:N 으로 정의되어 있어, 로컬 시스템에 접근할 수 있는 저권한 사용자라면 복잡도 없이 공격을 시도할 수 있다는 점을 의미합니다. 그러나 실제로는 fscache 모듈의 타이머 구조체를 조작하고 커널 소프트IRQ 단계에서 Use‑After‑Free가 발생하도록 해야 하므로, 커널 내부 동작과 타이머 리스트 관리에 대한 깊은 이해가 필요해 ‘hard’ 등급으로 평가됩니다. EPSS 0.00224 라는 수치는 현재 관찰된 실제 악용 가능성이 0.224% 수준에 불과함을 보여주며, KEV(키 이슈 취약점) 리스트에도 포함되지 않아 아직 광범위한 공격 사례가 보고되지 않았음을 뒷받침합니다. 공격자는 fscache_cookie_lru_timer가 활성화된 상태에서 timer_reduce() 를 호출하고, 그 직후 모듈을 언로드하여 커널 소프트IRQ에서 메모리 해제 후 접근이 일어나도록 트리거해야 합니다. 따라서 노출되는 공격 표면은 fscache 모듈이 로드된 Linux 커널과 해당 타이머가 관리되는 CPU‑별 timer list이며, 이들에 대한 직접적인 조작 권한을 가진 프로세스(예: 로컬 사용자 계정에서 실행되는 악성 LKM)만이 활용할 수 있습니다. 결과적으로 로컬 접근 권한은 충분하지만, 커
💥 영향 분석
- 성공 시 공격자는 커널 레벨에서 임의 코드를 실행하여 루트 권한을 획득합니다.
- 시스템 전체에 대한 파일·프로세스·네트워크 제어가 가능해지며, 영구적인 백도어 설치 및 데이터 유출 위험이 발생합니다.
🔗 관련 취약점·체이닝
- 동일한 CWE‑416(Use‑After‑Free) 패턴을 가진 타이머 기반 커널 버그와 연계될 경우, 기존 로컬 권한 상승 루트를 보강하거나 지속적인 권한 유지 메커니즘을 구축할 수 있습니다.
- fscache 가 파일 시스템 캐시와 연동되는 환경에서는, 캐시 무결성 검증 취약점과 결합해 데이터 변조 공격으로 확장될 가능성이 있습니다.
🔎 탐지
-
로그 지표
/var/log/kern.log·dmesg에 “BUG:” 혹은 “Oops:” 메시지가 포함되고, 문자열fscache_cookie_lru_timer가 나타나는 경우.audit.log의init_module/delete_module이벤트에서module=fscache가 기록된 시점과 동시에 커널 oops 가 발생하면 연관성 높음.
-
SIEM 탐지 규칙 예시 (Pseudo‑SQL)
sql1SELECT host, timestamp, message2FROM kernel_logs3WHERE message ILIKE '%BUG:%fscache_cookie_lru_timer%'4 AND timestamp >= NOW() - INTERVAL '5 minutes';sql1SELECT host, evt.time, evt.syscall, evt.args2FROM audit_events AS evt3JOIN kernel_logs AS log ON evt.host = log.host4 AND ABS(EXTRACT(EPOCH FROM evt.time) - EXTRACT(EPOCH FROM log.timestamp)) < 105WHERE evt.syscall IN ('init_module','delete_module')6 AND evt.args ILIKE '%fscache%'7 AND log.message ILIKE '%Oops:%fscache%'; -
정규식
(?i)BUG:.*fscache_cookie_lru_timer(?i)Oops:.*fscache
-
오탐 튜닝
- 일반적인 커널 oops 는 빈번히 발생하므로, 위 규칙은 반드시
fscache문자열을 포함하도록 제한합니다. - 테스트용 모듈(
fs-cache-test) 로드 시 발생하는 정상 로그는 화이트리스트에 추가하여 알림을 억제합니다.
- 일반적인 커널 oops 는 빈번히 발생하므로, 위 규칙은 반드시
-
추가 탐지 (옵션)
- KASAN 활성화 환경에서는
kasan로그에 “use after free” 가 기록되면 즉시 경보를 생성하도록 설정합니다.
- KASAN 활성화 환경에서는
🛡️ 완화 방안
- auditd 감시 규칙 적용 –
auditctl -a exit,always -S init_module -F name=fscache와-a exit,always -S delete_module -F name=fscache로 모듈 로드·제거 이벤트를 실시간 알림.
구현 난이도: ★★☆ (audit 설정 및 로그 파이프라인 연동) - KASAN 및 debugfs 타이머 리스트 검사 –
echo 1 > /sys/kernel/debug/kasan으로 KASAN 활성화하고, cron 작업으로cat /proc/timer_list | grep fscache를 주기적으로 실행해 비정상 타이머 존재 여부를 모니터링합니다.
구현 난이도: ★★☆ (스크립트 배포·cron 등록)
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00224 · exploit=hard · in_scope=None