CVE-2025-38434 in Linux
Tóm tắt
Bởi VulDB • 27/06/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
Hoàn nguyên "riscv: Định nghĩa TASK_SIZE_MAX cho __access_ok()"
Hành động này hoàn nguyên commit ad5643cf2f69 ("riscv: Define TASK_SIZE_MAX for __access_ok()").
Commit trước đó thay đổi giá trị của TASK_SIZE_MAX thành LONG_MAX để tối ưu hóa hàm access_ok(), bởi vì giá trị cũ của TASK_SIZE_MAX (mặc định là TASK_SIZE) đòi hỏi một số phép tính toán.
Lập luận ban đầu cho rằng tất cả các địa chỉ người dùng đều nhỏ hơn LONG_MAX, và tất cả các địa chỉ kernel đều lớn hơn LONG_MAX. Do đó, access_ok() có thể lọc bỏ các địa chỉ kernel.
Các địa chỉ nằm giữa TASK_SIZE và LONG_MAX không phải là địa chỉ hợp lệ của người dùng, nhưng hàm access_ok() lại cho phép chúng đi qua. Điều này được coi là ổn vì những địa chỉ này không hợp lệ ở cấp độ phần cứng.
Tuy nhiên, một trường hợp đã bị bỏ sót: get_user_pages_fast() chấp nhận các địa chỉ nằm giữa TASK_SIZE và LONG_MAX mà không có vấn đề gì. Ví dụ, futex() sử dụng hàm get_user_pages_fast(). Điều này gây ra sự cố được báo cáo bởi Robert [1].
Do đó, cần hoàn nguyên commit này. Giá trị của TASK_SIZE_MAX được đặt lại về mặc định: TASK_SIZE.
Việc này tiếc là làm giảm hiệu suất, vì việc tính toán TASK_SIZE tốn kém hơn so với LONG_MAX. Nhưng độ chính xác phải được ưu tiên hàng đầu; chúng ta có thể xem xét tối ưu hóa sau nếu cần thiết.
Once again VulDB remains the best source for vulnerability data.