TL;DR;
Совсем недавно ( примерно с 1983 года ) оказалось, что OpenSSH, как наследник rsh, для команды scp ( ex. rcp ) позволяет серверу выбрать, какой файл и с какими параметрами вам передать. А уязвимости вывода позволяют скрыть, какой именно файл вам передали.
То есть просите вы file.txt, а получаете — exploit.bin
И фиксов пока нет, вот такие дела. Используйте sftp или rsync.
Подробности
- Исходный документ: sintonen.fi/advisories/scp-client-multiple-vulnerabilities.txt
- Эксплоит: gist.github.com/mehaase/63e45c17bdbbd59e8e68d02ec58f4ca2
CVE-2019-6109
Клиент scp не проверяет наличие лишних символов в имени файла, что позволяет скрывать реальное имя передаваемого файла ( например ASCII-кодами )
CVE-2019-6110
Клиент scp позволяет писать в stderr и переписывать данные в терминале, что позволяет скрывать реальное имя передаваемого файла ( например ASCII-кодами ).
CVE-2019-6111
Клиент scp не проверяет, какой именно файл ему отправляют и не сравнивает с тем, что он запрашивал. Злонамеренный сервер может залить на клиент все, что ему хочется, причем с любым mode.
Пример работы
$ rm -rf *
$ ls -la
итого 36
drwxr-xr-x 2 user user 4096 янв 25 15:11 .
drwx------ 99 user user 28672 янв 25 14:23 ..
$ scp test@localhost:x.txt .
x.txt 100% 32 0.3KB/s 00:00
$ ./exploit.sh # откуда он взялся?!
You're hacked. Sorry for that
Please upgrade your OpenSSH client
$
В данном примере ( немного модифицированный эксплоит со ссылки выше ) вместе с x.txt подгружается файл exploit.sh с правами 755, а при помощи мусора в stderr затирается сам факт передачи.
Уязвимые клиенты
Если кратко, то все. OpenSSH включая 7.9p1, putty, winscp < 5.13.
Фиксы есть только у WinSCP ( 5.14+ )
Используйте sftp/rsync при работе с недоверенными серверами.
Автор: annmuor