🇰🇷 한글 설명
Linux 커널의 qla2xxx SCSI 드라이버에서 비-SCSI SRB 명령을 적절히 필터링하지 못해 발생하는 취약점입니다. 펌웨어가 예상치 못한 명령 유형을 전달할 경우 잘못된 포인터를 참조하게 되어 시스템 오류나 커널 패닉을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품과 통신하는 과정에서 잘못된 데이터가 들어왔을 때, 이를 제대로 걸러내지 못해 시스템이 엉뚱한 메모리 주소를 읽으려다 멈추는 문제입니다. 이로 인해 시스템이 갑자기 꺼지거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: qla2xxx: Reject non-SCSI SRB on status IOCB fast path
qla2x00_status_entry() filters out non-TYPE_SRB entries and the
SRB_NVME_CMD, SRB_BIDI_CMD and SRB_TM_CMD types, then falls through to a
SCSI fast path that assumes the command is an SRB_SCSI_CMD. The first
thing on that path, qla_chk_edif_rx_sa_delete_pending(), and the
subsequent handling both evaluate GET_CMD_SP(sp), i.e. sp->u.scmd.cmd.
The srb u union overlays the SCSI command pointer with other command
layouts (bsg_job, iocb_cmd). If firmware delivers an unexpected
STATUS_TYPE IOCB for a non-SCSI handle, sp->u.scmd.cmd can read as a
non-NULL garbage pointer, bypassing the NULL checks in
qla_chk_edif_rx_sa_delete_pending() and at the cp == NULL test, and
leading to a wild pointer dereference.
Reject any SRB whose type is not SRB_SCSI_CMD before entering the fast
path. The outstanding_cmds slot is left untouched so a genuinely
non-SCSI command still completes through its proper handler.
📍 영향받는 시스템
Linux kernel (qla2xxx driver module)
⚔️ 공격 벡터
조작된 펌웨어 응답을 통한 커널 메모리 오염 및 Wild Pointer Dereference
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.