🇰🇷 한글 설명
Linux 커널의 nfs/blocklayout 구성 요소에서 pNFS SCSI 레이아웃이 활성화된 NFS를 언마운트할 때 NULL 블록 장치를 역참조하는 취약점이 발견되었습니다. 이는 블록 장치 등록 여부를 확인하는 플래그를 적절히 검사하지 않아 발생하며, 시스템 불안정성을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터가 네트워크 저장 장치를 연결 해제할 때, 이미 존재하지 않는 장치 정보를 잘못 참조하여 오류가 발생하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 충돌이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfs/blocklayout: Don't attempt unregister for invalid block device
Since commit d869da91cccb ("nfs/blocklayout: Fix premature PR key
unregistration") an unmount of a pNFS SCSI layout-enabled NFS may
dereference a NULL block_device in:
bl_unregister_scsi+0x16/0xe0 [blocklayoutdriver]
bl_free_device+0x70/0x80 [blocklayoutdriver]
bl_free_deviceid_node+0x12/0x30 [blocklayoutdriver]
nfs4_put_deviceid_node+0x60/0xc0 [nfsv4]
nfs4_deviceid_purge_client+0x132/0x190 [nfsv4]
unset_pnfs_layoutdriver+0x59/0x60 [nfsv4]
nfs4_destroy_server+0x36/0x70 [nfsv4]
nfs_free_server+0x23/0xe0 [nfs]
deactivate_locked_super+0x30/0xb0
cleanup_mnt+0xba/0x150
task_work_run+0x59/0x90
syscall_exit_to_user_mode+0x217/0x220
do_syscall_64+0x8e/0x160
This happens because even though we were able to create the
nfs4_deviceid_node, the lookup for the device was unable to attach the
block device to the pnfs_block_dev.
If we never found a block device to register, we can avoid this case with
the PNFS_BDEV_REGISTERED flag. Move the deref behind the test for the
flag.
📍 영향받는 시스템
pNFS SCSI 레이아웃을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
특정 조건에서 pNFS SCSI 레이아웃이 설정된 NFS를 언마운트하는 동작을 통해 유도 가능
🛡️ 대응 방법
커널 패치(commit d869da91cccb 포함)가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 수정된 패치 버전 이후인지 확인하십시오.