🇰🇷 한글 설명
Linux 커널의 net/ncsi 구성 요소에서 NCSI_CMD_SEND_CMD 페이로드 길이를 처리할 때 힙 영역의 경계 외 읽기(OOB Read) 취약점이 발견되었습니다. 공격자가 제어 가능한 헤더 길이를 검증 없이 사용함으로써 커널 힙 메모리의 약 64KB 데이터가 유출될 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제(커널)가 데이터를 읽을 때, 실제 데이터 크기보다 더 많은 양을 읽으려고 시도하는 오류가 있습니다. 이로 인해 시스템 내부의 중요한 비밀 정보가 외부로 흘러나갈 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/ncsi: fix heap OOB read in NCSI_CMD_SEND_CMD payload length
ncsi_send_cmd_nl() takes the number of bytes to copy from the
attacker-controlled ncsi_pkt_hdr.length field of the in-band packet
header, while the source buffer is the NCSI_ATTR_DATA netlink
attribute whose readable size is nla_len() - sizeof(ncsi_pkt_hdr).
The two length sources are never cross-checked: only
nla_len() >= sizeof(struct ncsi_pkt_hdr) is enforced.
With hdr->length set larger than the attribute payload (up to 65535
against at most 2032 readable bytes), ncsi_cmd_handler_oem() copies
past the end of the netlink attribute buffer with unsafe_memcpy(),
leaking up to ~64KB of kernel heap memory into the transmitted NCSI
command packet. The destination skb is sized by the declared payload,
so the write side does not overflow - this is a pure OOB read /
information leak, reachable with CAP_NET_ADMIN on systems with a
registered NCSI device (e.g. OpenBMC on Aspeed BMC SoCs, where
NET_NCSI=y is standard).
Reject commands whose declared payload extends past the end of the
data attribute.
The issue was found by the autokbug dynamic kernel fuzzer at Tencent
Yunding Lab.
📍 영향받는 시스템
NCSI 장치가 등록되어 있고 NET_NCSI 옵션이 활성화된 Linux 커널 (예: Aspeed BMC SoC 기반 OpenBMC)
⚔️ 공격 벡터
CAP_NET_ADMIN 권한을 가진 공격자가 조작된 NCSI 패킷 헤더의 길이를 전송하여 발생
🛡️ 대응 방법
NCSI 페이로드 길이가 데이터 속성의 실제 크기를 초과하는지 검증하는 패치가 적용된 최신 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인