🔴 【深度分析】严重安全漏洞:CVE-2026-53186

CVSS 评分: 严重(9.1)🔴  状态: Received  发布时间: 2026-06-25


🔍 技术细节速览

字段 值
CVE ID CVE-2026-53186
CVSS 评分 9.1 🔴
严重程度 严重
CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
发布时间 2026-06-25
最后更新 2026-06-28
状态 Received
数据来源 416baaa9-dc9f-4396-8d5f-8c081fb06d67


CVSS 评分: 9.1 (严重)
攻击向量: 网络 (AV:N)
攻击复杂度: 低 (AC:L)
所需权限: 无 (PR:N)
用户交互: 无 (UI:N)
影响: 机密性高, 可用性高


漏洞概述

CVE-2026-53186 是 Linux 内核中 InfiniBand SRP (SCSI RDMA Protocol) 协议实现的一个严重安全漏洞。该漏洞位于 drivers/infiniband/ulp/srp/ib_srp.c 文件中的 srp_process_rsp() 函数。

漏洞本质: 当 SRP 目标端(Target)返回一个带有超大数据偏移量(resp_data_len)的 SRP_RSP 响应数据包时,发起端(Initiator)在处理该响应的 sense 数据拷贝过程中,对源地址范围没有进行有效边界检查,导致内核可以从接收缓冲区之外的内存区域读取数据。攻击者通过精心构造的恶意响应数据包,可以触发内核内存的越界读取,从而造成信息泄露(破坏机密性)或导致内核崩溃(破坏可用性)。

影响范围: 所有加载了 ib_srp 模块的 Linux 系统,只要该系统作为 SRP 发起端连接到 InfiniBand/RoCE 网络,并接收来自该网络的 SRP_RSP 响应,都可能受到影响。攻击者需要能够控制或伪装成一个合法的 SRP 目标,向发起端发送恶意构造的响应。

受影响组件与版本

  • 受影响组件: Linux 内核 SCSI RDMA Protocol (SRP) initiator 实现 (drivers/infiniband/ulp/srp/ib_srp.c)
  • 受影响版本: 所有包含该漏洞函数且未打补丁的 Linux 内核版本(从该功能被引入至今的版本)。
  • 修复版本: 补丁已合入主线内核。具体修复版本取决于发行版维护者的回传。

漏洞原理分析

技术细节

  1. 正常流程: 当一个 SRP 目标向发起端返回一个包含 SCSI sense 数据的 SRP_RSP 响应时:

    • srp_process_rsp() 被调用。
    • 响应数据的起始指针为 rsp->data + resp_data_len。其中 resp_data_len 是来自目标端的一个完全由远端控制的 32 位无符号值。
    • 代码会调用类似 memcpy(sense_buffer, src, min(SCSI_SENSE_BUFFERSIZE, sense_len)) 的调用,其中 sense_len 也是由目标端控制。
    • 现有限制: memcpy 的目标缓冲区大小被限制在 SCSI_SENSE_BUFFERSIZE(96字节),拷贝字节数不超出该值。但源地址的偏移量(resp_data_len)没有任何下限或上限检查。
  2. 漏洞触发条件:

    • 攻击者控制的 SRP 目标返回一个设置了 SRP_RSP_FLAG_SNSVALID 标志的 SRP_RSP 响应。
    • 攻击者将 resp_data_len 设置成一个极大的值,例如接近 0xFFFFFFFF。
  3. 越界读取造成的后果:

    • 源地址计算: src = rsp->data + resp_data_len。由于 resp_data_len 极大,这个指针将远远超出实际收到的 RDMA 数据缓冲区(即 wc->byte_len 所描述的范围)。
    • 拷贝操作: 内核尝试从该无效的源地址读取最多 96 字节的数据,拷贝到内核内部的 sense 缓冲区。
    • 结果:
      • 机密性泄露(C:H): 如果该无效地址恰好指向其他进程或内核内部的数据结构(例如其他 RDMA 连接的数据、文件系统缓存、内核密钥等),这些数据将被拷贝到 sense 缓冲区并可能被用户空间程序通过常规 SCSI 命令返回给用户,造成信息泄露。
      • 可用性破坏(A:H): 如果该无效地址位于一个未映射的虚拟地址空间、I/O 空间或只读内存区域,memcpy 将触发一个 页错误(page fault)。在大多数配置下,这会导致内核直接崩溃(内核恐慌或 Oops),导致整个系统宕机。

