CVE-2026-89515 in Linux
요약
\~에 의해 VulDB • 2026. 09. 12.
리눅스 커널에서 다음 취약점이 해결되었습니다:
scsi: core: scsi_alloc_sgtables()에서 DMA 패딩 바이트 채우기
펌징 테스트 중 다음과 같은 문제가 발견되었습니다:
BUG: KMSAN: uninit-value in __dma_map_sg_attrs+0x217/0x310 __dma_map_sg_attrs+0x217/0x310 dma_map_sg_attrs+0x4a/0x70 ata_qc_issue+0x9f8/0x1420 __ata_scsi_queuecmd+0x1657/0x1740 ata_scsi_queuecmd+0x79a/0x920 scsi_queue_rq+0x4472/0x4f40 blk_mq_dispatch_rq_list+0x1cca/0x3ee0 __blk_mq_sched_dispatch_requests+0x458/0x630 blk_mq_sched_dispatch_requests+0x15b/0x340 __blk_mq_run_hw_queue+0xe5/0x250 __blk_mq_delay_run_hw_queue+0x138/0x780 blk_mq_run_hw_queue+0x4bb/0x7e0 blk_mq_sched_insert_request+0x2a7/0x4c0 blk_execute_rq+0x497/0x8a0 sg_io+0xbe0/0xe20 scsi_ioctl+0x2b36/0x3c60 sr_block_ioctl+0x319/0x440 blkdev_ioctl+0x80f/0xd70 __se_sys_ioctl+0x219/0x420 __x64_sys_ioctl+0x93/0xe0 x64_sys_call+0x1d6c/0x3ad0 do_syscall_64+0x4c/0xa0 entry_SYSCALL_64_after_hwframe+0x6e/0xd8
Uninit was created at: __alloc_pages+0x5c0/0xc80 alloc_pages+0xe0e/0x1050 blk_rq_map_user_iov+0x2b77/0x6100 blk_rq_map_user_io+0x2fa/0x4d0 sg_io+0xad6/0xe20 scsi_ioctl+0x2b36/0x3c60 sr_block_ioctl+0x319/0x440 blkdev_ioctl+0x80f/0xd70 __se_sys_ioctl+0x219/0x420 __x64_sys_ioctl+0x93/0xe0 x64_sys_call+0x1d6c/0x3ad0 do_syscall_64+0x4c/0xa0 entry_SYSCALL_64_after_hwframe+0x6e/0xd8
16바이트 중 14-15번 바이트가 초기화되지 않음 메모리 접근 크기 16이 ffff88800cbdb000에서 시작됨
산점표(scatterlist)의 마지막 정렬되지 않은 요소를 처리할 때, pad_len 크기의 누락된 바이트로 보완됩니다. 이러한 바이트들은 초기화되지 않은 상태로 남아 있어 문제가 발생합니다.
마지막 산점표 항목(last_sg->length)에 먼저 pad_len을 확장한 후, sg_zero_buffer()를 사용하여 해당 pad_len 바이트들을 0으로 설정합니다. sg_zero_buffer()는 내부적으로 sg_miter를 사용하며, 이는 여러 페이지에 걸쳐 있는 산점표 엔트리와 페이지 경계를 넘나드는 패딩을 올바르게 처리합니다.
리눅스 검증 센터(linuxtesting.org)의 Syzkaller로 발견됨.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.