ΠžΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½Π° уязвимост ΠΏΡ€ΠΈ внСдряванСто Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TIPC Π² ядрото Π½Π° Linux

Π‘Π΅ΡˆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° уязвимост (CVE-2021-43267) ΠΏΡ€ΠΈ внСдряванСто Π½Π° мрСТовия ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TIPC (Transparent Inter-process Communication), доставСн Π² ядрото Π½Π° Linux, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява дистанционно Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ своя ΠΊΠΎΠ΄ с ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π½Π° ядрото, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ спСциално ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ ΠΌΡ€Π΅ΠΆΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚. ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚Ρ‚Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сС смСкчава ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° изисква ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° 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; /* Π² Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ */ char key[]; };

ΠžΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½Π° уязвимост ΠΏΡ€ΠΈ внСдряванСто Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TIPC Π² ядрото Π½Π° Linux


Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€