[분석가] 분석 — CVE-2024-57917
A race condition in the Linux kernel's cpumap printing logic allows local users to trigger memory inconsistencies via kvasprintf, requiring a kernel update to the patched versions.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00212 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: kvasprintf() 함수가 문자열 길이를 계산하는 단계와 실제 버퍼에 포맷팅을 수행하는 단계 사이에서 core_cpumask 값이 변경될 때 발생합니다. 이는 전형적인 Time-of-Check to Time-of-Use (TOCTOU) Race Condition 결함입니다.
(2) 공격 단계:
- 정찰: 시스템의 CPU 토폴로지 정보 접근 권한 확인.
- 초기접근: 로컬 쉘 권한 획득 (PR:L).
- 실행:
/sys/devices/system/cpu/하위의core_siblings_list등 CPU 맵 출력 파일을 반복적으로 읽어kvasprintf()를 트리거함과 동시에, 다른 스레드에서 CPU 마스크를 수정하여 길이 불일치를 유도. - 영향: 커널 내
WARNING발생 및 추정: 메모리 불일치로 인한 시스템 불안정성 유발.
(3) 공격 표면: Linux Kernel의 CPU topology 관련 가상 파일 시스템(sysfs) 엔드포인트.
(4) CVSS 벡터 연결: - AV:L (Local): 로컬 사용자 권한 필요.
- AC:L (Low): 특정 조건(Race Condition)이 필요하나 공격 경로가 단순함.
- PR:L (Low): 일반 사용자 권한으로 실행 가능.
- UI:N (None): 사용자 상호작용 불필요.
악용 가능성: 본 취약점은 Linux kernel의 topology 구성 요소에서 cpumap 출력 시 발생하는 메모리 관리 및 문자열 처리 오류로, 공격 난이도는 Hard로 평가됩니다. CVSS 벡터상 AV:L/PR:L 조건에 따라 공격자는 이미 시스템에 낮은 권한(Low Privilege)으로 접근한 상태여야 하며, 로컬 환경에서만 트리거가 가능합니다. 구체적인 공격 표면은 /sys/devices/system/cpu/ 하위의 core_siblings_list와 같은 kernfs 기반 인터페이스이며, 해당 엔드포인트를 읽는 과정에서 kvasprintf() 함수 내의 버퍼 크기 불일치로 인한 WARNING이 발생합니다. EPSS 수치가 0.00212로 매우 낮고 KEV에 등재되지 않은 점은 현재까지 야생(In-the-wild)에서의 실제 악용 사례가 관측되지 않았음을 시사하며, 이는 이론적 취약점과 실질적 위협 사이에 간극이 큼을 의미합니다. 결과적으로 낮은 권한의 사용자가 커널 내부의 특정 상태를 유도하여 시스템 불안정성을 초래할 가능성은 있으나, 복잡한 트리거 조건으로 인해 즉각적인 원격 코드 실행이나 권한 상승으로 이어질 악용 가능성은 낮습니다.
💥 영향 분석
(1) 기술적 위험: kvasprintf() 내에서 계산된 길이와 실제 작성된 길이의 불일치로 인해 커널 경고(WARNING)가 발생하며, 추정: 메모리 오염이나 커널 패닉으로 인한 시스템 가용성 상실(DoS) 가능성이 있습니다.
(2) 비즈니스 영향:
- 서비스 가용성: 커널 크래시 발생 시 호스트 서버의 모든 서비스 중단.
- 노출 규모: Linux Kernel 5.15 ~ 6.12 버전대 전반에 걸쳐 광범위하게 영향을 미치며, 특히 다중 코어 환경의 서버 인프라에서 리스크가 높습니다.
🔗 관련 취약점·체이닝
(1) 유형 및 패턴: Race Condition $\rightarrow$ Memory Inconsistency $\rightarrow$ Denial of Service (DoS).
(2) 체이닝 가능성: 추정: 이 결함 단독으로는 권한 상승이 어려우나, 커널 메모리 상태를 불안정하게 만든 후 다른 메모리 손상 취약점과 체이닝하여 권한 상승(LPE)을 시도하는 경로가 존재할 수 있습니다.
🔎 탐지
(1) 로그 지표: 커널 링 버퍼(dmesg) 또는 /var/log/syslog 내 kvasprintf+0x121/0x130 및 bitmap_print_to_buf 호출 스택을 포함한 WARNING 메시지.
(2) 탐지 규칙:
- 로직:
dmesg | grep -E "WARNING.*kvasprintf.*bitmap_print_to_buf" - SIEM 쿼리 예시:
process.name == "kworker" AND message contains "kvasprintf" AND message contains "different return values"
(3) 오탐 시나리오 및 튜닝: 하드웨어 설정 변경이나 특정 커널 디버깅 도구 사용 시 유사한 경고가 발생할 수 있습니다.core_siblings_list읽기 작업과 동시 발생하는지 확인하여 필터링합니다.
🛡️ 완화 방안
- 즉시(긴급 차단): 비특권 사용자의
/sys/devices/system/cpu/내 토폴로지 파일 접근 권한을 제한합니다. (난이도: 낮음 / 영향: 일부 모니터링 도구 오작동 가능성 / 검증:ls -l로 권한 확인) - 단기(완화): 시스템 리소스 제한(
ulimit)을 통해 단일 사용자의 프로세스 및 스레드 생성을 억제하여 Race Condition 유도 확률을 낮춥니다. (난이도: 보통 / 영향: 애플리케이션 성능 저하 가능성 / 검증:ulimit -a확인) - 근본(해결): 영향을 받는 커널 버전을 패치된 버전으로 업데이트합니다.
- 대상: Linux Kernel 5.15.178+, 6.1.126+, 6.6.73+, 6.12.11+ (또는 각 배포판의 최신 보안 업데이트).
- (난이도: 보통 / 영향: 재부팅 필요로 인한 일시적 서비스 중단 / 검증:
uname -r로 버전 확인)
[분석 근거] 본 리포트는 다중 소스 데이터 간 일관성이 확인된 결과를 바탕으로 작성되었습니다. CVSS 7.8의 이론적 심각도에도 불구하고, 실측 EPSS 값이 0.00212(백분위 0.11715)로 매우 낮고 KEV에 등재되지 않았으며 악용 난이도가 'hard'인 점을 근거로 우선순위를 scheduled(이번 주 내)로 결정하였습니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00212 · exploit=hard · in_scope=None