Выдаленая ўразлівасць у рэалізацыі пратаколу TIPC у ядры Linux

У пастаўлянай у ядры Linux рэалізацыі сеткавага пратаколу TIPC (Transparent Inter-process Communication) выяўлена крытычная ўразлівасць (CVE-2021-43267), якая дазваляе выдалена праз адпраўку адмыслова аформленага сеткавага пакета дамагчыся выкананні свайго кода з прывілеямі ядра. Небяспека праблемы згладжвае тое, што для нападу патрабуецца відавочнае ўключэнне падтрымкі TIPC у сістэме (загрузка і налада модуля ядра tipc.ko), якая ў неспецыялізаваных дыстрыбутывах Linux не вырабляецца па змаўчанні.

Пратакол TIPC падтрымліваецца пачынальна з ядра Linux 3.19, але які прыводзіць да ўразлівасці код быў уключаны ў склад ядра 5.10. Уразлівасць ухіленая ядрах 5.15.0, 5.10.77 і 5.14.16. Праблема праяўляецца і пакуль не ўхіленая ў Debian 11, Ubuntu 21.04/21.10, SUSE (у яшчэ не выпушчанай галінцы SLE15-SP4), RHEL (пакуль не дэталізуецца ці было бэкпартавана ўразлівае выпраўленне) і Fedora. Абнаўленне ядра ўжо выпушчана для Arch Linux. Дыстрыбутывы з ядром старэйшыя за 5.10, такія як Debian 10 і Ubuntu 20.04, праблеме не схільныя.

Пратакол TIPC першапачаткова распрацаваны кампаніяй Ericsson, прызначаны для арганізацыі міжпрацэснага ўзаемадзеяння ў кластары і актывуецца галоўнай выявай на вузлах кластараў. TIPC можа працаваць як па-над Ethernet, так і па-над UDP (сеткавы порт 6118). У выпадку працы па-над Ethernet напад можа быць здзейснена з лакальнай сеткі, а пры выкарыстанні UDP - з глабальнай сеткі, калі порт не прычынены міжсеткавым экранам. Атака таксама можа быць здзейснена непрывілеяваным лакальным карыстальнікам хаста. Для актывацыі TIPC неабходна загрузка модуля ядра tipc.ko і налада прывязкі да сеткавага інтэрфейсу пры дапамозе netlink або ўтыліты tipc.

Уразлівасць выяўляецца ў функцыі tipc_crypto_key_rc і выкліканая адсутнасцю належнай праверкі адпаведнасці паказанага ў загалоўку і фактычнага памеру дадзеных пры разборы пакетаў з тыпам MSG_CRYPTO, выкарыстоўваных для атрымання ключоў шыфравання ад іншых вузлоў а кластары з мэтай наступнай расшыфроўкі паведамленняў у адпраў. Памер капіяваных у памяць дадзеных вылічаецца як розніца паміж значэнняў палёў з памерам паведамлення і памерам загалоўка, але без уліку фактычнага памеру перадаецца ў паведамленні назвы алгарытму шыфравання і змесціва ключа. Разумеецца, што памер назову алгарытму фіксаваны, а для ключа дадаткова перадаецца асобны атрыбут з памерам, і атакавалы можа паказаць у гэтым атрыбуце значэнне, адрознае ад фактычнага, што прывядзе да запісу хваста паведамлення за межы вылучанага буфера. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* in bytes */ char key[]; };

Выдаленая ўразлівасць у рэалізацыі пратаколу TIPC у ядры Linux


Крыніца: opennet.ru

Дадаць каментар