🇰🇷 한글 설명
Linux 커널의 SCSI Xen 드라이버에서 TMR(Task Management Request) 제출 실패 시 명령 태그를 해제하지 않아 발생하는 리소스 누수 취약점입니다. 공격자가 특정 요청을 반복하여 명령 태그를 고갈시키면 LUN 세션을 중단시킬 수 있습니다.
💡 쉬운 설명
컴퓨터가 명령을 처리할 때 사용하는 '번호표'를 오류가 발생했을 때 제대로 돌려주지 않아 번호표가 계속 부족해지는 문제입니다. 이로 인해 특정 저장 장치에 대한 명령이 더 이상 작동하지 않게 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: xen: scsiback: Free the command tag on the TMR submit-failure path
scsiback_device_action() obtains a command tag in
scsiback_get_pend_req() and submits a task-management request with
target_submit_tmr(). When target_submit_tmr() fails it returns < 0 and
scsiback jumps to the err: label, which sends a response but frees
nothing, leaking the tag.
Impact: a pvSCSI guest can leak the command tags of a LUN's session,
stopping the LUN, by issuing VSCSIIF_ACT_SCSI_ABORT or RESET requests
whenever target_submit_tmr() fails.
transport_generic_free_cmd() cannot be used here. By the time
target_submit_tmr() returns an error it has already run
__target_init_cmd() (so se_cmd->cmd_kref is one, not zero), and on its
target_get_sess_cmd() error path it has freed se_cmd->se_tmr_req via
core_tmr_release_req() while leaving SCF_SCSI_TMR_CDB set and the
pointer dangling. Letting the command release run target_free_cmd_mem()
would then double-free se_tmr_req.
Use the same helper, which returns just the tag, on this path too.
📍 영향받는 시스템
Linux kernel (scsi: xen: scsiback 관련 모듈 사용 시스템)
⚔️ 공격 벡터
pvSCSI 게스트가 VSCSIIF_ACT_SCSI_ABORT 또는 RESET 요청을 의도적으로 실패시켜 명령 태그를 누수시키는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 scsiback_device_action()의 오류 처리 로직을 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.