Fjern sårbarhed i implementeringen af TIPC-protokollen i Linux-kernen

I den kerne af Linux-implementeringen af netværksprotokollen TIPC (Transparent Inter-process Communication) er der identificeret en kritisk sårbarhed (CVE-2021-43267). Denne sårbarhed kan udnyttes til at udføre ondsindet kode med kernelprivilegier ved at sende et specielt konstrueret netværkspakke. Risikoen ved problemet mindskes dog af, at angrebet kræver, at TIPC-support er aktivt i systemet (indlæsning og konfiguration af kernelmodulet tipc.ko), hvilket ikke gøres som standard i de generelle Linux-distributioner.

TIPC-protokollen har været understøttet siden kernel 3.19, men den kode, der fører til sårbarheden, blev inkluderet i kernel 5.10. Sårbarheden er blevet rettet i kernerne 5.15.0, 5.10.77 og 5.14.16. Problemet ses stadig og er ikke blevet løst i Debian 11, Ubuntu 21.04/21.10, SUSE (i en endnu ikke udgivet version af SLE15-SP4), RHEL (det er endnu ikke specificeret, om den sårbare patch er blevet backportet) og Fedora. Kernelopdateringen er allerede udgivet for Arch Linux. Distributioner med kerner ældre end 5.10, såsom Debian 10 og Ubuntu 20.04, er ikke påvirket af problemet.

TIPC-protokollen blev oprindeligt udviklet af Ericsson og er beregnet til at organisere inter-process kommunikation i et cluster, som hovedsageligt aktiveres på clusterknudepunkter. TIPC kan fungerer både over Ethernet og over UDP (netværksport 6118). Hvis det kører over Ethernet, kan et angreb udføres fra det lokale netværk, mens det ved brug af UDP kan udføres fra det globale netværk, hvis porten ikke er dækket af en firewall. Et angreb kan også udføres af en almindelig lokal bruger på værten. For at aktivere TIPC kræves det, at modulerne tipc.ko indlæses i kernen og netbindingen konfigureres via netlink eller tipc-værktøjet.

Sårbarheden viser sig i funktionen tipc_crypto_key_rc og er forårsaget af manglende tilstrækkelig kontrol af overensstemmelsen mellem den angivne i headeren og den faktiske datastørrelse, når der parses pakker med typen MSG_CRYPTO, der anvendes til at modtage krypteringsnøgler fra andre noder i klyngen for at kunne dekryptere meddelelser sendt fra disse noder. Den størrelse, der kopieres til hukommelsen, beregnes som forskellen mellem værdierne for meddelelsens størrelse og headerens størrelse, men uden at tage højde for den faktiske størrelse af den sent krypteringsalgoritme og nøgleindholdet. Det antages, at størrelsen på algoritmens navn er fast, og for nøglen sendes der desuden en separat attribut med størrelsen, og angriberen kan angive en værdi i denne attribut, der adskiller sig fra den faktiske, hvilket vil føre til, at slutningen af meddelelsen skrives uden for det tildelte buffer. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* i bytes */ char key[]; };

Fjern sårbarhed i implementeringen af TIPC-protokollen i Linux-kernen


Kilde: opennet.ru
Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster