CVE-2023-53675CVE-2023-53675是Linux内核SCSI Enclosure Services(SES)子系统中的一个高危安全漏洞。该漏洞位于`ses_enclosure_data_process()`函数中,涉及`desc_ptr`指针的越界访问问题。SES(SCSI Enclosure Services)是用于管理SCSI设备机柜(如磁盘阵列机箱)中各种组件(如电源、风扇、温度传感器等)的标准接口。
该漏洞的根本原因在于`ses_enclosure_data_process()`函数在处理SES设备上报的配置数据时,未对`desc_ptr`指针进行充分的边界检查。当SES设备返回的描述符数据长度异常或格式不符合预期时,`desc_ptr`可能指向超出预分配缓冲区边界的内存区域,导致越界读取敏感内核数据(影响机密性)以及越界写入引发内核崩溃或内存损坏(影响可用性)。
根据CVSS 3.1评分向量(AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H),该漏洞评分为7.1分,属于高危级别。攻击者需要本地访问权限和低权限用户身份即可利用,无需用户交互。漏洞利用成功后,攻击者可以读取内核内存中的敏感信息(如内核栈数据、密钥或其他进程的内存内容),并可能导致系统拒绝服务(内核panic)。该漏洞已于2025年10月7日公开披露,涉及多个Linux内核稳定版本的修复补丁。
该漏洞的技术原理如下:
1. **漏洞位置**:`ses_enclosure_data_process()`函数是Linux内核SCSI SES驱动的核心数据处理函数,负责解析SES设备通过SCSI命令返回的enclosure configuration diagnostic pages。
2. **触发条件**:当内核遍历SES设备返回的描述符(descriptor)数据时,使用`desc_ptr`指针逐个访问各个描述符条目。在原始代码中,`desc_ptr`的递增和边界检查逻辑存在缺陷——当SES设备(可能为恶意模拟设备或异常硬件)返回的描述符长度字段异常时,`desc_ptr`可能跳过正常的边界检查。
3. **越界机制**:`desc_ptr`指向的内存区域在函数入口处根据页面头信息分配,如果描述符的实际长度超过了缓冲区预分配的大小,且代码没有对`desc_ptr + desc_len`进行`buffer_end`的有效性验证,就会发生越界访问。
4. **利用方式**:本地低权限攻击者可以通过以下方式触发该漏洞:
- 加载一个伪造的SES SCSI设备(如通过QEMU虚拟机或USB模拟设备)
- 当内核SCSI子系统扫描到该设备并调用`ses_enclosure_data_process()`时
- 精心构造返回的配置诊断页面数据,使描述符长度字段异常
- 触发`desc_ptr`越界读取内核敏感数据,或越界写入导致内核崩溃
5. **影响范围**:越界读取可泄露内核内存中的敏感信息(C:H),越界写入可导致内核panic或内存破坏引发系统不可用(A:H)。由于完整性影响为None(I:N),该漏洞不直接用于权限提升,但可作为信息泄露或拒绝服务攻击的载体。