CVE-2026-64449 in Linux
요약
\~에 의해 VulDB • 2026. 07. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
staging: vme_user: 슬레이브 읽기/쓰기를 kern_buf 크기로 제한함
SLAVE 경로 헬퍼 함수인 buffer_to_user()와 buffer_from_user()는 *ppos를 오프셋으로 사용하여 고정 크기인 kern_buf( size_buf == PCI_BUF_SIZE == 0x20000, 128 KiB)에 'count' 바이트를 복사하거나 여기서 읽어옵니다. 그러나 이 과정에서 *ppos + count가 size_buf를 초과하지 않도록 제한(bounding)하지 않습니다.
vme_user_write()/vme_user_read()는 VME 창(window) 크기(image_size = vme_get_size(resource))로만 count 값을 클램프(clamp)합니다. 여기서 VME_SET_SLAVE은 사용자 제공 slave.size에서 설정된 값(VME 주소 공간, 최대 VME_A32_MAX = 4 GiB까지 유효성 검사됨)을 사용하며 PCI_BUF_SIZE와는 관련이 없습니다. 창 크기가 128 KiB를 초과할 경우 write()/read() 호출 시 kern_buf 할당 영역을 넘어가는 복사 작업이 발생합니다.
두 헬퍼 함수 모두에서 count 값을 size_buf로 클램프하고, *ppos가 이미 버퍼 끝 지점에 있거나 그 이후인 경우에는 즉시 반환합니다. 여기서 *ppos는 >= 0입니다(호출자가 음수 오프셋은 거부함). 따라서 size_buf - *ppos 값이 오버플로우(wrap)할 수 없습니다. 이는 MASTER 경로 헬퍼 함수 resource_to_user() / resource_from_user()에 이미 존재하는 클램프 처리와 일치하며, 버퍼 끝에서 짧은 전송(short transfer)을 수행한다는 read()/write() 관례에도 부합합니다.
정적 분석(CodeQL 틴트 트래킹 + CBMC 유계 모델 체크)를 통해 발견되었으며 vme_fake 브리지 환경 하에서 KASAN으로 동적으로 확인되었습니다:
BUG: KASAN: slab-out-of-bounds in _copy_from_user+0x2d/0x80 Write of size 262144 at addr ffff888004100000 by task trigger/68 _copy_from_user+0x2d/0x80 vme_user_write+0x13e/0x240 [vme_user]
vfs_write+0x1b8/0x7a0 ksys_write+0xb8/0x150
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.