🔍 CVE-2026-97531

7.5
CVSS Score
HIGH
2026-09-25
2026-10-30 13:21
✅ 완료

🇰🇷 한글 설명

Linux 커널의 qla2xxx SCSI 드라이버에서 가상 포트(vport) 삭제 과정 중 레이스 컨디션이 발생하여 메모리 손상이 일어날 수 있는 취약점입니다. 삭제 중인 포트가 host_map에 잘못 재등록되어, 이후 해당 메모리가 해제된 후 접근할 때 Use-After-Free 오류를 유발합니다.

💡 쉬운 설명

컴퓨터 부품을 제거하는 도중에 시스템이 해당 부품이 아직 있는 것으로 착각하여 잘못된 메모리 주소를 참조하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 보안 문제가 발생할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Skip vport under deletion in report ID acquisition qla24xx_report_id_acquisition() format-1 handling walks ha->vp_list under vport_slock, takes a vref_count on the matching vport and calls qla_update_host_map() to register its port id. A vport teardown via qla24xx_vport_delete() sets VPORT_DELETE, then qla24xx_disable_vp() removes the vport from the host_map btree and zeroes vha->d_id (RESET_AL_PA). The vport is only unlinked from vp_list later, in qla24xx_deallocate_vp_id(), which clears vp_map[idx] (RESET_VP_IDX) but does not touch host_map. In the window in between, report ID acquisition can still find the vport on vp_list and call qla_update_host_map(); with d_id already zeroed it takes the btree_insert32() path and re-inserts the dying vport into host_map. Nothing cleans that entry afterwards, so once scsi_host_put() frees the vha a later host_map lookup dereferences freed memory. Skip a vport that has VPORT_DELETE set before taking the reference, so it is neither re-registered nor scheduled for DPC re-registration. This mirrors the existing guard in qla2x00_alert_all_vps().

📍 영향받는 시스템

Linux kernel (qla2xxx SCSI driver 사용 시스템)

⚔️ 공격 벡터

로컬 공격자가 특정 SCSI 가상 포트의 생성 및 삭제 과정을 반복하여 메모리 오류를 유도함

🛡️ 대응 방법

qla2xxx 드라이버의 vport 삭제 로직이 수정된 최신 Linux 커널로 업데이트

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 해당 취약점이 패치된 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel