Уразливість у стіні пакета util-linux дозволяє розміщувати довільний текст на інших терміналах

уразливість

У разі використання цих недоліків зловмисники можуть отримати несанкціонований доступ до конфіденційної інформації або загалом спричинити проблеми

Нещодавно відкриття a уразливість (вже каталогізовано під CVE-2024-28085) досить конкретна, і знайдена помилкаa у настінній утиліті пакета util-linux, дозволяє зловмиснику маніпулювати керуючими послідовностями, щоб впливати на термінали інших користувачів.

Ця уразливість привертає увагу багатьох, оскільки вона в основному дозволяє фішинг, оскільки утиліта призначена для відправки повідомлень на термінали, ця уразливість використовується для обману та отримання інформації з інших терміналів.

Проблема в тому, що утиліта стіна блокує керуючі послідовності у вхідному потоці, але не в аргументах командного рядка, що дає можливість зловмиснику використовувати escape-послідовності на терміналах інших користувачів.

Наприклад, коли біжить стіна використання escape-послідовностей, які дозволяють переміщувати курсор, видаляти та замінювати вміст на екрані, Зловмисник може імітувати запит пароля sudo на терміналі іншого користувача. Якщо користувач не виявить цю маніпуляцію та надасть свій пароль, пароль відобразиться в історії команд як неіснуюча команда (оскільки пароль було введено безпосередньо в командному рядку замість дійсної команди).

Коли видається попередження про те, що введену команду не знайдено, багато дистрибутивів запускають драйвер /usr/lib/command-not-found. Цей драйвер намагається визначити пакет, який містить відсутню команду, і надає підказку щодо того, чи можна його інсталювати. однак, Виникла проблема: під час запуску обробника command-not-found йому як параметр командного рядка передається неіснуюча команда. Це видно під час перегляду процесів у системі, які можуть бути використані зловмисником для моніторингу запущених процесів і визначення пароля, введеного жертвою в командному рядку.

Спонукати користувача ввести пароль У відповідь на підроблене повідомлення sudo було запропоновано злом. Цей трюк передбачає відстеження фактичного запуску утиліти sudo в списку процесів, дочекайтеся його завершення та відразу після цього виконайте атаку на стіну. Маніпулюючи керуючими послідовностями, зловмисник може замінити повідомлення після фактичного виконання sudo на повідомлення про повторне введення підробленого пароля. Жертва може подумати, що вона помилилася під час введення пароля, і ввести його повторно, таким чином відкриваючи пароль в аргументах обробника «команда не знайдена».

Деякі люди неправильно зрозуміли, у яких сценаріях це може бути використано для атаки на іншого користувача. Нам не потрібно атакувати sudo, ми можемо атакувати будь-де, де користувач вводить свій пароль, простий приклад після входу користувача за допомогою OpenSSH.

PДля проведення успішної атаки необхідно встановити режим "mesg" на "y", який налаштовано за замовчуванням у таких системах, як Ubuntu, Debian і CentOS/RHEL. Атака була успішно продемонстрована на Ubuntu 22.04 за допомогою gnome-terminal en налаштування за умовчанням. Однак у Debian атака складніша, оскільки драйвер «команду не знайдено» не ввімкнено за замовчуванням. Що стосується CentOS/RHEL, то атака не працює, оскільки стінова утиліта встановлена ​​без прапора setgid і не має доступу до терміналів інших користувачів. Якщо використовується Windows-Terminal, атаку можна модифікувати, щоб змінити вміст буфера обміну.

Ця вразливість присутня в пакеті util-linux з 2013 року, після того, як у версії 2.24 було введено можливість вказувати повідомлення в командному рядку стіни, але забули очистити керуючі послідовності. Виправлення цієї вразливості включено в останній випуск util-linux 2.40, який вийшов учора. Важливо зазначити, що під час спроби виправити вразливість у версії util-linux 2.39 було виявлено іншу подібну вразливість, яка дозволяє замінювати контрольні символи шляхом маніпулювання регіональними налаштуваннями.

Якщо вам цікаво дізнатися більше про це, ви можете звернутися до подробиці за наступним посиланням.