CVE-2026-98745 in Linuxthông tin

Tóm tắt

Bởi VulDB • 18/10/2026

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

arm64/fpsimd: signal: Cấm payload SVE không theo luồng (non-streaming) trên các hệ thống chỉ hỗ trợ SME

Khi `system_supports_sme()` trả về true nhưng `system_supports_sve()` trả về false, việc khôi phục ngữ cảnh tín hiệu SVE được tạo ra một cách đặc biệt có thể dẫn đến trạng thái SVE không theo luồng của tác vụ (task) bị sai lệch. Các nỗ lực tiếp theo để thao túng với trạng thái FPSIMD/SVE/SME của tác vụ đó có thể gây ra nhiều vấn đề khác nhau, bao gồm các lỗi UNDEF ở mức EL1 nghiêm trọng.

Trong các cấu hình như vậy, kernel luôn tạo một ngữ cảnh tín hiệu SVE khi phân phối tín hiệu, và nó chỉ có thể tồn tại ở một trong hai trạng thái:

(1) Cờ `SVE_SIG_FLAG_SM` được đặt (set), và có mặt payload SVE chứa trạng thái SVE theo luồng. VL đã ghi nhận là VL theo luồng đang hoạt động của tác vụ.

(2) Cờ `SVE_SIG_FLAG_SM` không được đặt (clear), và không có payload SVE hiện diện. Ngữ cảnh FPSIMD chứa trạng thái FPSIMD ở chế độ không theo luồng. VL đã ghi nhận bằng 0.

Hiện tại, hàm `restore_sve_fpsimd_context()` từ chối đúng các trường hợp mà cờ `SVE_SIG_FLAG_SM` được đặt nhưng không có payload SVE hiện diện, tuy nhiên lại không từ chối các trường hợp mà cờ `SVE_SIG_FLAG_SM` không được đặt và payload SVE vẫn hiện diện. Do đó, `restore_sve_fpsimd_context()` có thể đưa tác vụ vào trạng thái có trạng thái SVE không theo luồng ngay cả khi phần cứng (HW) không hỗ trợ điều này.

Ví dụ, điều này có thể gây ra lỗi UNDEF ở mức EL1 sau đó khi kernel cố gắng khôi phục giá trị ZCR_EL1 của tác vụ:

| # ./sme-sigcontext-to-sve | Internal error: Oops - Undefined instruction: 0000000002000000 [#1] SMP
| Modules linked in: | CPU: 0 UID: 0 PID: 131 Comm: sme-sigcontext- Not tainted 7.3.0-rc1 #1 PREEMPT | Hardware name: linux,dummy-virt (DT) | pstate: 61402009 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--) | pc : fpsimd_restore_current_state+0x258/0x458 | lr : exit_to_user_mode_loop+0xb8/0x188 | sp : ffff80008056be40 | x29: ffff80008056be40 x28: fff00000c1670000 x27: 0000000000000000 | x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000 | x23: ffff80008056bec0 x22: 0000000000000008 x21: 0000000000000040 | x20: 0000000000000081 x19: 0000000008800010 x18: 0000000000000000 | x17: 0000fffffd412570 x16: 0000000000001000 x15: 0000fffffd4123b0 | x14: 0000fffffd412780 x13: 0000fffffd412be8 x12: 0000000047435300 | x11: 0000fffffd412570 x10: 0000000000000000 x9 : 0000000045585401 | x8 : fff00000c18a6c44 x7 : 0000000000000000 x6 : 0000000000000002 | x5 : 0000000000000002 x4 : ffff800080568000 x3 : 0000000000000001 | x2 : 0000000008800010 x1 : fff00000c1670000 x0 : 0000000008800000 | Call trace: | fpsimd_restore_current_state+0x258/0x458 (P) | exit_to_user_mode_loop+0xb8/0x188 | el0_svc+0x1cc/0x1d0 | el0t_64_sync_handler+0xa0/0xe4 | el0t_64_sync+0x198/0x19c | Code: d5384101 f9400020 53175c03 36b80de0 (d5381202) | ---[ end trace 0000000000000000 ]---
| Kernel panic - not syncing: Oops - Undefined instruction: Fatal exception in interrupt | Kernel Offset: 0x291fb1000000 from 0xffff800080000000 | PHYS_OFFSET: 0x40000000 | CPU features: 0x0,00000000,0052802f,ffb88f43,3afcf73f | Memory Limit: none

Viết lại hàm `restore_sve_fpsimd_context()` để từ chối các trường hợp mà cờ `SVE_SIG_FLAG_SM` không được đặt và payload SVE hiện diện. Vì hàm `parse_user_sigframe()` đã từ chối các khung tín hiệu SVE khi cả SVE lẫn SME đều không được hỗ trợ, nên việc `restore_sve_fpsimd_context()` xử lý trường hợp không có cái nào trong hai thành phần này là không cần thiết.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

chịu trách nhiệm

Linux

Đặt trước

25/09/2026

Tiết lộ

18/10/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

Do you want to use VulDB in your project?

Use the official API to access entries easily!