A Linux kernel implementation of the network protocol TIPC (Transparent Inter-process Communication) has a critical vulnerability (CVE-2021-43267) that allows remote execution of code with kernel privileges through the sending of specially crafted network packets. The danger of this issue is mitigated by the requirement that the TIPC support must be explicitly enabled in the system (loading and configuring the kernel module tipc.ko), which is not done by default in most general-purpose Linux distributions.
The TIPC protocol has been supported since Linux kernel 3.19, but the vulnerable code was included starting from version 5.10. The vulnerability has been fixed in kernels 5.15.0, 5.10.77, and 5.14.16. The issue is present and has not yet been resolved in Debian 11, Ubuntu 21.04/21.10, SUSE (in the yet-to-be-released branch SLE15-SP4), RHEL (it is not yet detailed whether the vulnerable fix has been backported), and Fedora. A kernel update has already been released for Arch Linux. Distributions with kernels older than 5.10, such as Debian 10 and Ubuntu 20.04, are not affected.
The TIPC protocol was originally developed by Ericsson, intended for inter-process communication within a cluster and is primarily activated on cluster nodes. TIPC can operate over Ethernet as well as over UDP (network port 6118). In the case of operation over Ethernet, an attack can be carried out from the local network, while using UDP — from the global network if the port is not closed by a firewall. An attack can also be executed by an unprivileged local user of the host. To activate TIPC, loading the kernel module tipc.ko and configuring the binding to the network interface using netlink or the tipc utility is necessary.
A sebezhetőség a tipc_crypto_key_rc funkcióban jelentkezik, és az okozza, hogy a MSG_CRYPTO típusú csomagok elemzésekor nem történik megfelelő ellenőrzés a fejlécre megadott és a tényleges adatméret között, amelyeket titkosító kulcsok beszerzésére használnak más csomópontoktól egy klaszterben, e célból az ezekről a csomópontokról küldött üzenetek visszafejtése érdekében. A memóriába másolt adatok mérete a üzenetméret és a fejléc méretének különbségeként kerül kiszámításra, de nem veszi figyelembe a titkosítási algoritmus nevét és a kulcs tartalmát, amely a üzenetben átvitelre kerül. Feltételezhető, hogy az algoritmus neve rögzített méretű, míg a kulcs esetében külön attribútumot is megadnak a mérethez, és a támadó megadhat a kulcsméret attribútumában egy olyan értéket, amely eltér a tényezőtől, ami a megadott tartományon túl terjedő üzenet végét fogja eredményezni. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* byte-ban */ char key[]; };

Forrás: opennet.ru
