Sicherheitslücke in XFS, die das Lesen von Rohdaten von Blockgeräten ermöglicht

Im XFS-Dateisystemcode wurde eine Schwachstelle (CVE-2021-4155) entdeckt, die es einem lokalen unprivilegierten Benutzer ermöglicht, ungenutzte Blockdaten direkt von einem Blockgerät zu lesen. Von diesem Problem sind alle Hauptversionen des Linux-Kernels betroffen, die älter als 5.16 sind und den XFS-Treiber enthalten. Der Fix war in Version 5.16 sowie in den Kernel-Updates 5.15.14, 5.10.91, 5.4.171, 4.19.225 usw. enthalten. Der Stand der Generierung von Updates mit der Behebung des Problems in Distributionen kann auf diesen Seiten verfolgt werden: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Die Sicherheitslücke wird durch das fehlerhafte Verhalten zweier XFS-spezifischer ioctl(XFS_IOC_ALLOCSP) und ioctl(XFS_IOC_FREESP) verursacht, die das funktionale Analogon des kernweiten Systemaufrufs fallocate() sind. Beim Erhöhen einer Dateigröße, die nicht blockausgerichtet ist, setzen die XFS_IOC_ALLOCSP/XFS_IOC_FREESP-Ioctls die Endbytes erst an der nächsten Blockgrenze zurück. Somit kann ein Angreifer auf einem XFS mit einer Standardblockgröße von 4096 Bytes bis zu 4095 Bytes zuvor geschriebener Daten aus jedem Block lesen. Diese Bereiche können Daten aus gelöschten Dateien, defragmentierten Dateien und Dateien mit deduplizierten Blöcken enthalten.

Mit einem einfachen Exploit-Prototyp können Sie Ihr System auf ein Problem überprüfen. Wenn es nach Ausführung der vorgeschlagenen Befehlsfolge gelingt, Shakespeares Text zu lesen, ist der FS-Treiber angreifbar. Für die erstmalige Bereitstellung der XFS-Partition für die Demonstration sind Superuser-Rechte erforderlich.

Da ioctl(XFS_IOC_ALLOCSP) und ioctl(XFS_IOC_FREESP) in ihrer Funktionalität fast identisch mit dem Standardfallocate() sind und ihr einziger Unterschied im Datenleck besteht, gleicht ihre Präsenz einer Hintertür. Trotz der allgemeinen Richtlinie, bestehende Schnittstellen im Kernel nicht zu ändern, wurde auf Vorschlag von Linus beschlossen, diese ioctls in der nächsten Version vollständig zu entfernen.

Source: opennet.ru

Kommentar hinzufügen