🇰🇷 한글 설명
Linux 커널 AMD IOMMU의 동시성 제어 취약점으로, TLB invalidation 중 cmd_sem_val이 spinlock 외부에서 증가되어 CMD_COMPL_WAIT 명령이 순서 보장 없이 큐에 들어갑니다. 이로 인해 completion wait가 타임아웃되는 문제가 발생하며, cmd_sem_val 증가를 iommu->lock 내부로 이동하여 수정됩니다.
💡 쉬운 설명
커널에서 메모리 가상화 시스템(IOMMU)의 대기 메커니즘이 여러 작업이 동시에 실행될 때 순서가 뒤바뀌어 제대로 작동하지 않습니다. 이를 올바른 순서 유지로 수정하는 패치입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iommu/amd: serialize sequence allocation under concurrent TLB invalidations
With concurrent TLB invalidations, completion wait randomly gets timed out
because cmd_sem_val was incremented outside the IOMMU spinlock, allowing
CMD_COMPL_WAIT commands to be queued out of sequence and breaking the
ordering assumption in wait_on_sem().
Move the cmd_sem_val increment under iommu->lock so completion sequence
allocation is serialized with command queuing.
And remove the unnecessary return.
📍 영향받는 시스템
AMD IOMMU 기능을 사용하는 Linux 커널 (특히 가상화 환경)
⚔️ 공격 벡터
로컬, IOMMU를 활용하는 워크로드에서 concurrent TLB invalidation 유발
🛡️ 대응 방법
최신 Linux 커널 버전 또는 백포트된 보안 패치 적용
🔧 검증 코드
커널 버전이 5.x 이상이고 IOMMU가 활성화되어 있는지 확인하고, 커널 패치 버전 확인 필요
uname -r | grep -q '^5\|^6' && cat /proc/cmdline | grep -q 'iommu' && echo 'IOMMU enabled' || echo 'Check kernel version and IOMMU status'