🇰🇷 한글 설명
Linux 커널의 dw-edma 드라이버에서 DONE_INT_MASK 및 ABORT_INT_MASK 레지스터를 보호하는 스핀락이 누락되어 발생한 취약점입니다. 여러 DMA 채널이 동시에 해당 레지스터를 수정할 경우 읽기-수정-쓰기 과정에서 경합 조건(Race Condition)이 발생할 수 있습니다.
💡 쉬운 설명
여러 작업이 동시에 하나의 설정 스위치를 조작하려고 할 때, 서로의 동작을 방해하여 시스템 오류를 일으킬 수 있는 문제입니다. 이를 방지하기 위해 한 번에 한 작업만 스위치를 만질 수 있도록 잠금 장치를 추가했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dmaengine: dw-edma: Add spinlock to protect DONE_INT_MASK and ABORT_INT_MASK
The DONE_INT_MASK and ABORT_INT_MASK registers are shared by all DMA
channels, and modifying them requires a read-modify-write sequence.
Because this operation is not atomic, concurrent calls to
dw_edma_v0_core_start() can introduce race conditions if two channels
update these registers simultaneously.
Add a spinlock to serialize access to these registers and prevent race
conditions.
[den: update dw_edma.lock comment]
📍 영향받는 시스템
dw-edma 드라이버를 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
동시에 여러 DMA 채널을 시작하는 작업을 수행하여 경합 조건을 유도하는 로컬 공격
🛡️ 대응 방법
dw-edma 드라이버에 스핀락이 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 보안 업데이트 버전인지 확인