CVE-2026-89903 in Linuxthông tin

Tóm tắt

Bởi VulDB • 16/09/2026

Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:

LoongArch: Không lưu/phục hồi thanh ghi cơ sở percpu trong trampoline rethook

Trampoline rethook lưu $r21 ($u0), tức là cơ sở percpu, vào khung ngăn xếp (frame) của nó khi bắt đầu và khôi phục lại tại thời điểm kết thúc. Trong khoảng thời gian đó, hàm rethook_trampoline_handler() có thể thực hiện lên lịch xử lý thông qua preempt_enable_notrace().

Nếu tác vụ di chuyển sang một CPU khác, $r21 trong khung ngăn xếp sẽ giữ giá trị cơ sở percpu của CPU cũ, và việc khôi phục nó sẽ làm hỏng (poison) $r21 trên CPU mới. Cho đến khi quá trình chuyển đổi user->kernel tiếp theo sửa chữa lại $r21, tất cả các truy cập this_cpu_*() (runqueues, dữ liệu RCU per-CPU, lập lịch tick bộ đếm thời gian, quyền sở hữu FPU) sẽ tác động vào vùng percpu của CPU sai.

Dưới tải trọng có thể bị tiền xử lý (preemptible load) với nhiều kretprobe, điều này có thể làm hỏng trạng thái trình lên lịch và bộ đếm thời gian: các lỗi scheduling-while-atomic, cảnh báo RCU wrong-CPU, WARN_ON_ONCE(rq != this_rq()) trong nohz_balance_exit_idle(), và việc các CPU bị treo (parking) trong vòng lặp idle với bộ đếm thời gian liên tục không được kích hoạt lại (gây ra hard lockup). Lỗ hổng này có thể tái hiện trên máy Loongson-3A6000 với kretprobes trên các đường dẫn VFS cùng với việc thay đổi tệp tin nặng nề (cài đặt OS / unsquashfs).

Theo quy ước, $r21 luôn giữ cơ sở percpu của CPU hiện tại ở chế độ kernel: SAVE_SOME() tại thời điểm vào exception chỉ tải lại nó khi đến từ chế độ user, và RESTORE_SOME() khôi phục nó chỉ khi trả về chế độ user; đường dẫn chuyển đổi ngữ cảnh (context-switch) không bao giờ ghi giá trị này. Do đó, $r21 hiện hành tại thời điểm kết thúc trampoline đã đúng, và không có gì trong khoảng giữa có thể thay đổi nó một cách hợp lệ (mã C kernel không thể ghi biến thanh ghi toàn cục). Lỗ hổng tương tự cũng tồn tại ngay cả trong trampoline kretprobe trước khi rethook ra đời kể từ phiên bản v6.3; lỗ hổng này đã được chuyển tiếp sang khi rethook thay thế nó. Hãy bỏ cả hai thao tác lưu và khôi phục ở đây. Việc bỏ qua việc khôi phục là đủ để giải quyết vấn đề, còn việc bỏ qua việc lưu giúp giữ cho mã nguồn gọn gàng và không cần phải xóa giá trị đó.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

chịu trách nhiệm

Linux

Đặt trước

11/09/2026

Tiết lộ

17/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Might our Artificial Intelligence support you?

Check our Alexa App!