Piegādātajā kodolā Linux TIPC (Transparent Inter-process Communication) tīkla protokola ieviešanā ir konstatēta kritiska ievainojamība (CVE-2021-43267). Šī ievainojamība ļauj attāliem uzbrucējiem izpildīt kodu ar kodola privilēģijām, nosūtot speciāli izveidotu tīkla paketi. Ievainojamību mazina fakts, ka uzbrukumam ir nepieciešams skaidri iespējot TIPC atbalstu sistēmā (ielādēt un konfigurēt tipc.ko kodola moduli), kas nav pieejams nespecializētās versijās. Linux netiek ražots pēc noklusējuma.
TIPC protokols tiek atbalstīts kopš kodola. Linux 3.19, bet kods, kas izraisa ievainojamību, bija iekļauts kodola 5.10 versijā. Ievainojamība ir novērsta kodola 5.15.0, 5.10.77 un 5.14.16 versijās. Problēma izpaužas un vēl nav novērsta kodola 5.10.0, 5.10.77 un 5.14.16 versijās. Debian 11, Ubuntu 21.04. gada 21.10. oktobrī SUSE (neizlaistajā SLE15-SP4 atzarā), RHEL (pagaidām nav informācijas par to, vai ievainojamības labojums ir pārnests atpakaļ) un Fedora. Arch jau ir izlaists kodola atjauninājums. LinuxIzplatījumi ar kodolu, kas vecāks par 5.10, piemēram, Debian 10 un Ubuntu 20.04., problēma to neietekmē.
TIPC protokols, ko sākotnēji izstrādāja Ericsson, ir paredzēts starpprocesu saziņas nodrošināšanai klasterī un galvenokārt tiek aktivizēts klastera mezglos. TIPC var darboties gan Ethernet, gan UDP tīklā (tīkla ports 6118). Darbojoties Ethernet tīklā, uzbrukumu var veikt no lokālā tīkla, savukārt, izmantojot UDP, uzbrukumu var veikt no globālā tīkla, ja ports nav aizsargāts ar ugunsmūri. Uzbrukumu var veikt arī neprivileģēts lokālais lietotājs resursdatorā. Lai aktivizētu TIPC, ir jāielādē tipc.ko kodola modulis un jākonfigurē saistīšana ar tīkla saskarni, izmantojot netlink vai tipc utilītu.
Šī ievainojamība rodas funkcijā tipc_crypto_key_rc, un to izraisa nepietiekama galvenes lieluma un faktiskā datu lieluma validācija, parsējot MSG_CRYPTO paketes. Paketes tiek izmantotas, lai iegūtu šifrēšanas atslēgas no citiem mezgliem klasterī, lai vēlāk atšifrētu no šiem mezgliem nosūtītos ziņojumus. Atmiņā kopēto datu lielums tiek aprēķināts kā starpība starp ziņojuma lieluma lauku un galvenes lielumu, bet ignorējot ziņojumā pārraidītā šifrēšanas algoritma nosaukuma un atslēgas satura faktisko lielumu. Tiek pieņemts, ka algoritma nosaukuma lielums ir fiksēts, un atslēgai papildus tiek pārraidīts atsevišķs atribūts ar lielumu. Uzbrucējs šajā atribūtā var norādīt vērtību, kas atšķiras no faktiskās vērtības, kā rezultātā ziņojuma daļa tiks ierakstīta ārpus piešķirtās bufera robežas. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* baitos */ char key[]; };

Avots: opennet.ru
