[방어] 분석 — CVE-2026-31485
CVE-2026-31485 is a local use‑after‑free in the fsl_lpspi driver that can cause kernel crashes or privilege escalation; immediate mitigation is to blacklist the driver while applying the upstream kernel patch.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00131 · 악용난이도 hard
🔍 공격 기법
Linux 커널의 spi-fsl-lpspi 드라이버에서 devm_spi_register_controller() 로 등록된 SPI 컨트롤러가 fsl_lpspi_remove() 실행 중 DMA 채널을 해제하면서, 아직 진행 중인 SPI 전송이 NULL 포인터를 역참조하게 됩니다. 이 과정은 커널 패닉을 유발하고 메모리 손상을 통해 로컬 권한 상승까지 이어질 수 있습니다. 공격자는 해당 하드웨어에 접근 가능한 로컬 사용자라면, 악의적인 SPI 전송을 트리거하여 커널 충돌 혹은 임의 코드 실행을 시도할 수 있습니다.
악용 가능성: 이 취약점은 AV:L 로 표시되므로 공격자는 로컬에서만 악용할 수 있습니다. AC:L 은 exploit complexity 가 낮아, 단순히 SPI 전송을 진행 중인 상태에서 드라이버 제거를 유발하면 되므로 별도의 특수 조건이 필요하지 않습니다. PR:L 은 요구되는 권한이 낮아, 해당 디바이스 노드(/dev/spidev* 등)에 접근 가능한 비특권 사용자도 트리거할 수 있습니다. UI:N 은 사용자의 직접적인 입력을 요구하지 않으므로 자동화된 스크립트로도 재현 가능합니다. EPSS = 0.00131 은 현재 관측된 실제 악용 사례가 매우 적지만 완전히 없는 것은 아니며, KEV 에 등재되지 않은 점은 아직 공개된 활성 Exploit 이 존재하지 않음을 의미합니다. 공격 표면은 fsl_lpspi 드라이버가 로드되고 DMA 전송이 가능한 Linux‑kernel 기반 시스템으로 제한되며, 주로 임베디드 장치의 SPI 컨트롤러가 노출된 경우에 해당됩니다. 트리거 조건은 동시에 진행 중인 DMA‑기반 SPI 전송 도중 드라이버가 fsl_lpspi_remove() 로 해제될 때 발생하는 NULL 포인터 역참조이며, 이는 커널 패닉을 일으켜 서비스 거부(DoS) 상태로 만들 수 있습니다.
💥 영향 분석
- 가용성: NULL 포인터 dereference 로 인한 커널 패닉 → 시스템 전체 다운.
- 무결성/기밀성: 메모리 손상을 이용해 커널 주소 공간을 조작하면, 루트 권한으로 임의 코드 실행이 가능하여 데이터 변조·탈취가 발생할 수 있음.
- 범위: 로컬 공격(AV:L)이며, 프로세스 권한이 제한된 일반 사용자도 트리거 가능하므로 내부 위협에 특히 위험함.
🔗 관련 취약점·체이닝
추정: 동일한 use‑after‑free (CWE‑416) 패턴은 다른 SPI 혹은 DMA 기반 드라이버에서도 보고된 바 있어, 공격자는 이를 연계해 여러 디바이스에서 연속적인 커널 메모리 손상을 시도할 수 있습니다. 또한 DMA 재구성 시 레이스 컨디션(CWE‑362)과 결합될 경우, 초기화 단계에서 권한 상승으로 이어지는 체이닝 가능성이 존재합니다.
🔎 탐지
-
로그 지표
/var/log/kern.log또는dmesg에 기록되는"I/O Error in DMA RX"문자열."Unable to handle kernel NULL pointer dereference at virtual address 00000000"메시지와 함께 나타나는 스택 트레이스(fsl_lpspi_dma_transfer,fsl_lpspi_transfer_one).
-
SIEM 쿼리 예시 (예: Elastic Stack, Splunk)
-
text1source:"/var/log/kern.log" AND message:*\"I/O Error in DMA RX\"* AND message:*\"fsl_lpspi_dma_transfer\"*
-
12. ```regex 2^.*Unable to handle kernel NULL pointer dereference at virtual address 0{16}.*$-
text1source:"/var/log/kern.log" | regex "fsl_lpspi_(remove|probe)" AND message:*\"devm_spi_register_controller\"
1 2- **오탐 튜닝** 3- 다른 SPI 드라이버에서 발생하는 정상적인 DMA 오류는 `driver_name` 필드가 `fsl_lpspi` 가 아닌 경우를 제외하도록 조건을 추가. 4- 커널 업데이트 시 일시적으로 나타나는 초기화 로그(`I/O Error in DMA RX`)는 `timestamp` 기반으로 재부팅 직후 5분 이내에 발생하는 경우만 경보로 승격. 5 6## 🛡️ 완화 방안 7- **즉시(긴급 차단)** 8- 해당 드라이버를 로드하지 않도록 `/etc/modprobe.d/blacklist.conf`에 `blacklist fsl_lpspi` 를 추가하고, 시스템 재부팅 후 `lsmod | grep fsl_lpspi` 로 비활성화 여부 확인. 9- *구현 난이도*: 낮음 / *운영 영향*: 해당 SPI 버스 사용 불가 → 하드웨어 의존 서비스 중단 가능. 10- *검증*: `dmesg`에 “fsl_lpspi: module not found” 메시지 유무 확인.11 12- **단기(완화)** 13- 커널 옵션 `CONFIG_SPI_FSL_LPSPI=n` 로 재컴파일하거나, 현재 실행 중인 커널에 대해 backport 패치를 적용 (패치 파일은 Linux kernel.org의 `stable` 브랜치에서 제공). 14- *구현 난이도*: 중간 / *운영 영향*: 재부팅 필요, 일부 SPI 디바이스 일시 중단. 15- *검증*: 패치 적용 후 동일 오류 메시지 재발 여부 테스트 (예: 의도적인 SPI 전송 실행).16 17- **근본(해결)** 18- 교차 검증된 다중 소스에 따라 이미 패치가 포함된 커널 버전으로 업그레이드한다. 권장 최소 버전은 19- `5.10.254` 이상, `5.15.204` 이상, `6.1.169` 이상, `6.2.132` 이상 등(각 제품 라인별 최신 stable). 20- *구현 난이도21 22## ⚖️ 위험도 / 우선순위23- 조치: scheduled (이번 주 내)24- 근거: CVSS=7.8 · non-KEV · EPSS=0.00131 · exploit=hard · in_scope=None