专家在 Linux 内核中发现三个有 15年历史的新漏洞
具有基本用户权限的本地攻击者可以利用Linux内核中的三个15年漏洞来获取易受攻击的Linux系统上的root用户特权。
GRIMM研究人员在Linux内核的SCSI(小型计算机系统接口)组件中发现了三个漏洞,这些漏洞可以由具有基本用户权限的本地攻击者利用,以在未打补丁的Linux系统上获得root权限。
小型计算机系统接口定义了并行I / O总线和数据协议,以将各种外围设备(磁盘驱动器,磁带驱动器,调制解调器,打印机,扫描仪,光盘驱动器,测试设备和医疗设备)连接到主机电脑。
自2006年开发以来,该组件中就存在漏洞。
第一个漏洞(跟踪名称为CVE-2021-27365)是iscsi子系统中的堆缓冲区溢出。
“通过将iSCSI字符串属性设置为大于一页的值,然后尝试读取它,可以触发该漏洞。” 阅读GRIMM研究人员发表的分析。* “更具体地说,没有特权的用户可以将netlink消息发送到iSCSI子系统(在drivers / scsi / scsi_transport_iscsi.c中),该子系统可通过drivers / scsi中的助手功能设置与iSCSI连接相关的属性,例如主机名,用户名等。 /libiscsi.c。这些属性的大小仅受Netlink消息的最大长度限制(2 *32或2** 16取决于处理消息的特定代码)。”
第二个漏洞(跟踪名称为CVE-2021-27363)是堆溢出漏洞。研究人员发现了一个内核指针泄漏,可用于确定iscsi_Transport结构的地址。
最后一个漏洞(跟踪名称为cve-2021-27364)是一个驻留在libiscsi模块(driver/scsi/libiscsi.c)中的越界内核读取问题。
“类似于第一个漏洞,没有特权的用户可以制作网络链接消息,这些消息指定驱动程序无法验证的缓冲区大小,从而导致可控的越界读取。” 继续分析。“存在多个未经验证的用户控制值,包括计算前一个标头的大小,从而允许从原始堆缓冲区以可控制的32位偏移量读取最多8192个字节。”
这三个漏洞还可能导致数据泄漏,并且可以被利用来触发拒绝服务条件。
“由于堆溢出的不确定性,第一个漏洞可能被用作不可靠的本地DoS。但是,与信息泄漏一起使用时,此漏洞可以进一步用作LPE,使攻击者可以从无特权的用户帐户升级到root用户。不过,不必单独进行信息泄漏,因为此漏洞也可以用来泄漏内核内存。” 继续分析。“第二个漏洞(内核指针泄漏)的影响较小,只能充当潜在的信息泄漏。同样,第三个漏洞(越界读取)也仅限于充当潜在的信息泄漏甚至是不可靠的本地DoS。”
攻击者可能利用这些漏洞绕过安全功能,即内核地址空间布局随机化(KASLR)绕过,主管模式执行保护(SMEP),主管模式访问阻止(SMAP)和内核页表隔离(KPTI)。
这些缺陷会影响所有已装载scsi_transport_iscsi内核模块的Linux发行版,但是好消息是这不是默认设置。
“上面讨论的漏洞来自Linux内核中一个非常老的驱动程序。由于采用了相当新的技术(RDMA)以及基于兼容性而非风险的默认行为,该驱动程序变得更加明显。” 分析结束。“ Linux内核加载模块是因为检测到新硬件,还是因为内核功能检测到缺少模块。”
以下是这些漏洞的时间表:
- 02/17/2021 –已通知Linux安全团队
- 02/17/2021 –申请和收到的CVE编号
- 20/03/07 –修补程序在主线Linux内核中可用
- 2021年3月12日– 公开披露(NotQuite0DayFriday)
