🇰🇷 한글 설명
Linux 커널의 nvmet-auth 구성 요소에서 DH-HMAC-CHAP 인증 과정 중 버퍼 길이 검증 미흡으로 인한 힙 기반 Out-of-Bounds Write 취약점이 발견되었습니다. 공격자가 조작된 AUTH_RECEIVE 길이를 전송할 경우, 할당된 메모리 범위를 초과하여 16바이트를 쓰는 메모리 오염이 발생할 수 있습니다.
💡 쉬운 설명
인증 과정에서 데이터 크기를 제대로 확인하지 않아, 정해진 공간보다 더 많은 데이터를 강제로 써넣을 수 있는 보안 약점입니다. 이를 통해 해커가 시스템의 메모리를 조작하여 보안을 무너뜨릴 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nvmet-auth: reject short AUTH_RECEIVE buffers
nvmet_execute_auth_receive() trusts the AUTH_RECEIVE allocation length
after checking only that it is nonzero and matches the transfer length.
In the SUCCESS1 and FAILURE1/default states, that lets a remote NVMe-oF
initiator reach the fixed-size DH-HMAC-CHAP response builders with a
kmalloc() buffer shorter than the response, so nvmet_auth_success1() and
nvmet_auth_failure1() write past the allocation; both only WARN_ON the
short length and then format the message anyway.
Impact: A remote NVMe-oF initiator with access to an auth-enabled target
can trigger a 16-byte heap out-of-bounds write via a one-byte
AUTH_RECEIVE allocation length.
Compute the minimum response length for the current DH-HMAC-CHAP step in
nvmet_auth_receive_data_len() and report a zero data length when the
host-supplied allocation length is shorter, so the existing zero-length
check in nvmet_execute_auth_receive() rejects the command before any
builder runs. The SUCCESS1 minimum is sizeof(struct
nvmf_auth_dhchap_success1_data) plus the HMAC hash length, because the
response hash is written into the rval[] flexible-array tail, so the
minimum is state dependent rather than a flat sizeof. CHALLENGE keeps its
existing variable-length guard in nvmet_auth_challenge().
This is reachable only when in-band DH-HMAC-CHAP authentication is
configured on the target.
📍 영향받는 시스템
DH-HMAC-CHAP 인증이 활성화된 NVMe-oF 타겟을 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
인증이 활성화된 NVMe-oF 타겟에 접근 가능한 원격 NVMe-oF 이니시에이터를 통한 공격
🛡️ 대응 방법
커널 패치를 적용하여 nvmet_auth_receive_data_len()에서 최소 응답 길이를 검증하도록 업데이트해야 합니다.
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 최신 보안 패치 버전인지 확인합니다.