🔍 CVE-2026-93042

8.8
CVSS Score
HIGH
2026-09-17
2026-10-19 10:16
✅ 완료

🇰🇷 한글 설명

Linux 커널의 dw-edma 드라이버에서 DMA 엔진 종료 시 콜백 함수를 호출하는 과정에서 발생하는 취약점입니다. 종료 프로세스 중 미완료된 디스크립터에 대해 콜백이 실행되면 이미 해제된 클라이언트 상태를 참조하여 Use-After-Free가 발생하거나 메모리 누수가 일어날 수 있습니다.

💡 쉬운 설명

데이터 전송을 강제로 중단할 때, 이미 삭제된 메모리 영역을 다시 건드려 시스템이 충돌하거나 보안 문제가 생길 수 있는 오류입니다. 이를 방지하기 위해 중단 시 남은 작업들을 콜백 없이 안전하게 정리하도록 수정되었습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: dmaengine: dw-edma: Terminate all descriptors without callbacks The DMA Engine client documentation says in the "Terminate APIs" section of Documentation/driver-api/dmaengine/client.rst: "No callback functions will be called for any incomplete transfers." dw-edma instead calls vchan_cookie_complete() when a deferred STOP reaches the interrupt handler. This schedules a callback for the active descriptor and leaves other issued or submitted descriptors queued. A late callback after dmaengine_terminate_sync() can dereference client state that has already been freed, while leftover descriptors may later restart into reused buffers or leak. Move all issued and submitted descriptors to the terminated list whenever termination completes. For a pending STOP, do this from both the DONE and ABORT paths. Complete their cookies in order without scheduling callbacks. A STOP can remain pending until the running transfer raises an interrupt. Make device_synchronize() wait for such a pending STOP to complete before releasing terminated descriptors. Reuse it from free_chan_resources(), then release the remaining virt-dma resources. Sleep instead of busy-polling while waiting, and warn if the existing timeout expires.

📍 영향받는 시스템

Linux kernel (dw-edma 드라이버를 사용하는 시스템)

⚔️ 공격 벡터

특정 조건에서 DMA 전송을 강제로 종료(Terminate)시켜 메모리 참조 오류를 유도하는 방식

🛡️ 대응 방법

dw-edma 드라이버의 수정 사항이 반영된 최신 Linux 커널로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel