Remote-Schwachstelle bei der Implementierung des TIPC-Protokolls im Linux-Kernel

In der Implementierung des im Linux-Kernel enthaltenen Netzwerkprotokolls TIPC (Transparent Inter-Process Communication) wurde eine kritische Schwachstelle (CVE-2021-43267) identifiziert, die die Remote-Codeausführung mit Kernel-Berechtigungen durch Senden eines speziell entwickelten Netzwerkpakets ermöglicht. Die Gefahr des Problems wird durch die Tatsache gemindert, dass der Angriff die explizite Aktivierung der TIPC-Unterstützung im System erfordert (Laden und Konfigurieren des tipc.ko-Kernelmoduls), was in nicht spezialisierten Linux-Distributionen standardmäßig nicht erfolgt.

Das TIPC-Protokoll wird seit dem Linux-Kernel 3.19 unterstützt, der Code, der zu der Sicherheitslücke führte, war jedoch im 5.10-Kernel enthalten. Die Schwachstelle wurde in den Kerneln 5.15.0, 5.10.77 und 5.14.16 behoben. Das Problem tritt in Debian 11, Ubuntu 21.04/21.10, SUSE (im noch unveröffentlichten SLE15-SP4-Zweig), RHEL (ob der anfällige Fix zurückportiert wurde, muss noch detailliert beschrieben werden) und Fedora auf und muss noch behoben werden. Für Arch Linux wurde bereits ein Kernel-Update veröffentlicht. Distributionen älter als 5.10, wie Debian 10 und Ubuntu 20.04, sind nicht betroffen.

Das TIPC-Protokoll wurde ursprünglich von Ericsson entwickelt, dient der Organisation der Interprozesskommunikation in einem Cluster und wird hauptsächlich auf Clusterknoten aktiviert. TIPC kann sowohl über Ethernet als auch über UDP (Netzwerkport 6118) arbeiten. Beim Arbeiten über Ethernet kann ein Angriff aus dem lokalen Netzwerk erfolgen, bei Verwendung von UDP aus dem globalen Netzwerk, sofern der Port nicht durch eine Firewall abgedeckt ist. Der Angriff kann auch von einem unprivilegierten lokalen Benutzer des Hosts ausgeführt werden. Um TIPC zu aktivieren, müssen Sie das Kernelmodul tipc.ko laden und die Bindung an eine Netzwerkschnittstelle mithilfe von netlink oder dem Dienstprogramm tipc einrichten.

Die Sicherheitslücke manifestiert sich in der Funktion tipc_crypto_key_rc und wird durch die fehlende ordnungsgemäße Überprüfung der Übereinstimmung zwischen dem Header und der tatsächlichen Datengröße beim Parsen von Paketen mit dem Typ MSG_CRYPTO verursacht, die zum Abrufen von Verschlüsselungsschlüsseln von anderen Knoten im Cluster zum Entschlüsseln verwendet werden Nachrichten, die von diesen Knoten gesendet werden. Die Größe der in den Speicher kopierten Daten wird als Differenz zwischen den Werten der Felder mit der Nachrichtengröße und der Headergröße berechnet, jedoch ohne Berücksichtigung der tatsächlichen Größe des in der Nachricht übertragenen Namens des Verschlüsselungsalgorithmus und den Inhalt des Schlüssels. Es wird davon ausgegangen, dass die Größe des Algorithmusnamens festgelegt ist und zusätzlich ein separates Attribut mit einer Größe für den Schlüssel übergeben wird und der Angreifer in diesem Attribut einen vom tatsächlichen Wert abweichenden Wert angeben kann, der zur Meldung führt tail wird außerhalb des zugewiesenen Puffers geschrieben. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned intkeylen; /* in Bytes */ char key[]; };

Remote-Schwachstelle bei der Implementierung des TIPC-Protokolls im Linux-Kernel


Source: opennet.ru

Kommentar hinzufügen