SCSI 并行定义I/O 总线和数据协议将硬盘驱动、打印机、扫描仪、光驱、测试设备、医疗设备等外部设备连接到本地计算机。GRIMM在Linux kernel SCSI (Small Computer System Interface,在小型计算机接口中发现了三个安全漏洞:CVE-2021-27363、CVE-2021-27364、CVE-2021-27365。
之一个漏洞CVE-2021-27365是iSCSI 子系统中的堆积和溢出漏洞。iSCSI string 属性大于1页,然后读取该值以触发漏洞。具体来说,本特权用户可以通过drivers/scsi/libiscsi.c中的helper 函数发送netlink 消息到iSCSI 子系统(drivers/scsi/scsi_transport_iscsi.c),子系统负责设置iSCSI 连接相关属性,如hostname、username等等。这些属性值的大小是由netlink 新闻的更大长度受到限制。由于漏洞不确定性的本质,之一个漏洞可以用作不可靠的本地DoS。信息泄露漏洞整合后,可以进一步用于提升本地权限,即攻击者可以从非特权用户账户提升到root。
第二个漏洞CVE-2021-27363 也是一个堆积漏洞,研究人员发现kernel 指针泄漏可用于确定iscsi_transport 结构地址。第二个漏洞的影响稍小,可用于潜在信息泄露。
第三个漏洞CVE-2021-27364 是libiscsi 模块(drivers/scsi/libiscsi.c) 中的一个越界kernel读取漏洞。类似于之一个漏洞,非特权用户可以通过结构制定缓存大小netlink 新闻触发控制的越界读取操作。许多用户控制的值尚未验证,包括前者header计算大小。这个漏洞会导致数据泄漏,使用后会触发DoS 条件。
这些漏洞自2006年以来就存在于系统中,攻击者可以从基本用户权限上升到root此外,攻击者可以利用这些漏洞绕过Kernel Address Space Layout Randomization (KASLR)、Supervisor Mode Execution Protection ( *** EP)、Supervisor Mode Access Prevention ( *** AP)、Kernel Page-Table Isolation (KPTI)等安全特征。漏洞影响scsi_transport_iscsi kernel所有模块加载Linux 发行版,但好消息是模块不是默认设置的。Linux漏洞补丁更新已经发布。
漏洞PoC代码参见GitHub:https://github.com/grimm-co/NotQuite0DayFriday/tree/trunk/2021.03.12-linux-iscsi
完整技术分析参见:https://blog.grimm-co.com/2021/03/new-old-bugs-in-linux-kernel.html
本文翻译自:https://securityaffairs.co/wordpress/115565/security/linux-kernel-flaws.html若转载,请注明原文地址。