🇰🇷 한글 설명
Linux 커널의 ACPI PCI 구현에서 root 객체가 해제될 때 driver_data를 초기화하지 않아 발생하는 Use-After-Free 취약점입니다. hot-add 실패나 root 제거 시 dangling pointer가 남게 되어, 이후 acpi_pci_find_root() 호출 시 잘못된 메모리 참조를 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품을 연결하거나 제거할 때, 사용이 끝난 메모리 주소를 지우지 않고 남겨두어 발생하는 문제입니다. 이로 인해 시스템이 이미 사라진 정보를 다시 참조하려다 오류가 발생하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ACPI: PCI: Clear driver_data on all paths that free the acpi_pci_root
acpi_pci_root_add() assigns the freshly allocated root to
device->driver_data before dmar_device_add() and pci_acpi_scan_root().
Both failure paths reach the end: label where root is kfree()'d, but
only the pci_acpi_scan_root() path clears driver_data first.
When dmar_device_add() fails during a hot-add, root is freed while
device->driver_data still points at it. The ACPI core does not clear
driver_data on attach failure, so a later acpi_pci_find_root() call may
dereference this dangling pointer.
acpi_pci_root_remove() has the same problem: it frees root without
clearing device->driver_data, leaving a dangling pointer behind after
the root bridge is removed.
Move the NULL assignment to the shared end: label so every error path in
acpi_pci_root_add() clears driver_data before freeing root, and clear it
in acpi_pci_root_remove() as well, so the object is never left reachable
through driver_data after being freed.
📍 영향받는 시스템
Linux kernel (ACPI PCI 관련 모듈 사용 시스템)
⚔️ 공격 벡터
장치 핫플러그(Hot-plug) 작업 중 의도적인 오류 유발을 통한 메모리 참조 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.