🇰🇷 한글 설명
Linux 커널의 nvmet-tcp 구성 요소에서 PDU 길이 또는 오프셋이 범위를 벗어날 경우 발생하는 오류 처리 결함입니다. 오류 발생 시 호출자에게 상태를 알리지 않아 초기화되지 않은 반복자(iterator)를 사용하여 네트워크 데이터를 읽으려 시도할 수 있습니다.
💡 쉬운 설명
데이터를 주고받는 과정에서 잘못된 데이터가 들어왔을 때 시스템이 이를 제대로 인지하지 못하고 잘못된 메모리 영역에 데이터를 쓰려고 하는 문제입니다. 이로 인해 시스템이 충돌하거나 보안 문제가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nvmet-tcp: propagate nvmet_tcp_build_pdu_iovec() errors to its callers
Currently, when nvmet_tcp_build_pdu_iovec() detects an out-of-bounds
PDU length or offset, it triggers nvmet_tcp_fatal_error(cmd->queue)
and returns early. However, because the function returns void, the
callers are entirely unaware that a fatal error has occurred and
that the cmd->recv_msg.msg_iter was left uninitialized.
Callers such as nvmet_tcp_handle_h2c_data_pdu() proceed to blindly
overwrite the queue state with queue->rcv_state = NVMET_TCP_RECV_DATA
Consequently, the socket receiving loop may attempt to read incoming
network data into the uninitialized iterator.
Fix this by shifting the error handling responsibility to the callers.
📍 영향받는 시스템
Linux kernel (nvmet-tcp 모듈 사용 시스템)
⚔️ 공격 벡터
조작된 PDU(Protocol Data Unit)를 전송하여 네트워크 수신 루프의 비정상적인 동작 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인