Kestrel
CVE-2024-46786DGX_B· 2026년 7월 30일 PM 02:16

[방어] 분석 — 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 가 파일 시스템 캐시와 연동되는 환경에서는, 캐시 무결성 검증 취약점과 결합해 데이터 변조 공격으로 확장될 가능성이 있습니다.

🔎 탐지

  1. 로그 지표

    • /var/log/kern.log·dmesg 에 “BUG:” 혹은 “Oops:” 메시지가 포함되고, 문자열 fscache_cookie_lru_timer 가 나타나는 경우.
    • audit.loginit_module / delete_module 이벤트에서 module=fscache 가 기록된 시점과 동시에 커널 oops 가 발생하면 연관성 높음.
  2. SIEM 탐지 규칙 예시 (Pseudo‑SQL)

    sql
    1SELECT host, timestamp, message
    2FROM kernel_logs
    3WHERE message ILIKE '%BUG:%fscache_cookie_lru_timer%'
    4 AND timestamp >= NOW() - INTERVAL '5 minutes';
    sql
    1SELECT host, evt.time, evt.syscall, evt.args
    2FROM audit_events AS evt
    3JOIN kernel_logs AS log ON evt.host = log.host
    4 AND ABS(EXTRACT(EPOCH FROM evt.time) - EXTRACT(EPOCH FROM log.timestamp)) < 10
    5WHERE evt.syscall IN ('init_module','delete_module')
    6 AND evt.args ILIKE '%fscache%'
    7 AND log.message ILIKE '%Oops:%fscache%';
  3. 정규식

    • (?i)BUG:.*fscache_cookie_lru_timer
    • (?i)Oops:.*fscache
  4. 오탐 튜닝

    • 일반적인 커널 oops 는 빈번히 발생하므로, 위 규칙은 반드시 fscache 문자열을 포함하도록 제한합니다.
    • 테스트용 모듈(fs-cache-test) 로드 시 발생하는 정상 로그는 화이트리스트에 추가하여 알림을 억제합니다.
  5. 추가 탐지 (옵션)

    • KASAN 활성화 환경에서는 kasan 로그에 “use after free” 가 기록되면 즉시 경보를 생성하도록 설정합니다.

🛡️ 완화 방안

  • 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
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…