🇰🇷 한글 설명
Linux 커널 nvdimm/bus 드라이버에서 비동기 장치 등록 중 device_add() 실패 시 부모 디바이스 참조 카운트가 0으로 떨어지면서 메모리 해제 후 접근(use-after-free) 취약점이 발생한다. 이는 메모리 손상 및 권한 상승으로 이어질 수 있다. 부모 포인터를 사전에 저장하여 모든 오류 경로에서 안전하게 처리하도록 수정해야 한다.
💡 쉬운 설명
Linux 메모리 관리 코드에서 할당 실패 시 이미 해제된 메모리를 다시 접근하는 버그로, 시스템 권한 실행 코드이므로 권한 상승 공격에 악용될 수 있습니다. NVDIMM을 지원하는 서버 및 데이터센터 시스템에서 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nvdimm/bus: Fix potential use after free in asynchronous initialization
Dingisoul with KASAN reports a use after free if device_add() fails in
nd_async_device_register().
Commit b6eae0f61db2 ("libnvdimm: Hold reference on parent while
scheduling async init") correctly added a reference on the parent device
to be held until asynchronous initialization was complete. However, if
device_add() results in an allocation failure the ref count of the
device drops to 0 prior to the parent pointer being accessed. Thus
resulting in use after free.
The bug bot AI correctly identified the fix. Save a reference to the
parent pointer to be used to drop the parent reference regardless of the
outcome of device_add().
📍 영향받는 시스템
Linux kernel NVDIMM subsystem 활성화된 서버/데이터센터 시스템
⚔️ 공격 벡터
Local - 메모리 할당 실패 상황 유발 또는 경쟁 조건으로 use-after-free 트리거
🛡️ 대응 방법
Linux 커널을 최신 버전으로 업데이트하여 nd_async_device_register() 부모 포인터 참조 처리 패치 적용
🔧 검증 코드
커널 버전 확인 후 NVDIMM이 활성화되어 있으면 해당 커널 버전의 Linux 보안 공지에서 패치 상태를 확인하세요.
uname -r && grep -q CONFIG_NVDIMM=y /boot/config-$(uname -r) 2>/dev/null && echo 'NVDIMM enabled' || echo 'Check kernel version'