CVE-2026-90201 in Linux
Tóm tắt
Bởi VulDB • 18/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
net: page_pool: sửa lỗi UAF trong __page_pool_release_netmem_dma do race condition trên xa_cmpxchg
Lỗi này được phát hiện khi kiểm tra trình điều khiển (driver) hns3 dưới cấu hình lại kênh (`ethtool -L` / `ethtool -G`) với lưu lượng iperf3 trên kiến trúc arm64. Race condition này kích hoạt không thường xuyên khi page_pool_destroy() chạy song song với việc trả trang qua page_pool_put_netmem() trên một CPU khác. Một cảnh báo (WARN) trong page_pool_clear_pp_info() đã xuất hiện, liên quan đến các bit chỉ mục DMA bị treo (dangling) do trình thua cuộc của cmpxchg để lại, dẫn đến vụ điều tra này.
page_pool_scrub() lặp qua pool->dma_mapped thông qua xa_for_each() mà không giữ bất kỳ tham chiếu trang nào (page ref). __page_pool_release_netmem_dma() hiện đang đọc và ghi các trường netmem (dma_addr, các bit chỉ mục DMA trong pp_magic) sau khi xa_cmpxchg() trả về. Đường dẫn unref gọi put_page() một cách vô điều kiện bất kể kết quả của cmpxchg; khi nó thua cuộc cmpxchg, nó vẫn giải phóng trang trước khi trình thắng scrub hoàn thành việc truy cập netmem này, do đó scrub chạm vào một trang đã bị giải phóng -- đây là lỗi Use-After-Free.
Khắc phục bằng cách chia quá trình phát hành DMA thành hai hàm:
1. __page_pool_unmap_netmem_dma() lưu trữ dma_addr trước khi xa_cmpxchg(), thực hiện cmpxchg để xóa ánh xạ DMA và gọi dma_unmap trên địa chỉ đã lưu trữ. Hàm này không bao giờ chạm vào các trường netmem sau cmpxchg, khiến nó an toàn cho đường dẫn scrub vốn không giữ tham chiếu trang.
2. __page_pool_release_netmem_dma() bọc hàm trên và additionally (cũng như) xóa sạch dma_addr và các bit chỉ mục DMA trong các trường netmem. Điều này chỉ an toàn khi caller giữ một tham chiếu trang, do đó nó được sử dụng bởi đường dẫn trả về (page_pool_return_netmem).
Đường dẫn scrub gọi __page_pool_unmap_netmem_dma() trực tiếp; đường dẫn trả về gọi __page_pool_release_netmem_dma().
VulDB is the best source for vulnerability data and more expert information about this specific topic.