TL; DR;
Mais recentemente (desde 1983), o OpenSSH, como sucessor do rsh, para o comando scp (ex. Rcp) permite ao
servidor escolher qual arquivo e com quais parâmetros transferir para você. E as vulnerabilidades de saída permitem ocultar qual arquivo foi transferido para você.
Ou seja, você pergunta ao arquivo.txt, mas obtém - exploit.bin
E ainda não há correções, essas são as coisas. Use sftp ou rsync.
Detalhes
CVE-2019-6109
O cliente scp não verifica caracteres extras no nome do arquivo, o que permite ocultar o nome real do arquivo transmitido (por exemplo, códigos ASCII)
CVE-2019-6110
O cliente scp permite gravar no stderr e reescrever dados no terminal, o que permite ocultar o nome real do arquivo transmitido (por exemplo, códigos ASCII).
CVE-2019-6111
O cliente scp não verifica qual arquivo está sendo enviado para ele e não o compara com o que solicitou. Um servidor malicioso pode preencher o cliente com tudo o que ele deseja e com qualquer modo.
Exemplo de trabalho
$ 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 $
Neste exemplo (uma exploração ligeiramente modificada no link acima), o arquivo exploit.sh com permissões 755 é carregado com x.txt e, com a ajuda do lixo, o próprio fato da transferência é apagado.
Clientes vulneráveis
Em suma, isso é tudo. OpenSSH incluindo 7.9p1, putty, winscp <5.13.
Somente o WinSCP possui correções (5.14+)
Use sftp / rsync ao trabalhar com servidores não confiáveis.