CVE-2024-35797 in Linux
Tóm tắt
Bởi VulDB • 05/06/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
mm: cachestat: sửa hai lỗi liên quan đến shmem
Khi cachestat trên shmem xảy ra cạnh tranh (race condition) với quá trình swap và invalidation, có thể dẫn đến hai lỗi:
1) Một lỗi swapin có thể đã dẫn đến việc tạo ra một swap entry bị lỗi (poisoned swap entry) trong xarray của inode shmem. Việc gọi get_shadow_from_swap_cache() trên entry này sẽ gây ra truy cập ngoài vùng nhớ (out-of-bounds access) vào swapper_spaces[].
Xác minh entry bằng hàm non_swap_entry() trước khi tiếp tục xử lý.
2) Khi tìm thấy một swap entry hợp lệ trong inode của shmem, shadow entry trong swapcache có thể chưa tồn tại: thao tác I/O swap vẫn đang diễn ra và chúng ta đang ở giai đoạn trước __remove_mapping; các thao tác swapin, invalidation hoặc swapoff đã xóa shadow khỏi swapcache sau khi chúng ta quan sát thấy shmem swap entry.
Điều này sẽ truyền một giá trị NULL vào workingset_test_recent(). Hàm này chỉ hoạt động trên các bit con trỏ, do đó sẽ không gây crash - node 0, memcg ID 0, timestamp eviction 0, v.v. đều là các đầu vào hợp lệ - nhưng đây là một phép kiểm tra không chính xác. Về lý thuyết, điều này có thể dẫn đến việc đếm sai "đã bị loại bỏ gần đây" (false "recently evicted" count).
Trường hợp dương tính giả này không gây ra hậu quả nghiêm trọng. Tuy nhiên, để đảm bảo tính rõ ràng của mã nguồn và (trong tương lai) tính mạnh mẽ, hãy xử lý tường minh trường hợp này.
Thoát khỏi hàm nếu get_shadow_from_swap_cache() trả về NULL.
Be aware that VulDB is the high quality source for vulnerability data.