Уязвимости в реализациях SCP из OpenSSH, PuTTY и WinSCP
В реализациях утилиты SCP от проектов OpenSSH, PuTTY и WinSCP выявлены четыре уязвимости, позволяющие на стороне клиента манипулировать выводом информации в терминал, организовать запись произвольных файлов в целевой каталог или изменить права доступа на каталог при обращении к серверу, подконтрольному злоумышленникам.
- CVE-2019-6111 - возможность перезаписать произвольные файлы в целевом каталоге на стороне клиента. В SCP как и в RCP сервер принимает решение о том, какие файлы и каталоги отправить клиенту, а клиент лишь проверяет корректность возвращенных имен объектов. Проверка на стороне ограничена лишь блокированием выхода за границы текущего каталога ("../"), но не учитывает передачу файлов с именами, отличающимися от изначально запрошенных. В случае рекурсивного копирования (-r) кроме имен файлов подобным способом можно манипулировать и именами подкаталогов. Например, в ходе атаки в случае копирования пользователем в домашний каталог файлов, подконтрольный атакующим сервер может выдать вместо запрошенных файлов.bash_aliases или.ssh/authorized_keys, и они будут сохранены утилитой scp в домашнем каталоге пользователя;
- CVE-2018-20685 - возможность изменения прав доступа на целевой каталог при использовании пустого каталога ("D0777 0 &92;n") или каталога с точкой ("D0777 0.&92;n");
- CVE-2019-6109, CVE-2019-6110 - возможность искажения вывода в терминал через подстановку управляющих ASCII символов в передаваемые строковые данные и отображаемый на стороне клиента поток STDERR. Уязвимость может применяться для скрытия сведений о загрузке незапрошенных файлов.
Проблемы проявляются во всех версиях OpenSSH (включая 7.9), PuTTY и WinSCP (включая 5.13). Пакет Tectia SSH scpg3 проблемам не подвержен, так как базируется только на использовании SFTP и не поддерживает протокол SCP. В качестве обходного варианта защиты рекомендуется использовать sftp вместо scp. В дистрибутивах проблема пока остается неисправленной (Debian, Ubuntu, Arch, RHEL, SUSE).