Уязвимост, позволяваща подмяна на escape последователности в чужди терминали

В утилитата wall, предоставена в пакета util-linux и предназначена за изпращане на съобщения в терминалите, е открита уязвимост (CVE-2024-28085), която позволява извършване на атака срещу терминалите на други потребители чрез манипулация с escape-последовательностите. Проблемът е, че утилитата wall блокира използването на escape-последовательности във входния поток, но не извършва тази операция за аргументите в командния ред, което позволява на атакуващия да изпълни escape-последовательности в терминала на другите потребители.

Например, изпълнявайки ‘wall $(printf «\033[33mHI»)’ може да се изведе надписа «HI» в жълт цвят. Чрез escape-последовательности, които позволяват преместите курсора, да изчиствате и заменяте съдържанието на екрана, може да се симулира показването на подканата за въвеждане на парола от утилитата sudo в терминала на друг потребител. Ако потребителят не забележи уловката и въведе своята парола, то паролата ще се появи в историята на въвода като несъществуваща команда (по същество потребителят вместо команда ще въведе своята парола в командния ред). «\033[3A» // преместете курсора нагоре с 3 реда «\033[K» // изтрийте предишния изход «[sudo] парола за a_user:» // извеждаме фалшива подсказка за sudo «\033[?25l» // задаваме фонов цвят за скриване на въвода «\033[38;2;48;10;36m»

По време на извеждане на предупреждение, че въведената команда не е намерена, в много дистрибуции се стартира обработчикът /usr/lib/command-not-found, който се опитва да определи пакета, в който присъства липсващата команда, и да издаде подсказка за възможността за инсталиране. Проблемът е, че при стартиране на обработчика command-not-found несъществуващата команда се предава на него като параметър на командния ред, който е видим при преглед на процесите в системата (например, при опит за стартиране на неинсталираната утилита «xsnow» в списъка с процеси ще се вижда «/usr/lib/command-not-found -- xsnow»). Следователно, атакуващият може да организира мониторинг на стартираните процеси (например, анализирайки появата на «/proc/$pid/cmdline» за прогнозирания номер на PID) и да определи паролата, въведена от жертвата в командния ред.

За да може потребителят да въведе парола в отговор на фалшивото извикване на sudo, е предложен трик, същността на който е проследяването в списъка с процеси на реалното стартиране на помощната програма sudo, изчакване на нейното приключване и извършване на атака чрез "wall" веднага след това. Чрез манипулации с escape последователности атакуващият може да замени съобщението след реалното изпълнение на sudo с фалшиво запитване за повторно въвеждане на парола. Жертвата може да помисли, че е сгрешила при въвеждането и да въведе паролата втори път, излагаща паролата в аргументите на обработчика "command-not-found".

За успешна атака се изисква настройка на режима "mesg" на стойност "y", което по подразбиране е зададено в Ubuntu, Debian и CentOS/RHEL. Възможността за провеждане на атака е демонстрирана в Ubuntu 22.04 с конфигурация по подразбиране при използване на gnome-terminal. В Debian атаката е затруднена, тъй като в дистрибуцията по подразбиране не е включен обработчикът "command-not-found", а в CentOS/RHEL атаката няма да сработи, тъй като помощната програма wall е инсталирана без флага setgid и няма достъп до чужди терминали. При използване на windows-terminal атаката може да бъде модифицирана за промяна на съдържанието на буфера за обмен.

Уязвимостта се проявява в пакета util-linux от 2013 година, след като в версия 2.24 е добавена възможността за задаване на съобщение в командния ред на wall, но е забравена почистването на escape последователности. Поправката на уязвимостта е включена в вчерашното издание util-linux 2.40. Забележително е, че при опит за поправка на уязвимостта в версия util-linux 2.39 е открита още една подобна уязвимост, позволяваща инжектиране на контролни символи чрез манипулация с локалите.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster