Linux kernel iSCSI多个清静误差

宣布时间 2021-03-15

0x00 误差概述

2021年03月12日,GRIMM的研究职员披露Linux 内核的iSCSI子系统中保存3个已有15年历史的清静误差,具有通俗用户权限的外地攻击者能够使用这些误差绕过超等用户模式执行�;ぃ⊿MEP)、超等用户模式会见�;ぃ⊿MAP)和内核页表隔离( KPTI),最终获得Linux系统上的root用户权限 。

0x01 误差详情

image.png

 

SCSI(小型盘算机系统接口)是用于传输数据的标准,该数据最初是通过物理电缆(如硬盘驱动器)传输以将盘算机与外围装备毗连起来的 。SCSI是一个古老的标准,最初宣布于1986年,主要用于服务器上,而iSCSI实质上是基于TCP的SCSI 。

研究职员体现,这些误差会影响所有的Linux刊行版 。默认情形下系统不会加载受影响的scsi_transport_iscsi内核�?�,当Linux内核加载�?槭�,要么是由于检测到新硬件,要么是由于内核函数检测到某个�?樯ナ�,攻击者可能会通过加载该�?椴⑹褂酶媚?槔淳傩腥ㄏ尢嵘� 。影响流程图如下:

image.png

别的,在CentOS 8、RHEL 8和Fedora系统上,若是装置了rdma-core软件包,则没有root权限的用户可以自动加载所需的�?� 。在Debian和Ubuntu系统上,若是RDMA硬件可用,则rdma-core软件包将仅自动加载两个必需的内核�?� 。因此,这些误差将更禁止易被使用 。

3个误差详情如下:

Linux kernel iSCSI缓冲区溢出误差(CVE-2021-27365)

由于某些iSCSI数据结构没有适当的长度限制或检查,并且可能凌驾PAGE_SIZE值 。非root用户的攻击者可以发送与iSCSI关联的Netlink新闻,并使其长度为Netlink新闻的最大长度,并最终可以在目的系统上提升权限、造成信息泄露或拒绝服务 。

 

Linux kernel iSCSI内核指针泄露误差(CVE-2021-27363)

内核指针走漏可以用来确定iscsi_transport结构的地址 。当一个iSCSI传输在iSCSI子系统中注册时,传输的句柄可以通过sysfs文件系统在/sys/class/iscsi_transport/$TRANSPORT_NAME/handle处被非root用户获取 。当读取时,show_transport_handle函数(在drivers/scsi/scsi_transport_iscsi.c中)会被挪用,从而泄露了该句柄(该句柄现实上是内核�?槿直淞恐械膇scsi_transport结构的指针) 。

 

Linux kernel iSCSI越界读取误差(CVE-2021-27364)

由于drivers/scsi/scsi_transport_iscsi.c 受到非root用户发送的恶意 Netlink 新闻的影响,iSCSI中保存越界读取误差 。攻击者可以使用该误差造成信息泄露或拒绝服务 。

 

影响规模

所有已加载scsi_transport_iscsi内核�?榈腖inux刊行版

 

0x02 处置惩罚建议

现在这些误差均已在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),将不会宣布任何补丁 。

下载链接:

https://www.kernel.org/

 

0x03 参考链接

https://blog.grimm-co.com/2021/03/new-old-bugs-in-linux-kernel.html

https://www.bleepingcomputer.com/news/security/15-year-old-linux-kernel-bugs-let-attackers-gain-root-privileges/

https://nvd.nist.gov/vuln/detail/CVE-2021-27363

 

0x04 时间线

2021-03-12  GRIMM披露误差

2021-03-15  VSRC宣布清静通告

 

0x05 附录

 

CVSS评分标准官网:http://www.first.org/cvss/

image.png