Linux kernel iSCSI多個安全漏洞

發布時間 2021-03-15

0x00 漏洞概述

2021年03月12日,GRIMM的研究人員披露Linux 內核的iSCSI子系統中存在3個已有15年歷史的安全漏洞,具有普通用戶權限的本地攻擊者能夠利用這些漏洞繞過超級用戶模式執行保護(SMEP)、超級用戶模式訪問保護(SMAP)和內核頁表隔離( 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中)會被調用,從而泄露了該句柄(該句柄實際上是內核模塊全局變量中的iscsi_transport結構的指針)。

 

Linux kernel iSCSI越界讀取漏洞(CVE-2021-27364)

由于drivers/scsi/scsi_transport_iscsi.c 受到非root用戶發送的惡意 Netlink 消息的影響,iSCSI中存在越界讀取漏洞。攻擊者可以利用該漏洞造成信息泄露或拒絕服務。

 

影響范圍

所有已加載scsi_transport_iscsi內核模塊的Linux發行版

 

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