[공격] 분석 — CVE-2026-31485
CVE-2026-31485 is a local use‑after‑free in the fsl_lpspi driver that can cause kernel OOPS and possible privilege escalation; patching the kernel and rebooting are top priority, with temporary driver blacklisting as mitigation.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00131 · 악용난이도 hard
🔍 공격 기법
-
전제 조건
- 로컬 사용자이며
CAP_SYS_RAWIO권한이 있거나/dev/spidev*·/dev/fsl_lpspi장치 파일에 접근 가능한 계정이어야 함 (PR:L → 실제로는 특권 캡을 요구). - 시스템에
spi-fsl-lpspi모듈이 로드돼 있고, DMA 기반 SPI 전송이 진행 중이어야 함.
- 로컬 사용자이며
-
트리거 흐름
- 정찰 –
lsmod | grep fsl_lpspi,/sys/bus/spi/devices/*/driver로 드라이버 존재·바인딩 확인. - 초기 접근 –
open("/dev/spidevX.Y", O_RDWR)후ioctl(fd, SPI_IOC_MESSAGE, &msg)등으로 정상적인 DMA 전송 시작. - 동시 제거 – 동일 세션 혹은 별 프로세스에서
echo spi0 > /sys/bus/spi/drivers/fsl_lpspi/unbind혹은rmmod spi_fsl_lpspi를 수행해fsl_lpspi_remove()호출. - 취약점 발동 –
fsl_lpspi_remove()내부에서 DMA 채널을 동기식 해제하지만, 컨트롤러는devm_spi_register_controller()로 관리돼 실제 언레지스터가 함수 반환 뒤로 연기됨. 진행 중인 DMA 전송이 해제된 후 NULL 포인터를 역참조해 커널 OOPS (Unable to handle kernel NULL pointer dereference at virtual address 0x00000000).
- 정찰 –
-
권한 상승·지속
- 커널 OOPS 직후 재부팅 없이 메모리 손상이 남아 있으면, 후속 UAF/NULL‑deref 활용 혹은 기존 커널 코드 흐름에 삽입된 페이로드 실행으로 루트 권한을 획득할 수 있음 (hard 난이도).
- 공격자는
cap_sys_rawio를 보유한 프로세스(예: root, 특정 서비스)로 위 과정을 자동화해 사용자 개입 없이 지속적인 특권 상승을 달성 가능.
-
CVSS ↔ 실제 조건 매핑
- AV:L → 오직 로컬에서만 발생 (디바이스 파일 접근).
- AC:L → DMA 해제와 모듈 언로드 순서만 맞추면 충분, 복잡한 외부 입력은 필요 없음.
- PR:L → 실제로는
CAP_SYS_RAWIO가 전제되므로 일반 사용자에게는 제한적이며, 권한이 없는 경우 공격이 차단됨. - UI:N → 자동 스크립트로 전 과정 수행 가능.
악용 가능성: 이 취약은 AV:L (로컬)·AC:L (낮은 복잡도)·PR:L (낮은 권한)·UI:N (사용자 개입 없음)이라는 CVSS 벡터가 의미하듯, 로컬 시스템에 접근할 수 있는 일반 사용자라도 특정 조건만 만족하면 공격이 가능합니다. 실제로는 fsl_lpspi_remove() 가 DMA 채널을 해제하는 시점과 동시에 SPI 전송이 진행 중이어야 하며, 이는 rmmod spi_fsl_lpspi 또는 sysfs 의 remove 속성을 통해 드라이버 언로드를 트리거할 수 있는 권한이 필요합니다. 따라서 공격 표면은 /dev/spidevX.Y (전송 시작)와 /sys/bus/platform/devices/.../remove (제거 호출) 두 엔드포인트이며, 파라미터 자체는 별도 검증 없이 DMA 해제 로직에 전달됩니다. EPSS 0.00131이라는 수치는 이 취약이 실제 환경에서 드물게 이용될 가능성을 보여주지만, KEV에 등재되지 않은 점은 현재까지 공개된 활발한 악용 사례가 없음을 의미합니다. 공격 난이도는 “hard” 로 평가되는데, 이는 **특정 Freescale LPSPI 하드웨어가 존재하고, 해당 드라이버
💥 영향 분석
- 커널 OOPS 발생 시 시스템 전체가 패닉·재부팅되어 서비스 가용성이 즉시 중단됩니다.
- 메모리 손상 후 성공적인 특권 상승이 이루어지면 공격자는 루트 권한으로 임의 커널 코드 실행, 파일 탈취·파괴·백도어 설치 등 전면 침해가 가능합니다.
🔗 관련 취약점·체이닝
- CWE‑416 (Use After Free) 가 기본 유형이며, 동일 커널 라인에서 발견된 다른 UAF/NULL‑deref 결함과 연계하면 OOPS 이후 메모리 재배치를 이용한 RCE(예: 기존 커널 힙 오버플로우) 로 이어질 수 있음.
- 추정:
CAP_SYS_RAWIO가 요구되는 점을 활용해 권한 상승 전 단계에서 SUID 바이너리 오용·권한 위임 공격과 결합하면 초기 접근 장벽을 낮출 수 있습니다.
🔎 탐지
dmesg혹은/var/log/kern.log에 “I/O Error in DMA RX” 와 함께 “Unable to handle kernel NULL pointer dereference at virtual address 00000000” 메시지가 기록될 경우.- Call trace에
fsl_lpspi_dma_transfer,fsl_lpspi_transfer_one가 포함된 로그가 나타남. auditd로/dev/spidev*·/dev/fsl_lpspi에 대한ioctl호출 및module_unload이벤트를 감시하고, 비루트 UID 의 접근 시 경보 설정.
🛡️ 완화 방안
- 최우선: 해당 커널 버전에 포함된 패치를 적용하고 시스템을 재부팅한다 (패치 내용:
devm_spi_register_controller()→spi_register_controller(),spi_unregister_controller()추가). - 임시 조치:
/etc/modprobe.d/blacklist.conf에blacklist spi_fsl_lpspi를 추가 후 현재 로드된 모듈을rmmod spi_fsl_lpspi로 언로드한다. - 권한 제한:
/dev/spidev*·/dev/fsl_lpspi파일 권한을600으로 제한하고, 필요 시root:root소유자로 설정한다. - 감시 강화:
auditd규칙으로 위 장치에 대한ioctl, 모듈 언로드 및 디바이스 unbind 이벤트를 실시간 알림하도록 구성한다.
본 보고서는 교차검증된 다중 소스(신뢰도 1.0)와 EPSS 0.00131을 기반으로, “scheduled (이번 주 내)” 우선순위 논리(CVSS 7.8·non‑KEV·hard exploit) 를 적용해 작성되었습니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00131 · exploit=hard · in_scope=None