[공격] 분석 — CVE-2024-57979
A Use-After-Free vulnerability in the Linux kernel PPS subsystem allows local attackers to cause system instability or potentially escalate privileges, requiring a kernel update to patched versions.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00256 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: ntpd 및 gpsd와 같은 PPS(Pulse Per Second) 관련 서비스가 동작하는 환경에서, 프로세스가 종료(sys_exit)될 때 PPS 장치 리소스의 참조 횟수 관리 오류로 인해 이미 해제된 메모리에 접근하는 Use-After-Free(UAF)가 발생함.
(2) 공격 단계:
* 정찰: 대상 시스템에 gpsd, ntpd 등 PPS 관련 데몬이 구동 중인지 확인 및 커널 버전 확인.
* 초기 접근: 로컬 쉘 권한 확보 (AV:L, PR:L).
* 실행/권한 획득: PPS 장치를 사용하는 프로세스를 생성하고 특정 조건(예: 시스템 재부팅 시점 또는 강제 종료)에서 kobject_put()이 초기화되지 않은 객체에 호출되도록 유도 $\rightarrow$ 커널 메모리 오염 $\rightarrow$ 추정: 함수 포인터 덮어쓰기를 통한 임의 코드 실행 및 권한 상승.
* 영향: 커널 패닉(DoS) 또는 루팅 권한 획득.
(3) 공격 표면: Linux Kernel PPS subsystem, kobject 관리 로직, /dev/pps* 장치 인터페이스.
(4) CVSS 벡터 연결:
* AV:L / PR:L: 로컬 계정 권한이 필수적이며 네트워크를 통한 직접 공격은 불가능함.
* AC:L / UI:N: 사용자 상호작용 없이 특정 서비스(gpsd 등)가 구동 중이라면 낮은 난이도로 트리거 가능.
악용 가능성: 본 취약점은 Linux kernel의 PPS(Pulse Per Second) 서브시스템에서 발생하는 Use-After-Free(UAF) 결함으로, 공격 난이도는 Hard로 평가됩니다. AV:L 및 PR:L 벡터가 가리키듯, 공격자는 이미 시스템에 로그인하여 로컬 쉘 권한을 확보한 상태여야 하며, 커널 내부의 특정 객체 생명주기를 조작할 수 있는 특권 수준의 접근이 전제됩니다. EPSS 수치가 0.00256으로 매우 낮고 KEV에 등재되지 않은 점은, 이 취약점이 원격에서 즉각적으로 악용될 가능성보다는 특정 하드웨어 구성(PPS 지원 보드)과 특정 서비스(gpsd, ntpd)가 구동되는 환경이라는 좁은 공격 표면에 국한됨을 의미합니다. 실제 공격 표면은 PPS 장치 파일 및 관련 커널 인터페이스이며, sys_exit() 과정에서 발생하는 객체 해제 타이밍의 레이스 컨디션을 트리거하여 kobject_put() 호출 시점에 이미 해제된 메모리를 참조하게 만드는 것이 핵심입니다. 따라서 단순한 크래시 유발을 넘어 권한 상승(LPE)으로 이어지려면, 커널 힙 메모리 레이아웃을 정교하게 제어하는 Heap Spraying 기법과 결합하여 해제된 영역에 공격자의 데이터를 배치하는 고도의 체이닝 과정이 필수적입니다. 결과적으로 이론적인 심각도와 별개로, 실제 악용을 위해서는 매우 특수한 환경 조건과 커널 메모리 조작 능력이 동시에 요구되는 사례입니다.
💥 영향 분석
(1) 기술적 위험:
* 시스템 장악: 커널 메모리 오염을 통해 권한 상승(LPE) 시 루트 권한 획득 가능.
* 서비스 중단: kobject_put() 오류로 인한 Kernel Panic 발생 시 시스템 전체 가용성 상실.
(2) 비즈니스 영향: PPS를 사용하는 정밀 시간 동기화 서버, GPS 기반 임베디드 장치(예: Raspberry Pi 등)의 가용성 저하 및 관리자 권한 탈취로 인한 데이터 무결성 훼손.
🔗 관련 취약점·체이닝
- 추정 체이닝 경로:
Information Leak (KASLR 우회)$\rightarrow$CVE-2024-57979 (UAF/Memory Corruption)$\rightarrow$Privilege Escalation. - 유형 수준 분석: UAF 취약점 특성상, 힙 스프레이(Heap Spraying) 기법을 통해 해제된 메모리 영역을 공격자가 제어하는 데이터로 채운 뒤, 커널이 이를 실행하게 만드는 전형적인 Memory-Corruption 체인이 적용될 수 있음.
🔎 탐지
(1) 로그 지표: dmesg 또는 /var/log/kern.log에서 kobject: '(null)' ... is not initialized, yet kobject_put() is being called 문구 및 WARNING: CPU: ... PID: ... Comm: gpsd 형태의 커널 스택 트레이스 확인.
(2) 탐지 규칙:
* Logic: grep -E "kobject: '\(null\)' .* kobject_put\(\)" /var/log/syslog
* SIEM Query (Pseudo): index=linux_kernel message="*kobject_put*" AND message="*is not initialized*"
(3) 오탐 시나리오: 단순한 드라이버 버그로 인한 일회성 크래시일 수 있음. 특정 프로세스(gpsd, ntpd)의 종료 시점과 반복적으로 발생하는지 상관관계를 분석하여 튜닝 필요.
🛡️ 완화 방안
- 즉시(긴급 차단): PPS 관련 서비스(
gpsd,ntpd) 중 불필요한 서비스 중지 및 실행 권한 제한. (난이도: 저 / 영향: 시간 동기화 정밀도 저하 / 검증:systemctl status gpsd) - 단기(완화): 일반 사용자의
/dev/pps*장치 접근 권한을 제거하여 공격 표면 축소. (난이도: 저 / 영향: PPS 이용 앱 동작 불가 / 검증:ls -l /dev/pps*) - 근본(해결): 영향 제품 범위(Linux Kernel 3.2.40 ~ 6.12.13)에 해당하는 커널을 최신 패치 버전으로 업데이트. (난이도: 중 / 영향: 시스템 재부팅 필요 / 검증:
uname -r확인 및 패치 버전 대조)
[파이프라인 근거] 본 분석은 다중 소스에서 일관성이 확인된 사실을 기반으로 하며, 실측 EPSS(0.00256)가 매우 낮고 KEV에 등재되지 않았으며 AV:L 조건임을 고려하여 우선순위를 scheduled로 결정함. 이는 이론적 심각도(CVSS 7.8)보다 실제 악용 가능성이 낮음을 반영한 결과임.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00256 · exploit=hard · in_scope=None