Luka w xtermie prowadząca do wykonania kodu podczas przetwarzania niektórych linii

W emulatorze terminala xterm zidentyfikowano lukę (CVE-2022-45063), która umożliwia wykonywanie poleceń powłoki, gdy w terminalu przetwarzane są określone sekwencje specjalne. Do ataku w najprostszym przypadku wystarczy wyświetlić zawartość specjalnie zaprojektowanego pliku, na przykład za pomocą narzędzia cat, lub wkleić linię ze schowka. printf "\e]50;i\$(touch /tmp/hack-like-its-1999)\a\e]50;?\a" > cve-2022-45063 cat cve-2022-45063

Problem jest spowodowany błędem w obsłudze sekwencji ucieczki kodu 50 używanej do ustawiania lub pobierania opcji czcionek. Jeżeli żądana czcionka nie istnieje, operacja zwraca nazwę czcionki podaną w żądaniu. Nie można bezpośrednio wstawić znaków kontrolnych do nazwy, ale zwrócony ciąg znaków można zakończyć sekwencją „^G”, co w zsh, gdy aktywny jest tryb edycji linii w stylu vi, powoduje wykonanie operacji rozwijania listy, co może można używać do uruchamiania poleceń bez bezpośredniego naciskania klawisza Enter.

Aby skutecznie wykorzystać lukę, użytkownik musi użyć powłoki poleceń Zsh z edytorem wiersza poleceń (tryb vi-cmd) ustawionym na tryb „vi”, który zwykle nie jest domyślnie używany w dystrybucjach. Problem nie pojawia się również, gdy ustawione są ustawienia xterm umożliwiająceWindowOps=false lub zezwolenieFontOps=false. Na przykład,allowFontOps=false jest ustawione w OpenBSD, Debianie i RHEL, ale nie jest domyślnie stosowane w Arch Linux.

Sądząc po liście zmian i oświadczeniu badacza, który zidentyfikował problem, luka została naprawiona w wersji xterm 375, ale według innych źródeł luka nadal pojawia się w xterm 375 od Arch Linux. Możesz śledzić publikację poprawek według dystrybucji na tych stronach: Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD.

Źródło: opennet.ru

Dodaj komentarz