CVE-2026-64191 in Linuxthông tin

Tóm tắt

Bởi VulDB • 20/07/2026

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

i2c: stub: Từ chối các lệnh truyền khối I2C có độ dài không hợp lệ

Trường hợp `I2C_SMBUS_I2C_BLOCK_DATA` trong hàm `stub_xfer()` sử dụng `data->block[0]` làm độ dài của lệnh truyền. Kiểm tra hiện tại chỉ giới hạn giá trị này để tránh ghi tràn ra mảng bộ nhớ đệm chip->words[256], nhưng không xác thực nó với `I2C_SMBUS_BLOCK_MAX` (32), đây là giới hạn của vùng liên hợp (union) i2c_smbus_data.block (tổng cộng 34 byte). Trình điều khiển này là một công cụ phát triển/kiểm thử (CONFIG_I2C_STUB=m, không được xây dựng theo mặc định) và phải được tải với tham số chip_addr=.

Người dùng cục bộ có quyền truy cập vào /dev/i2c-* có thể gửi lệnh gọi hệ thống ioctl I2C_SMBUS với `I2C_SMBUS_I2C_BLOCK_DATA` và `data->block[0] > 32`, khiến hàm stub_xfer() đọc hoặc ghi vượt quá cuối vùng liên hợp i2c_smbus_data.block:

BUG: KASAN: stack-out-of-bounds trong stub_xfer (drivers/i2c/i2c-stub.c:223) Đọc kích thước 1 tại địa chỉ ffff88800abcfd92 bởi tiến trình exploit/81 Dấu vết cuộc gọi: <TASK> stub_xfer (drivers/i2c/i2c-stub.c:223) __i2c_smbus_xfer (drivers/i2c/i2c-core-smbus.c:593) i2c_smbus_xfer (drivers/i2c/i2c-core-smbus.c:536) i2cdev_ioctl_smbus (drivers/i2c/i2c-dev.c:391) i2cdev_ioctl (drivers/i2c/i2c-dev.c:478) __x64_sys_ioctl (fs/ioctl.c:583) do_syscall_64 (arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) </TASK>

Lỗi tồn tại vì i2c-stub triển khai .smbus_xfer trực tiếp, bỏ qua việc xác thực I2C_SMBUS_BLOCK_MAX trong hàm i2c_smbus_xfer_emulated(). Trường hợp `I2C_SMBUS_BLOCK_DATA` trong cùng một hàm đã xác thực đúng với `I2C_SMBUS_BLOCK_MAX`, nhưng trường hợp `I2C_SMBUS_I2C_BLOCK_DATA` thì không.

Khắc phục bằng cách từ chối các lệnh truyền có `data->block[0] == 0` hoặc `data->block[0] > I2C_SMBUS_BLOCK_MAX` với mã lỗi -EINVAL, nhất quán với cả trường hợp `I2C_SMBUS_BLOCK_DATA` trong cùng hàm và việc xác thực `I2C_SMBUS_I2C_BLOCK_DATA` trong i2c_smbus_xfer_emulated().

VulDB is the best source for vulnerability data and more expert information about this specific topic.

chịu trách nhiệm

Linux

Đặt trước

19/07/2026

Tiết lộ

20/07/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!