攻击向量

  • 网络: 攻击向量为网络,但前提是攻击者能够与受害者的 InfiniBand/RoCE 接口建立 SRP 连接。这通常意味着攻击者在同一 InfiniBand/RoCE 子网内,或者能够通过网络路由到达该子网(通常 InfiniBand/RoCE 网络被认为是受信环境,但此漏洞证明假设不成立)。
  • 权限: 不需要任何预先的认证或授权。只要发起端配置了自动或手动连接到该恶意目标,一次正常的 RDMA 数据接收即可触发。
  • 用户交互: 不需要。

影响评估

威胁等级: 严重 (CVSS 9.1)

  • 攻击复杂度: 低 (AC:L)。攻击者只需要能够发送一个符合 SRP 协议的恶意响应包,不需要利用其他复杂协议漏洞。
  • 攻击前提: 攻击者需要具备在 InfiniBand/RoCE 网络上发送数据包的能力,并能欺骗或控制一个 SRP 目标。在多数数据中心场景下,这需要攻击者控制了同一网络内的另一台主机或存储设备。
  • 潜在后果:
    • 内核崩溃: 导致系统完全不可用。
    • 敏感数据泄露: 泄露内核内存中的密码、密钥、用户数据等,可能导致更严重的后续攻击。
    • 横向移动: 利用泄露的内存信息,攻击者可能进一步攻击同一宿主机上的其他虚拟机或容器。

与其他协议对比

报告明确指出,Linux 内核中其他类似协议(如 iSER 和 NVMe-RDMA)的接收路径已经在使用 wc->byte_len(实际接收到的 RDMA 消息长度)来安全地限制解析范围。ib_srp 模块未能做到这一点,因此该漏洞属于长期存在的安全疏漏。

修复建议

官方补丁

  • 首选方案: 升级到已包含修复补丁的 Linux 内核版本。补丁已合入主线内核。
  • 修复逻辑: 补丁增加了对 resp_data_len 的边界检查。具体来说,在处理 sense 数据前,代码会计算响应头、响应数据以及 sense 区域所需的最小总长度,然后将其与 wc->byte_len(实际接收到的字节数)进行比较。只有当所有部分都能被实际接收到的数据完整覆盖时,才进行 sense 数据的拷贝;否则,丢弃 sense 数据并记录一条内核日志告警。

临时缓解措施

  1. 禁用 SRP 服务: 如果不需要使用 SRP 协议,可以完全禁用或卸载 ib_srp 内核模块:

    sudo modprobe -r ib_srp
    # 并将 blacklist 加入 /etc/modprobe.d/ 防止下次启动时加载
    echo "blacklist ib_srp" | sudo tee /etc/modprobe.d/blacklist-ib_srp.conf
    
  2. 网络隔离: 严格限制 InfiniBand/RoCE 网络的访问。只允许受信的主机和存储设备接入,并使用网络策略(如 ACL、分区)阻止未经授权的设备连接到 SRP 发起端所在的子网。

  3. 监控与检测: 监控系统日志(dmesg / kern.log)中是否出现 ib_srp 相关的异常告警或崩溃记录,特别是与 resp_data_len 或 srp_process_rsp 相关的日志条目。

推荐操作

立即在所有运行 SRP 发起端的主机上应用内核安全补丁。由于漏洞可被远程利用且无需认证,其实际风险非常高。

参考资料

  • [1] CVE 详情页: https://nvd.nist.gov/vuln/detail/CVE-2026-53186
  • [2] NVD 漏洞描述: NVD 页面中的原始描述(如上文)。
  • [3] Linux 内核邮件列表补丁: 该漏洞的修复补丁已通过 Linux 内核社区提交并合入,可在内核 Git 仓库中查找相关的 commit 记录(关键词:srp_process_rsp, sense, byte_len)。
  • [4] CWE 分类: 尽管 NVD 未明确指定,但此漏洞符合 CWE-125: Out-of-bounds Read(越界读取)和 CWE-129: Improper Validation of Array Index(不正确的数组索引验证)的特征。

分析总结: 该漏洞是一个典型的、由对来自网络的未信任数据(resp_data_len)缺乏充分边界检查导致的内核越界读取漏洞。由于 SRP 协议在数据中心和 HPC 环境中的广泛使用,且攻击向量距离较近,该漏洞具有很高的实际威胁。建议相关维护者立即采取行动。