🔍 CVE-2023-52517

7.8
CVSS Score
HIGH
2024-03-02
2026-08-04 10:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 sun6i SPI 드라이버에서 DMA 모드 사용 시 데이터 수신 완료 인터럽트와 FIFO 비우기 작업 간의 레이스 컨디션이 발생합니다. 이로 인해 DMA 엔진과 드라이버가 동시에 FIFO를 읽으려 시도하여 데이터가 손상되거나 버퍼 포인터가 올바르게 조정되지 않는 문제가 있습니다.

💡 쉬운 설명

데이터를 전송하는 과정에서 두 개의 작업이 동시에 같은 데이터를 읽으려고 경쟁하여 데이터가 깨지는 현상입니다. 이로 인해 장치로부터 받은 정보가 실제와 다르게 잘못 전달될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: spi: sun6i: fix race between DMA RX transfer completion and RX FIFO drain Previously the transfer complete IRQ immediately drained to RX FIFO to read any data remaining in FIFO to the RX buffer. This behaviour is correct when dealing with SPI in interrupt mode. However in DMA mode the transfer complete interrupt still fires as soon as all bytes to be transferred have been stored in the FIFO. At that point data in the FIFO still needs to be picked up by the DMA engine. Thus the drain procedure and DMA engine end up racing to read from RX FIFO, corrupting any data read. Additionally the RX buffer pointer is never adjusted according to DMA progress in DMA mode, thus calling the RX FIFO drain procedure in DMA mode is a bug. Fix corruptions in DMA RX mode by draining RX FIFO only in interrupt mode. Also wait for completion of RX DMA when in DMA mode before returning to ensure all data has been copied to the supplied memory buffer.

📍 영향받는 시스템

sun6i SPI 드라이버를 사용하는 Linux 커널 기반 시스템

⚔️ 공격 벡터

로컬 시스템에서 특정 SPI 장치를 통해 DMA 모드로 데이터를 수신할 때 데이터 무결성 손상 유발

🛡️ 대응 방법

SPI 드라이버의 DMA 모드 시 FIFO 비우기 로직을 수정하고 DMA 완료를 대기하도록 커널 패치 적용

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel