Im Code des iSCSI-Subsystems des Linux-Kernels wurde eine Schwachstelle (CVE-2021-27365) identifiziert, die es einem nicht privilegierten lokalen Benutzer ermöglicht, Code auf Kernel-Ebene auszuführen und Root-Rechte im System zu erlangen. Ein funktionierender Exploit-Prototyp steht zur Verfügung. Die Schwachstelle wurde in den Kernel-Updates 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 und 4.4.260 behoben. Updates für Kernel-Pakete sind in den Distributionen Debian, Ubuntu, SUSE/openSUSE, Arch Linux und Fedora verfügbar. Für RHEL wurden bisher keine Korrekturen veröffentlicht.
Das Problem wird durch einen Fehler in der Funktion iscsi_host_get_param() aus dem libiscsi-Modul verursacht, der bereits 2006 während der Entwicklung des iSCSI-Subsystems eingeführt wurde. Aufgrund fehlender angemessener Größenkontrollen können einige Stringattribute von iSCSI, wie z.B. Hostname oder Benutzername, das PAGE_SIZE (4 KB) überschreiten. Die Schwachstelle kann ausgenutzt werden, indem ein nicht privilegierter Benutzer Netlink-Nachrichten sendet, die iSCSI-Attribute auf Werte setzen, die das PAGE_SIZE überschreiten. Beim Lesen dieser Attributdaten über sysfs oder seqfs wird Code aufgerufen, der die Attribute an die Funktion sprintf übergibt, um sie in einen Puffer zu kopieren, dessen Größe PAGE_SIZE beträgt.
Die Ausnutzung der Schwachstelle in den Distributionen hängt von der Unterstützung des automatischen Ladens des Kernelmoduls scsi_transport_iscsi beim Versuch der Erstellung eines NETLINK_ISCSI-Sockets ab. In Distributionen, in denen dieses Modul automatisch geladen wird, kann der Angriff unabhängig von der Nutzung der iSCSI-Funktionalität durchgeführt werden. Dabei ist für eine erfolgreiche Anwendung des Exploits zusätzlich die Registrierung von mindestens einem iSCSI-Transport erforderlich. Zur Registrierung eines Transports kann das Kernelmodul ib_iser verwendet werden, das automatisch geladen wird, wenn ein nicht privilegierter Benutzer einen NETLINK_RDMA-Socket erstellt.
Die automatische Ladefunktion der für die Verwendung des Exploits benötigten Module wird in CentOS 8, RHEL 8 und Fedora durch die Installation des rdma-core-Pakets unterstützt, das eine Abhängigkeit für einige beliebte Pakete darstellt und standardmäßig in Konfigurationen für Workstations, Serversysteme mit GUI und Host-Umgebungen für Virtualisierung installiert wird. Dabei wird rdma-core nicht installiert, wenn die Serverbuild nur im Konsolenmodus läuft oder ein minimales Installationsimage verwendet wird. Beispielsweise ist das Paket Teil der Grundausstattung von Fedora 31 Workstation, jedoch nicht in Fedora 31 Server enthalten. Debian und Ubuntu sind weniger anfällig für das Problem, da das Paket rdma-core die für den Angriff erforderlichen Kernelmodule nur bei Vorhandensein von RDMA-Hardware lädt.

Als Sicherheitsumgehung kann das automatische Laden des Moduls libiscsi verboten werden: echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf
Zusätzlich wurden im iSCSI-Subsystem zwei weniger gefährliche Schwachstellen behoben, die zu einem Datenleck aus dem Kernel führen können: CVE-2021-27363 (Offenlegung von Informationen über den iSCSI-Transport-Descriptor über sysfs) und CVE-2021-27364 (Lesen aus einem Bereich außerhalb der Puffergrenzen). Diese Schwachstellen können ausgenutzt werden, um über einen Netlink-Socket mit dem iSCSI-Subsystem zu interagieren, ohne die erforderlichen Berechtigungen zu besitzen. Beispielsweise kann ein unprivilegierter Benutzer eine Verbindung zu iSCSI herstellen und den Befehl "end a session" senden, um eine Sitzung zu beenden.
Quelle: opennet.ru
