CVE-2019-6111 и другие уязвимости в scp

habr.png

TL; DR;


Совсем недавно (примерно с 1983 года) оказалось, что OpenSSH, как наследник rsh, для команды scp (ex. rcp) позволяет серверу выбрать, какой файл и с какими параметрами вам передать. А уязвимости вывода позволяют скрыть, какой именно файл вам передали.
То есть просите вы file.txt, а получаете — exploit.bin
И фиксов пока нет, вот такие дела. Используйте sftp или rsync.

Подробности


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
Фиксы есть только у WinSCP (5.14+)
Используйте sftp/rsync при работе с недоверенными серверами.

© Habrahabr.ru