🇰🇷 한글 설명
Linux 커널의 SCSI iSCSI 타겟에서 LUN_RESET으로 인해 중단된 WRITE_PENDING 명령이 발생할 경우, 타겟 코어가 명령 완료 프로세스를 트리거하지 못해 데드락이 발생하는 취약점입니다. 이로 인해 타겟 워커 스레드가 무한 대기 상태에 빠져 시스템이 멈출 수 있습니다. 패치를 통해 중단된 명령에 대해 명시적으로 완료 프로세스를 호출하도록 수정되었습니다.
💡 쉬운 설명
데이터를 저장하는 과정에서 명령이 취소되었을 때, 컴퓨터가 이 취소된 작업을 제대로 마무리하지 못하고 계속 기다리다가 멈춰버리는 문제입니다. 이로 인해 저장 장치와 관련된 시스템 기능이 마비될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: target: iscsi: Fix hang for aborted WRITE_PENDING commands
When a LUN_RESET aborts a WRITE command that is in the
TRANSPORT_WRITE_PENDING state, the target core sets CMD_T_ABORTED and
waits for the frontend to finish processing.
If the initiator subsequently sends the remaining dataout PDUs,
__iscsit_check_dataout_hdr() catches the payload, stops the dataout
timer if the sequence is final and finally dumps the data. However, the
iSCSI target doesn't trigger the completion process for these aborted
commands. Because of this, the abort path hangs indefinitely in
target_put_cmd_and_wait(), leading to a deadlocked target worker thread.
Fix this by explicitly calling target_complete_cmd() when the final
dataout PDU is received for an aborted WRITE command.
target_complete_cmd() detects the CMD_T_ABORTED flag and cleanly routes
the command into target_abort_work, allowing the abort completion to
successfully unblock.
📍 영향받는 시스템
Linux kernel (scsi: target: iscsi 관련 모듈 사용 시스템)
⚔️ 공격 벡터
네트워크를 통해 조작된 iSCSI 명령(LUN_RESET 및 데이터 전송 시퀀스)을 전송하여 타겟 스레드 데드락 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인