🔍 CVE-2026-89969

9.8
CVSS Score
CRITICAL
2026-09-16
2026-10-19 09:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 nvmet-tcp 구성 요소에서 과도하게 긴 PDU를 수신할 때 경계 외 쓰기(Out-of-bounds write)가 발생하는 취약점입니다. 공격자가 조작된 PDU를 전송하면 고정된 128바이트 버퍼의 범위를 초과하여 커널 메모리를 오염시킬 수 있습니다.

💡 쉬운 설명

컴퓨터가 데이터를 받을 때 정해진 그릇보다 더 큰 데이터를 억지로 밀어 넣어 메모리를 망가뜨리는 문제입니다. 이를 통해 해커가 원격에서 시스템의 중요한 정보를 조작하거나 제어권을 뺏을 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: fix out-of-bounds write when receiving an over-long PDU nvmet_tcp_try_recv_pdu() reads a PDU header into the fixed 128-byte queue->pdu union, then computes the remaining payload length as queue->left = hdr->hlen - queue->offset + hdgst; and reads that many more bytes into &queue->pdu + queue->offset, without ever bounding the result against sizeof(queue->pdu). A struct nvme_tcp_icreq_pdu is itself 128 bytes, exactly the size of the union. Once a header digest has been negotiated (hdgst = 4), a second ICReq passes the hlen == nvmet_tcp_pdu_size() check but yields queue->left = 128 - 8 + 4 = 124, so bytes 8..132 are written into the 128-byte buffer -- 4 bytes past its end, over queue->hdr_digest and queue->data_digest. Those bytes are attacker-controlled (an ICReq carries no digest), and the duplicate ICReq is only rejected later, after the overflow. A remote unauthenticated host can thus corrupt kernel memory adjacent to the receive buffer. Reject any PDU whose declared length would read past the end of queue->pdu before the second recv.

📍 영향받는 시스템

Linux kernel (nvmet-tcp 모듈 사용 환경)

⚔️ 공격 벡터

인증되지 않은 원격 공격자가 조작된 길이의 NVMe-over-TCP PDU를 전송하여 발생

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 PDU 길이 검증 로직을 적용해야 함

🔧 검증 코드

출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 배포판 보안 공지를 통해 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel