🇰🇷 한글 설명
Linux 커널의 rockchip-sfc SPI 드라이버에서 DMA-API 사용 방식의 오류가 발견되었습니다. 기존에 virt_to_phys()를 사용하여 DMA 주소를 직접 계산하던 방식이 DMA-API 규약을 위반하여 커널 경고 및 시스템 불안정을 유발할 수 있었습니다.
💡 쉬운 설명
컴퓨터 부품이 메모리에 직접 접근할 때 사용하는 규칙을 지키지 않아 발생하는 문제입니다. 이 규칙을 어기면 시스템이 갑자기 멈추거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
spi: rockchip-sfc: Fix DMA-API usage
Use DMA-API dma_map_single() call for getting the DMA address of the
transfer buffer instead of hacking with virt_to_phys().
This fixes the following DMA-API debug warning:
------------[ cut here ]------------
DMA-API: rockchip-sfc fe300000.spi: device driver tries to sync DMA memory it has not allocated [device address=0x000000000cf70000] [size=288 bytes]
WARNING: kernel/dma/debug.c:1106 at check_sync+0x1d8/0x690, CPU#2: systemd-udevd/151
Modules linked in: ...
Hardware name: Hardkernel ODROID-M1 (DT)
pstate: 604000c9 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : check_sync+0x1d8/0x690
lr : check_sync+0x1d8/0x690
..
Call trace:
check_sync+0x1d8/0x690 (P)
debug_dma_sync_single_for_cpu+0x84/0x8c
__dma_sync_single_for_cpu+0x88/0x234
rockchip_sfc_exec_mem_op+0x4a0/0x798 [spi_rockchip_sfc]
spi_mem_exec_op+0x408/0x498
spi_nor_read_data+0x170/0x184
spi_nor_read_sfdp+0x74/0xe4
spi_nor_parse_sfdp+0x120/0x11f0
spi_nor_sfdp_init_params_deprecated+0x3c/0x8c
spi_nor_scan+0x690/0xf88
spi_nor_probe+0xe4/0x304
spi_mem_probe+0x6c/0xa8
spi_probe+0x94/0xd4
really_probe+0xbc/0x298
...
📍 영향받는 시스템
Rockchip 프로세서를 사용하는 Linux 커널 기반 시스템 (예: Hardkernel ODROID-M1)
⚔️ 공격 벡터
로컬 공격자가 특정 SPI 장치 조작을 통해 커널 메모리 관리 오류를 유발하여 시스템 불안정성을 초래할 수 있음
🛡️ 대응 방법
DMA-API를 올바르게 사용하는 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인