Απομακρυσμένη ευπάθεια στην υλοποίηση του πρωτοκόλλου 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

Προσθέστε ένα σχόλιο