🇰🇷 한글 설명
Linux 커널의 s390/qeth 드라이버에서 SNMP 및 ARP 쿼리 ioctl 처리 시 사용자 제공 버퍼 길이를 검증하지 않는 취약점이 발견되었습니다. 공격자가 작은 길이 값을 제공하면 정수 언더플로우가 발생하여 메모리 경계를 초과하는 쓰기 작업이 수행될 수 있습니다.
💡 쉬운 설명
컴퓨터가 데이터를 담을 그릇의 크기를 계산할 때, 잘못된 숫자를 입력하면 실제 크기보다 훨씬 큰 데이터를 억지로 집어넣으려다 시스템 오류를 일으키는 문제입니다. 이로 인해 해커가 시스템의 중요한 정보를 조작하거나 제어권을 뺏을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
s390/qeth: validate user buffer length in SNMP and ARP query ioctls
qeth_snmp_command() and qeth_l3_arp_query() allocate a buffer sized by
a user-supplied length (udata_len) without checking a lower bound, then
set udata_offset to a fixed non-zero value and pass both to a reply
callback. The callback bounds-checks the copy with
if ((udata_len - udata_offset) < len)
Both fields are u32, so a udata_len smaller than udata_offset makes the
subtraction wrap and the check pass, and the following memcpy() writes
past the allocation. A udata_len of 0 also yields ZERO_SIZE_PTR from
kzalloc(), which the existing NULL check does not catch.
Reject buffers smaller than udata_offset before allocating, so the
callback subtraction can no longer underflow.
📍 영향받는 시스템
Linux kernel (s390/qeth driver components)
⚔️ 공격 벡터
로컬 공격자가 조작된 udata_len 값을 포함한 SNMP 또는 ARP 쿼리 ioctl 호출을 통해 발생
🛡️ 대응 방법
커널 패치를 적용하여 버퍼 할당 전 udata_offset보다 작은 길이 값이 입력되지 않도록 검증 로직 추가
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 패치 버전인지 확인