前段时间,sudo被曝出无密码root提权漏洞,引起轩然大波,多家公司连夜打补丁,避免损失。风波久久未平。近日,Linux再次被曝出root提权漏洞,而这一次的漏洞潜伏时间长达15年之久!最近,研究人员在Linux内核的iSCSI(小型计算机系统接口)子系统中发现了三个漏洞,这些漏洞可能允许具有基本用户权限的本地攻击者在未打补丁的Linux系统上获得root权限。iSCSI(小型计算机系统接口)定义了一种并行I/O总线和数据协议,用于将各种外围设备(磁盘驱动器、磁带驱动器、调制解调器、打印机、扫描仪、光驱、测试设备和医疗设备)连接到主机。但是,这些安全漏洞只能在本地利用。换句话说,攻击者必须首先利用其他漏洞或使用其他攻击向量来访问易受攻击的设备,然后才能进行后续攻击。15岁的漏洞研究人员表示,该漏洞在2006年iSCSI内核子系统最初开发时就存在,但直到现在才被发现,相隔15年。据研究人员称,这些漏洞影响所有Linux发行版。但幸运的是,易受攻击的scsi_transport_iscsi内核模块默认情况下并未加载。但是,当攻击者以某个版本为目标时,可以加载该模块并利用其进行root升级。Linux内核模块在两种情况下加载:当检测到新硬件时或当内核函数检测到模块丢失时。后一种隐式自动加载更容易被滥用,并且很容易被攻击者触发,从而增加内核的攻击面。研究人员补充说,在CentOS8、RHEL8和Fedora系统上,如果安装了rdma-core包,非特权用户可以自动加载所需的模块。但在Debian和Ubuntu系统上,rdma-core包将仅在RDMA硬件可用时自动加载所需的两个内核模块。因此,该漏洞的影响范围相对有限。漏洞会导致本地权限提升、信息泄露以及拒绝服务访问保护(SMAP)和内核页表隔离(KPTI)。同时,这三个漏洞可能导致本地提权:CVE-2021-27365:堆缓冲区溢出(本地提权、信息泄露、拒绝服务)。该漏洞是通过将iSCSI字符串属性设置为大于一页的值然后尝试读取它来触发的。更具体地说,非特权用户可以向iSCSI子系统(在drivers/scsi/scsi_transport_iscsi.c中)发送netlink消息,它通过drivers/scsi/libiscsi.c中的辅助函数与iSCSI连接相关的属性,例如主机名、用户name等,这些属性的大小只受netlink报文的最大长度限制(取决于处理报文的具体代码,可以是232或者216)。CVE-2021-27363:内核指针泄露(信息泄露)。此漏洞可用于确定iscsi_transport结构的地址。CVE-2021-27364:越界读取(信息泄露、拒绝服务)。与第一个漏洞类似,非特权用户可以制作一条netchain消息,指定驱动程序无法验证的缓冲区大小,从而导致受控的越界读取。此外,这三个漏洞还可能导致数据泄露,并可能被利用来触发拒绝服务条件。由于堆溢出的不确定性,第一个漏洞可以充当不可靠的本地DoS。然而,当与信息泄露相结合时,该漏洞可以被进一步利用为LPE,允许攻击者从非特权用户帐户升级为root。而且这个漏洞还可以用来泄漏内核内存。第二个漏洞(内核指针泄漏)影响较小,仅作为潜在的信息泄漏。第三个漏洞(越界读取)的功能也被限制为潜在的信息泄露甚至不可靠的本地DoS。上述所有三个漏洞都在更新5.11.4、5.10.21、5.4.103、4.19.179、4.14.224、4.9.260和4.4.260中进行了修补,补丁从3月7日开始在主线Linux上提供核心。对于EOL不支持的内核版本,例如3.x和2.6.23,将不会发布任何补丁。如果用户已经安装了其中一个Linux内核版本,他们的设备就不会受到利用这些漏洞的攻击。参考:https://www.bleepingcomputer.com/news/security/15-year-old-linux-kernel-bugs-let-attackers-gain-root-privileges/https://securityaffairs.co/wordpress/115565/安全/linux-kernel-flaws.html
