CVE-2026-43476Linux内核中的sps30_i2c驱动程序在读取测量数据时存在缓冲区大小错误。由于误用sizeof(num)导致计算出的缓冲区大小(8字节)与预期数据结构大小(4字节)不匹配。本地低权限攻击者可利用此漏洞导致内存破坏,进而可能造成信息泄露、权限提升或拒绝服务。
该漏洞位于drivers/iio/chemical/sps30_i2c.c文件的sps30_i2c_read_meas()函数中。开发人员本意是获取__be32类型数据的大小(4字节),但使用了sizeof(num),其中num为size_t类型或指针。在64位系统上,sizeof(size_t)为8字节。当利用此错误的大小进行I2C数据读取或内存拷贝操作时,会多处理4字节的内存空间。这种越界读写可能破坏栈帧或堆内存结构,攻击者可通过恶意的I/O操作触发该漏洞,结合本地利用技术实现提权。