🇰🇷 한글 설명
Linux 커널의 scsi: libiscsi_tcp 구성 요소에서 발생하는 버퍼 오버플로 취약점입니다. SCSI 응답(ISCSI_OP_SCSI_CMD_RSP) 처리 시 데이터 세그먼트 길이를 고정된 버퍼 크기(8192바이트)와 비교 검증하지 않아 발생합니다. 공격자가 조작된 PDU를 전송할 경우 커널 메모리 오버플로를 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터가 데이터를 받을 때 정해진 그릇보다 더 큰 데이터를 받도록 허용하여 발생하는 오류입니다. 나쁜 의도를 가진 서버가 너무 큰 데이터를 보내면 컴퓨터의 핵심 시스템이 망가질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: libiscsi_tcp: Bound SCSI Response data segment to the connection buffer
iscsi_tcp_hdr_dissect() receives the data segment of several PDU types
into the fixed-size conn->data buffer, which is allocated for
ISCSI_DEF_MAX_RECV_SEG_LEN (8192) bytes. For the LOGIN_RSP, TEXT_RSP,
REJECT and ASYNC_EVENT opcodes the dissect path already rejects a PDU
whose DataSegmentLength exceeds that buffer.
The SCSI Command Response (ISCSI_OP_SCSI_CMD_RSP) path also copies its
data segment (sense/response data) into conn->data via
iscsi_tcp_data_recv_prep(), but it does so without the same check. The
only upstream bound on in.datalen is conn->max_recv_dlength, the
initiator's advertised MaxRecvDataSegmentLength, which is commonly
negotiated well above 8192 (open-iscsi defaults to 262144). A target
that returns a SCSI Response with a DataSegmentLength between 8193 and
max_recv_dlength therefore overflows the 8192-byte conn->data buffer.
Once the same bound applies, ISCSI_OP_SCSI_CMD_RSP is handled exactly
like those responses: bound the data segment, receive it into conn->data
when present, and otherwise complete the PDU with no data. Fold the
opcode into that case group rather than duplicating the check.
📍 영향받는 시스템
Linux Kernel (libiscsi_tcp 모듈 사용 시스템)
⚔️ 공격 벡터
악의적인 iSCSI 타겟 서버가 조작된 SCSI 응답 패킷을 전송하여 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux