CVE-2026-64428 in Linuxthông tin

Tóm tắt

Bởi VulDB • 25/07/2026

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

gpio: sch: sử dụng raw_spinlock_t trong đường dẫn khởi tạo ngắt (irq startup path)

sch_irq_unmask() kích hoạt GPIO IRQ và sau đó cập nhật trạng thái bộ điều khiển thông qua sch_irq_mask_unmask(), hàm này lấy sch->lock bằng cách sử dụng spin_lock_irqsave(). Callback có thể được gọi từ irq_startup() khi đang thiết lập một IRQ đã yêu cầu. Đường dẫn này không cho phép ngủ (non-sleepable), nhưng trên PREEMPT_RT, một spinlock_t thông thường sẽ trở thành sleeping lock.

Vấn đề này được phát hiện bởi công cụ phân tích tĩnh của chúng tôi và sau đó được xem xét thủ công đối với cây mã nguồn hiện tại.

PoC đã kiểm thử giữ nguyên chuỗi gọi request_threaded_irq() -> __setup_irq() -> irq_startup() -> sch_irq_unmask() -> sch_irq_mask_unmask() và sử dụng cạnh (edge) spin_lock_irqsave(&sch->lock) ban đầu. Lockdep báo cáo:

BUG: sleeping function called from invalid context hardirqs last disabled at ... __setup_irq.constprop.0 ... [vuln_msv]
sch_rt_spin_lock_irqsave+0x1c/0x30 [vuln_msv]
sch_irq_mask_unmask.constprop.0+0x31/0x70 [vuln_msv]
__setup_irq.constprop.0+0xd/0x30 [vuln_msv]

Chuyển đổi khóa của bộ điều khiển SCH thành raw_spinlock_t. Khóa này cũng được sử dụng bởi các callback hướng (direction) và giá trị (value) của GPIO, nhưng các đoạn mã quan trọng đó chỉ cập nhật các thanh ghi GPIO dựa trên MMIO và không chứa các thao tác cho phép ngủ. Do đó, việc giữ khóa đăng ký này ở trạng thái non-sleeping là phù hợp đối với các callback irqchip và không làm thay đổi hợp đồng khóa (locking contract) phía GPIO.

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

chịu trách nhiệm

Linux

Đặt trước

19/07/2026

Tiết lộ

25/07/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00173

KEV

không

Các hoạt động

rất thấp

Nguồn

Want to stay up to date on a daily basis?

Enable the mail alert feature now!