🇰🇷 한글 설명
Linux 커널의 IOMMU 구현에서 장치 복구 중 발생하는 동시 도메인 연결 처리 오류로 인해 WARN_ON 및 Use-After-Free(UAF) 취약점이 발생할 수 있습니다. IOMMU_SET_DOMAIN_MUST_SUCCEED 플래그를 적절히 처리하지 못해 장치 리셋 과정에서 메모리 관리 오류가 발생할 수 있는 문제입니다.
💡 쉬운 설명
컴퓨터 부품이 재시작되는 과정에서 시스템이 메모리를 관리하는 방식에 오류가 생겨 발생할 수 있는 문제입니다. 이 오류를 방치하면 시스템이 갑자기 멈추거나 보안상 위험한 상태가 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iommu: Fix WARN_ON in __iommu_group_set_domain_nofail() due to reset
In __iommu_group_set_domain_internal(), concurrent domain attachments are
rejected when any device in the group is recovering. This is necessary to
fence concurrent attachments to a multi-device group where devices might
share the same RID due to PCI DMA alias quirks, but triggers the WARN_ON in
__iommu_group_set_domain_nofail().
Other IOMMU_SET_DOMAIN_MUST_SUCCEED callers in detach/teardown paths, such
as __iommu_group_set_core_domain and __iommu_release_dma_ownership, should
not be rejected, as the domain would be freed anyway in these nofail paths
while group->domain is still pointing to it. So pci_dev_reset_iommu_done()
could trigger a UAF when re-attaching group->domain.
Honor the IOMMU_SET_DOMAIN_MUST_SUCCEED flag, allowing the callers through
the group->recovery_cnt fence, so as to update the group->domain pointer.
Instead add a gdev->blocked check in the device iteration loop, to prevent
any concurrent per-device detachment.
📍 영향받는 시스템
Linux Kernel (IOMMU 관련 모듈 사용 시스템)
⚔️ 공격 벡터
특정 PCI 장치의 리셋 및 IOMMU 도메인 재연결 과정을 유도하여 메모리 오류 유발
🛡️ 대응 방법
IOMMU 관련 패치가 적용된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인