🇰🇷 한글 설명
Linux 커널의 qla2xxx SCSI 드라이버에서 IOCB 카운트 값이 순서대로 동기화되지 않아 명령이 전송되지 못하고 시스템이 멈추는 문제가 해결되었습니다. NULL 포인터 역참조로 인해 커널 패닉 또는 행(hang)이 발생할 수 있습니다.
💡 쉬운 설명
파이버 채널 저장장치 연결을 담당하는 드라이버에서 내부 작업 번호가 꼬여, 특정 상황에서 시스템 전체가 멈출 수 있는 결함입니다. 이번 패치로 작업 번호의 순서를 올바르게 맞춰 멈춤 현상을 막습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: qla2xxx: Synchronize the IOCB count to be in order
A system hang was observed with the following call trace:
BUG: kernel NULL pointer dereference, address: 0000000000000000
PGD 0 P4D 0
Oops: 0000 [#1] PREEMPT SMP NOPTI
CPU: 15 PID: 86747 Comm: nvme Kdump: loaded Not tainted 6.2.0+ #1
Hardware name: Dell Inc. PowerEdge R6515/04F3CJ, BIOS 2.7.3 03/31/2022
RIP: 0010:__wake_up_common+0x55/0x190
Code: 41 f6 01 04 0f 85 b2 00 00 00 48 8b 43 08 4c 8d
40 e8 48 8d 43 08 48 89 04 24 48 89 c6\
49 8d 40 18 48 39 c6 0f 84 e9 00 00 00 <49> 8b 40 18 89 6c 24 14 31
ed 4c 8d 60 e8 41 8b 18 f6 c3 04 75 5d
RSP: 0018:ffffb05a82afbba0 EFLAGS: 00010082
RAX: 0000000000000000 RBX: ffff8f9b83a00018 RCX: 0000000000000000
RDX: 0000000000000001 RSI: ffff8f9b83a00020 RDI: ffff8f9b83a00018
RBP: 0000000000000001 R08: ffffffffffffffe8 R09: ffffb05a82afbbf8
R10: 70735f7472617473 R11: 5f30307832616c71 R12: 0000000000000001
R13: 0000000000000003 R14: 0000000000000000 R15: 0000000000000000
FS: 00007f815cf4c740(0000) GS:ffff8f9eeed80000(0000)
knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 000000010633a000 CR4: 0000000000350ee0
Call Trace:
<TASK>
__wake_up_common_lock+0x83/0xd0
qla_nvme_ls_req+0x21b/0x2b0 [qla2xxx]
__nvme_fc_send_ls_req+0x1b5/0x350 [nvme_fc]
nvme_fc_xmt_disconnect_assoc+0xca/0x110 [nvme_fc]
nvme_fc_delete_association+0x1bf/0x220 [nvme_fc]
? nvme_remove_namespaces+0x9f/0x140 [nvme_core]
nvme_do_delete_ctrl+0x5b/0xa0 [nvme_core]
nvme_sysfs_delete+0x5f/0x70 [nvme_core]
kernfs_fop_write_iter+0x12b/0x1c0
vfs_write+0x2a3/0x3b0
ksys_write+0x5f/0xe0
do_syscall_64+0x5c/0x90
? syscall_exit_work+0x103/0x130
? syscall_exit_to_user_mode+0x12/0x30
? do_syscall_64+0x69/0x90
? exit_to_user_mode_loop+0xd0/0x130
? exit_to_user_mode_prepare+0xec/0x100
? syscall_exit_to_user_mode+0x12/0x30
? do_syscall_64+0x69/0x90
? syscall_exit_to_user_mode+0x12/0x30
? do_syscall_64+0x69/0x90
entry_SYSCALL_64_after_hwframe+0x72/0xdc
RIP: 0033:0x7f815cd3eb97
The IOCB counts are out of order and that would block any commands from
going out and subsequently hang the system. Synchronize the IOCB count to
be in correct order.
📍 영향받는 시스템
Linux 커널 qla2xxx(QLogic Fibre Channel) SCSI 드라이버를 사용하는 수정 이전 커널 버전 (6.2 계열 등)
⚔️ 공격 벡터
원격 공격이 아닌 로컬 상황에서 NVMe-FC 컨트롤러 연결 해제(disconnect) 작업 중 발생하는 버그로, 공격자가 악용하기보다 정상 운영 중 서비스 거부(시스템 행) 형태로 나타남
🛡️ 대응 방법
커널을 해당 CVE 수정이 포함된 최신 안정 버전 또는 배포판 보안 업데이트로 업그레이드하여 재부팅
🔧 검증 코드
출력된 커널 버전이 배포판의 CVE-2023-53056 수정 포함 업데이트 버전 이상인지 확인하고, qla2xxx 모듈 정보가 없으면 해당 드라이버를 사용하지 않는 시스템이므로 영향이 없습니다.
uname -r && (modinfo qla2xxx 2>/dev/null | grep -E '^(version|srcversion|filename)')