Remote-Schwachstelle in der Implementierung des TIPC-Protokolls im Linux-Kernel.

In der im Linux-Kernel integrierten Implementierung des Netzwerkprotokolls TIPC (Transparent Inter-process Communication) wurde eine kritische Sicherheitsanfälligkeit (CVE-2021-43267) identifiziert, die es ermöglicht, durch das Versenden eines speziell gestalteten Netzwerkpakets remote eigenen Code mit Kernelrechten auszuführen. Die Gefahr des Problems wird gemildert, da zur Durchführung eines Angriffs die explizite Aktivierung der TIPC-Unterstützung im System erforderlich ist (Laden und Konfigurieren des Kernelmoduls tipc.ko), was in nicht spezialisierten Linux-Distributionen standardmäßig nicht erfolgt.

Das TIPC-Protokoll wird seit Kernelversion 3.19 unterstützt, jedoch wurde der code, der zur Sicherheitsanfälligkeit führt, in Kernelversion 5.10 integriert. Die Sicherheitsanfälligkeit wurde in den Kernen 5.15.0, 5.10.77 und 5.14.16 behoben. Das Problem tritt auch in Debian 11, Ubuntu 21.04/21.10, SUSE (in der noch nicht veröffentlichten Version SLE15-SP4), RHEL (es wird noch nicht spezifiziert, ob der Sicherheitsfix zurückportiert wurde) und Fedora auf und ist bisher nicht behoben. Ein Kernel-Update wurde bereits für Arch Linux veröffentlicht. Distributionen mit einem Kernel älter als 5.10, wie Debian 10 und Ubuntu 20.04, sind von dem Problem nicht betroffen.

Das TIPC-Protokoll wurde ursprünglich von Ericsson entwickelt und dient der Organisation der Interprozesskommunikation in Clustern, wobei es hauptsächlich an Knoten innerhalb von Clustern aktiv ist. TIPC kann sowohl über Ethernet als auch über UDP (Netzwerkport 6118) betrieben werden. Bei Betrieb über Ethernet kann ein Angriff aus dem lokalen Netzwerk erfolgen, während bei der Verwendung von UDP ein Angriff aus dem globalen Netzwerk möglich ist, wenn der Port nicht durch eine Firewall geschützt ist. Auch ein nicht privilegierter lokaler Benutzer des Hosts kann den Angriff durchführen. Um TIPC zu aktivieren, ist das Laden des Kernelmoduls tipc.ko und die Konfiguration der Bindung an die Netzwerkschnittstelle mithilfe von netlink oder des Tools tipc erforderlich.

Die Schwachstelle tritt in der Funktion tipc_crypto_key_rc auf und wird durch das Fehlen einer ordnungsgemäßen Übereinstimmungsprüfung zwischen der im Header angegebenen und der tatsächlichen Datengröße beim Parsen von Paketen vom Typ MSG_CRYPTO verursacht, die verwendet werden, um Verschlüsselungsschlüssel von anderen Knoten im Cluster zu erhalten, um anschließend Nachrichten zu entschlüsseln, die von diesen Knoten gesendet werden. Die Größe der in den Speicher kopierten Daten wird als Differenz zwischen den Werten der Nachrichtenfeldgrößen und der Headergröße berechnet, wobei jedoch die tatsächliche Größe des im Nachrichteninhalt übermittelten Algorithmusnamens und des Schlüsselinhalts nicht berücksichtigt wird. Es wird angenommen, dass die Größe des Algorithmusnamens fest ist, und für den Schlüssel wird zusätzlich ein separates Attribut mit der Größe übermittelt, was dem Angreifer ermöglicht, in diesem Attribut einen Wert anzugeben, der sich von der tatsächlichen Größe unterscheidet, was dazu führen kann, dass das Ende der Nachricht außerhalb des zugewiesenen Puffers geschrieben wird. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* in Bytes */ char key[]; };

Remote-Schwachstelle in der Implementierung des TIPC-Protokolls im Linux-Kernel.


Quelle: opennet.ru
60GB SSD 8Gb DDR4