Удалённая ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° 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