[공격] 분석 — CVE-2024-56631
A slab-use-after-free vulnerability in the Linux kernel's SCSI generic (sg) driver allows local privilege escalation or system crash, requiring an immediate update to the patched kernel version.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00285 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: sg_release() 함수 내에서 open_rel_lock mutex를 해제하기 전 kref_put(&sfp->f_ref, sg_remove_sfp)가 먼저 호출되는 순서 결함이 핵심임. 참조 횟수가 0이 되면 sg_remove_sfp $\rightarrow$ sg_remove_sfp_usercontext() 경로를 통해 sfp 구조체가 해제되나, 이후 함수가 다시 sfp 또는 sdp를 참조하며 Use-After-Free(UAF)가 발생함.
(2) 공격 단계:
- 정찰:
/dev/sg*디바이스 노드에 대한 접근 권한 확인 및 커널 버전 식별. - 초기접근: 로컬 사용자 계정 확보 (AV:L, PR:L).
- 실행·권한 획득:
sg디바이스를 오픈/클로즈하는 과정을 반복하여 레이스 컨디션을 유도, 해제된sfp메모리 영역을 공격자 제어 데이터로 재할당(Slab Spraying) 후 커널 함수 포인터 조작. - 영향: 임의 커널 메모리 읽기/쓰기를 통한 권한 상승(LPE) 또는 커널 패닉 유도.
(3) 공격 표면: Linux Kernel SCSI Generic (sg) 드라이버 인터페이스 및 관련 디바이스 파일(/dev/sg*).
(4) CVSS 벡터 연결:
- AV:L / PR:L: 로컬 시스템에 로그인한 일반 사용자 권한이 필수적임.
- AC:L: 특수한 환경 설정보다는 커널의 논리적 순서 오류를 이용하므로 공격 복잡도는 낮음.
악용 가능성: 본 취약점은 AV:L 및 PR:L 조건에 따라, 공격자가 이미 시스템 내부에 낮은 권한의 계정으로 접근한 상태에서만 트리거할 수 있는 Local Privilege Escalation(LPE) 경로를 가집니다. 공격 표면은 /dev/sg*와 같은 SCSI generic 장치 파일이며, 특정 시퀀스로 장치를 오픈하고 닫는 과정에서 sg_release() 함수 내의 open_rel_lock 뮤텍스 해제 전 kref_put()이 호출되는 Race Condition을 유도해야 합니다. EPSS 수치가 0.00285로 매우 낮고 KEV에 등재되지 않은 점은, 이 취약점이 이론적인 Use-After-Free(UAF) 결함임에도 불구하고 실제 야생(In-the-wild)에서 무기화된 사례가 드물다는 것을 의미합니다. 다만, AC:L인 만큼 트리거 조건 자체는 단순하나, 커널 메모리의 Slab 레이아웃을 정밀하게 제어하여 유효한 페이로드를 배치해야 하므로 실질적인 공격 난이도는 'Hard'로 판정됩니다. 결과적으로 공격자는 Local 접근 권한을 확보한 후, SCSI 장치 인터페이스를 통해 커널 메모리 오염을 시도함으로써 권한 상승을 꾀하는 체인을 구성하게 됩니다.
💥 영향 분석
(1) 기술적 위험: Memory-Corruption 유형으로, 성공 시 커널 모드에서의 임의 코드 실행을 통한 루트 권한 획득(Privilege Escalation) 또는 시스템 전체의 가용성을 파괴하는 DoS(Kernel Panic)가 가능함.
(2) 비즈니스 영향: 서버 호스트의 완전한 장악으로 인한 데이터 유출 및 내부망 횡적 이동의 교두보로 활용될 수 있음. 다만, EPSS 0.00285(백분위 0.20783)는 실제 야생에서의 악용 가능성이 현재 매우 낮음을 의미하며, 이론적 심각도(CVSS 7.8)와 실측 위험 간의 괴리가 큼.
🔗 관련 취약점·체이닝
- 추정:
KASLR우회를 위한 정보 유출(Information Leak) 취약점과 체이닝될 가능성이 높음. UAF를 통해 커널 주소를 읽어낼 수 있다면, 이후 정교한 ROP(Return Oriented Programming) 체인을 구성하여 권한 상승을 달성하는 패턴으로 이어질 것임. - 추정:
Slab Spraying기법을 통해 해제된 메모리 슬롯을 빠르게 점유하는 다른 커널 객체 할당 결함과 조합될 수 있음.
🔎 탐지
(1) 로그 지표: KASAN이 활성화된 환경에서는 BUG: KASAN: slab-use-after-free in lock_release 메시지가 dmesg 또는 /var/log/syslog에 기록됨.
(2) 탐지 규칙:
- 로직: 동일 프로세스가 매우 짧은 시간 내에
/dev/sg*디바이스를 반복적으로 open/close 하는 비정상적 패턴 감시. - 쿼리 예시:
process_name == "unknown" AND syscall == "close" AND target_file == "/dev/sg*" AND frequency > threshold
(3) 오탐 시나리오: SCSI 진단 도구 또는 특정 스토리지 관리 소프트웨어가 빈번하게 디바이스를 제어할 때 발생 가능. 화이트리스트 기반의 프로세스 필터링으로 튜닝 필요.
🛡️ 완화 방안
- 즉시(긴급 차단):
/dev/sg*디바이스 노드의 접근 권한을root로 제한하여 일반 사용자의 접근을 차단 (난이도: 하 / 영향: 일부 스토리지 유틸리티 작동 불가). - 단기(완화): 불필요한 경우
sg커널 모듈을 언로드(modprobe -r sg) 처리 (난이도: 하 / 영향: SCSI 제네릭 기능 사용 불가). - 근본(해결): Linux Kernel 6.6.67, 6.12.6 또는 해당 수정 사항이 백포팅된 배포판 버전으로 업데이트. 다중 소스 교차검증 결과 일관성이 확인되었으며 규칙 기반 우선순위에 따라 이번 주 내 패치 적용 권고 (난이도: 중 / 영향: 시스템 재부팅 필요).
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00285 · exploit=hard · in_scope=None