Linux 커널에서는 다음 취약점이 해결되었습니다. 블록: biovec_phys_mergeable에 pgmap 검사를 추가합니다. biovec_phys_mergeable()은 요청 병합, DMA 매핑, 두 개의 물리적으로 연속된 경로를 결정하기 위한 무결성 병합 경로 bvec 세그먼트는 하나로 통합될 수 있습니다. 현재는 체크가 없습니다 세그먼트가 다른 dev_pagemaps에 속하는지 여부. 존 디바이스 메모리가 여러 청크로 등록되면 각 청크는 자체 dev_pagemap을 얻습니다. 하나의 약력으로 합법화할 수 있습니다.
Linux 커널에서는 다음 취약점이 해결되었습니다.
블록: biovec_phys_mergeable에 pgmap 검사를 추가합니다.
biovec_phys_mergeable()은 요청 병합, DMA 매핑, 두 개의 물리적으로 연속된 경로를 결정하기 위한 무결성 병합 경로 bvec 세그먼트는 하나로 통합될 수 있습니다. 현재는 체크가 없습니다 세그먼트가 다른 dev_pagemaps에 속하는지 여부.
존 디바이스 메모리가 여러 청크로 등록되면 각 청크는 자체 dev_pagemap을 얻습니다. 단일 약력은 합법적으로 다음을 포함할 수 있습니다. 다른 pgmap의 bvecs - iov_iter_extract_bvecs()는 다음에서 중단됩니다. pgmap 경계는 있지만 bio_iov_iter_get_pages()의 외부 루프입니다. 계속해서 동일한 약력을 작성합니다. 그러한 bvec이 물리적으로 존재하는 경우 연속적으로 biovec_phys_mergeable()이 그것들을 합쳐서 만들 것입니다. 병합된 세그먼트에 대한 올바른 pgmap을 복구하는 것이 불가능합니다. page_pgmap()을 통해.
병합을 방지하려면 zone_device_pages_have_same_pgmap() 검사를 추가하세요. 서로 다른 pgmap에 걸쳐 있는 bvec 세그먼트.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 98.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 98.00 |
VPI 공식 vpi-v1 기준