🇰🇷 한글 설명
Linux 커널의 Intel VT-d IOMMU 드라이버에서 init_dmars() 함수가 실패했을 때 si_domain 메모리가 정리되지 않아 메모리 누수가 발생하는 문제입니다. 이전 커널에서는 iommu_domain 캐시에 객체가 남아 kmem_cache_destroy()에서 경고가 발생했습니다. 해당 오류 경로에서 si_domain을 정리하도록 수정되었습니다.
💡 쉬운 설명
커널의 장치 메모리 관리 기능에서 초기화 실패 시 일부 메모리가 해제되지 않는 결함입니다. 공격자가 이를 악용해 시스템을 멈추게 하거나 불안정하게 만들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iommu/vt-d: Clean up si_domain in the init_dmars() error path
A splat from kmem_cache_destroy() was seen with a kernel prior to
commit ee2653bbe89d ("iommu/vt-d: Remove domain and devinfo mempool")
when there was a failure in init_dmars(), because the iommu_domain
cache still had objects. While the mempool code is now gone, there
still is a leak of the si_domain memory if init_dmars() fails. So
clean up si_domain in the init_dmars() error path.
📍 영향받는 시스템
Intel VT-d IOMMU 기능을 사용하는 Linux 커널 (수정 커밋 ee2653bbe89d 이전 버전 포함, 일부 배포판 패치 버전)
⚔️ 공격 벡터
로컬 사용자 또는 시스템 초기화 실패 상황에서 메모리 누수를 유발해 서비스 거부(자원 고갈)를 일으킬 수 있음
🛡️ 대응 방법
배포판 제공 최신 커널 보안 업데이트를 적용하거나 해당 커널 패치가 포함된 버전으로 업그레이드
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고와 대조해 패치 포함 여부를 확인하고, DMAR 관련 로그에 init 실패 메시지가 있는지 점검합니다.
uname -r && grep -i -E 'DMAR|iommu' /var/log/kern.log 2>/dev/null | tail -n 20