Уязвимость в tmux, эксплуатируемая через escape-последовательность


В консольном оконном менеджере tmux ("terminal multiplexer"), разрабатываемом проектом OpenBSD для замены программы GNU Screen, выявлена уязвимость (CVE-2020-27347), приводящая к переполнению буфера при вводе специально оформленной escape-последовательности. Для атаки достаточно вывести на экран псевдотерминала escape-последовательность, например, пользователь может быть атакован при просмотре через curl содержимого вредоносной страницы, при входе по ssh на вредоносный хост или при выводе содержимого лога, в котором могут быть отражены данные атакующего. Уязвимость устранена или не проявляется (уязвимы только версии, начиная с tmux 2.9) в OpenBSD, Debian, SUSE, RHEL, Fedora, Ubuntu, FreeBSD.

Проблема присутствует в коде обработки escape-последовательностей в функции input\_csi\_dispatch\_sgr\_colon, используемой в серверном процессе tmux и потенциально может привести к выполнению кода атакующего из-за ненадлежащей проверки границ буфера. Escape-последовательности вида "\033\[::::::7::1:2:3::5:6:7:m" могут перезаписать произвольные 4-байтовые значения в стеке, а при помощи пустых аргументов ("::") можно пропустить выбранные смещения, не затронув канареечные метки в стеке. При отсутствии рандомизации адресного пространства проблема может быть эксплуатирована для выполнения кода атакующего. При включении ASLR эксплуатация не исключается, но создание эксплоита существенно усложняется.

Примеры проблемных escape-последовательностей:

tmux 3.0a-2ubuntu0.1 в Ubuntu 20.04.1 x86\_64: echo -e '\033\[::::::::::::::::::1431728064::::::::1431829797::::1431915746::m;touch /tmp/PWNED;\0'; tmux-3.1-2.fc33.x86\_64 в Fedora 33: echo -e '\033\[::::::::::::::::::1431723856::::::::1432185743::::1431836040::m;touch /tmp/PWNED;\0';

Источник: https://www.opennet.ru/opennews/art.shtml?num=54038


Comments 0