🇰🇷 한글 설명
Linux 커널의 drivers/xen/sys-hypervisor.c 파일에서 버퍼 오버플로우 취약점이 발견되었습니다. HYPERVISOR_xen_version 함수가 반환하는 빌드 ID가 널(NUL) 문자로 종료되지 않아, sprintf 함수가 메모리 끝을 찾을 때까지 데이터를 읽어 들여 오버플로우를 유발합니다.
💡 쉬운 설명
컴퓨터가 데이터를 읽을 때 '여기까지가 끝이다'라는 표시를 찾지 못해, 정해진 공간보다 더 많은 데이터를 읽어 들여 시스템 오류를 일으키는 문제입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Buffer overflow in drivers/xen/sys-hypervisor.c
The build id returned by HYPERVISOR_xen_version(XENVER_build_id) is
neither NUL terminated nor a string.
The first causes a buffer overflow as sprintf in buildid_show will
read and copy till it finds a NUL.
00000000 f4 91 51 f4 dd 38 9e 9d 65 47 52 eb 10 71 db 50 |..Q..8..eGR..q.P|
00000010 b9 a8 01 42 6f 2e 32 |...Bo.2|
00000017
So use a memcpy instead of sprintf to have the correct value:
00000000 f4 91 51 f4 dd 00 9e 9d 65 47 52 eb 10 71 db 50 |..Q.....eGR..q.P|
00000010 b9 a8 01 42 |...B|
00000014
(the above have a hack to embed a zero inside and check it's
returned correctly).
This is XSA-485 / CVE-2026-31786
📍 영향받는 시스템
Xen 하이퍼바이저를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
조작된 빌드 ID 값을 통해 메모리 경계를 넘어서는 데이터를 읽거나 쓰도록 유도하는 방식
🛡️ 대응 방법
sprintf 대신 데이터 길이를 지정할 수 있는 memcpy 함수를 사용하도록 커널 패치 적용
🔧 검증 코드
커널 버전과 해당 소스 파일의 존재 여부를 확인하여 패치 적용 여부를 검토합니다.
uname -r && grep -r "sys-hypervisor.c" /usr/src/linux-headers-$(uname -r) 2>/dev/null