
Технический разбор и proof-of-concept для CVE-2020-15778 — аутентифицированной уязвимости внедрения команд в OpenSSH scp (<=8.3p1), позволяющей удалённое выполнение кода через пейлоады с обратными кавычками в путях к файлам.
Электронная почта: [email protected]
LinkedIn: www.linkedin.com/in/chinmay-pandya
Продукт: Openssh
Затронутый компонент: SCP
scp — это программа для копирования файлов между компьютерами. Она использует протокол SSH. По умолчанию она входит в большинство дистрибутивов Linux и Unix.
При копировании файлов на удалённый сервер путь к файлу добавляется в конец локальной команды scp. Например, если вы выполните следующую команду
scp SourceFile user@host:directory/TargetFile
будет выполнена локальная команда
scp -t directory/TargetFile
При создании локальной команды scp имя файла не санитизируется. Атакующий может передать payload в обратных кавычках в качестве имени файла, и при выполнении локальной команды scp локальная оболочка также выполнит payload в обратных кавычках.
Выполните следующую команду с scp
scp /sourcefile remoteserver:'`touch /tmp/exploit.sh`/targetfile'
После выполнения этой команды зайдите на удалённый сервер, и вы увидите, что в каталоге /tmp присутствует файл exploit.sh. Важно использовать одинарные кавычки в имени файла, чтобы предотвратить выполнение payload в локальной оболочке; использование escape-символов, таких как одинарные кавычки в имени файла, может предотвратить выполнение payload в локальной оболочке.
ЭТО ЭКСПЛОИТ С АУТЕНТИФИКАЦИЕЙ, И ДЛЯ ВЫПОЛНЕНИЯ КОМАНДЫ НА УДАЛЁННОМ СЕРВЕРЕ ТРЕБУЮТСЯ ДЕЙСТВИТЕЛЬНЫЕ УЧЁТНЫЕ ДАННЫЕ SSH / SCP
Команда scp — это исторический протокол (называемый rcp), который полагается на такой стиль передачи аргументов и сталкивается с проблемами раскрытия (подстановки). Добавить "безопасность" к модели scp оказалось очень сложно. Все попытки "обнаружить" и "предотвратить" аномальные передачи аргументов имеют большие шансы сломать существующие рабочие процессы. Да, мы признаём, что ситуация отвратительная. Но мы не хотим ломать простые сценарии использования scp, пока не появится общепринятая замена. Если пользователи обеспокоены, им следует использовать rsync или что-то другое.