Externe kwetsbaarheid in de implementatie van het TIPC-protocol in de Linux-kernel

In de geleverde implementatie van het netwerkprotocol TIPC (Transparent Inter-process Communication) in de Linux-kernel is een kritieke kwetsbaarheid (CVE-2021-43267) ontdekt, die het mogelijk maakt om op afstand door het verzenden van een speciaal opgemaakte netwerkpakket code met kernelrechten uit te voeren. Het gevaar van het probleem wordt gemilderd doordat voor de aanval expliciete inschakeling van TIPC-ondersteuning in het systeem vereist is (het laden en configureren van de kernelmodule tipc.ko), wat in niet-gespecialiseerde Linux-distributies niet standaard gebeurt.

Het TIPC-protocol wordt ondersteund sinds kernelversie 3.19, maar de code die leidt tot de kwetsbaarheid is opgenomen in kernel 5.10. De kwetsbaarheid is verholpen in de kernels 5.15.0, 5.10.77 en 5.14.16. Het probleem doet zich voor en is nog niet verholpen in Debian 11, Ubuntu 21.04/21.10, SUSE (in de nog niet uitgebrachte tak SLE15-SP4), RHEL (vooralsnog is niet gedefinieerd of de kwetsbaarheid is bijgewerkt) en Fedora. Een kernelupdate is al uitgebracht voor Arch Linux. Distributies met een kernel ouder dan 5.10, zoals Debian 10 en Ubuntu 20.04, zijn niet kwetsbaar voor het probleem.

Het TIPC-protocol is oorspronkelijk ontwikkeld door Ericsson en is bedoeld voor interprocesscommunicatie binnen een cluster, waarbij het voornamelijk op clusterknopen wordt geactiveerd. TIPC kan zowel bovenop Ethernet als bovenop UDP (netwerkpoort 6118) werken. Bij gebruik op Ethernet kan een aanval worden uitgevoerd vanuit het lokale netwerk, terwijl bij UDP dit vanuit het wereldwijde netwerk kan gebeuren, mits de poort niet door een firewall is afgeschermd. Een aanval kan ook worden uitgevoerd door een niet-geprivilegieerde lokale gebruiker van de host. Om TIPC te activeren, is het nodig om de kernelmodule tipc.ko te laden en de binding aan de netwerkinterface in te stellen via netlink of de tipc-tool.

De kwetsbaarheid manifesteert zich in de functie tipc_crypto_key_rc en wordt veroorzaakt door het ontbreken van een juiste controle van de overeenstemming tussen de in de header opgegeven en de feitelijke grootte van de gegevens bij het parseren van pakketten van type MSG_CRYPTO, die worden gebruikt om versleutelingssleutels van andere knooppunten in het cluster te verkrijgen voor de daaropvolgende ontsleuteling van berichten die van deze knooppunten worden verzonden. De grootte van de in het geheugen gekopieerde gegevens wordt berekend als het verschil tussen de waarden van de velden voor de berichtgrootte en de header-grootte, maar zonder rekening te houden met de feitelijke grootte van de naam van het versleutelingsalgoritme en de inhoud van de sleutel die in het bericht wordt verzonden. Er wordt aangenomen dat de grootte van de naam van het algoritme vast is, en voor de sleutel wordt bovendien een afzonderlijke eigenschap met de grootte doorgegeven, en de aanvaller kan een waarde opgeven in deze eigenschap die verschilt van de feitelijke, wat leidt tot het schrijven van een berichtstaart buiten de toegewezen buffer. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* in bytes */ char key[]; };

Externe kwetsbaarheid in de implementatie van het TIPC-protocol in de Linux-kernel


Bron: opennet.ru
Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster