Linux 커널에서는 다음 취약점이 해결되었습니다. net: devmem: 페이지 정렬되지 않은 크기 또는 SG 길이로 dma-buf 바인딩을 거부합니다. net_devmem_bind_dmabuf()는 dmabuf->size 및 sg_dma_len()을 신뢰합니다. 확인하지 않고 PAGE_SIZE 배수: - tx_vec의 크기는 dmabuf->size / PAGE_SIZE이고, net_devmem_get_niov_at() 경계 확인만 virt_addr < dmabuf->size tx_vec[virt_addr / PAGE_SIZE]를 인덱싱하기 전. 크기 = N*PAGE_SIZE + r (1 <= r < PAGE_SIZE), iov_base에서 msg() 보내기
Linux 커널에서는 다음 취약점이 해결되었습니다.
net: devmem: 페이지 정렬되지 않은 크기 또는 SG 길이로 dma-buf 바인딩을 거부합니다.
net_devmem_bind_dmabuf()는 dmabuf->size 및 sg_dma_len()을 신뢰합니다. 확인하지 않고 PAGE_SIZE 배수:
tx_vec의 크기는 dmabuf->size / PAGE_SIZE이고, net_devmem_get_niov_at() 경계 확인만 virt_addr < dmabuf->size tx_vec[virt_addr / PAGE_SIZE]를 인덱싱하기 전. 크기 = NPAGE_SIZE + r (1 <= r < PAGE_SIZE), iov_base =에서 msg() 보내기 NPAGE_SIZE는 바운드 검사를 통과하고 tx_vec[N]을 읽습니다.
소유자->area.num_niovs = len / PAGE_SIZE 동안 gen_pool_add_owner() 전체 바이트 len을 포함하므로 페이지 다중이 아닌 최종 sg가 아닙니다. 이후 모든 SG에 대해 gen_pool 지역에서 num_niovs를 비동기화합니다. RX와 TX 모두.
dma-buf에는 페이지 정렬 크기가 필요하지 않으므로 바인드 경로는 다음과 같아야 합니다. 자체 인덱싱이 가정하는 것을 시행합니다. -EINVAL을 사용하여 둘 다 거부합니다.
크기 확인은 TX 전용입니다(tx_vec만 dmabuf->size 크기로 조정됨). 는 SG 길이 검사는 양방향을 모두 포함합니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 88.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 88.00 |
VPI 공식 vpi-v1 기준