La
vulnerabilidad principal, que data de hace 35 años, afecta a OpenSSH SCP, PuTTY
PSCP y WinSCP. El fallo permite al servidor escribir ficheros en el cliente sin
que se dé cuenta.
SCP es una
herramienta para transferir ficheros a través de SSH empleada por
administradores de todo el mundo, y que cuenta con múltiples implementaciones
para diferentes sistemas, como OpenSSH, PuTTY o WinSCP. El fallo descubierto,
permitiría a un servidor malicioso copiar ficheros no solicitados en el equipo
del cliente sin informarse de ello.
Un posible
caso de explotación, tal y como detalla sintonen.fi, sería un ataque MitM (Man
in the Middle) entre un administrador y un servidor que administre, para que al
utilizar scp se copie a su máquina un fichero ‘.bash_aliases’ en su directorio
de usuario que permita al atacante ejecutar cualquier comando en la máquina del
sysadmin. Este tipo de ataque requiere que la víctima acepte el cambio de
fingerprint en el servidor.
El problema
principal, que se encuentra desde 1983 (hace 35 años), tiene como origen el
protocolo RCP del proyecto BSD, que es en el que se basa SCP. Debido al error
la mayoría de clientes SCP no validan correctamente que los ficheros devueltos
por el servidor son aquellos que se solicitó. Las vulnerabilidades en concreto
son:
CWE-20
(CVE-2018-20685): validación incorrecta
del nombre de directorio. El servidor puede cambiar permisos de la carpeta
utilizando un nombre de carpeta vacío (“D0777 0 \n”) o con punto (“D0777 0
.\n”).
CWE-20
(CVE-2019-6111 y CVE-2018-20684 en WinSCP): debido al estándar derivado de rcp
de 1983, es el servidor el que establece los ficheros que se copian al cliente
sin que se valide. Si se utiliza el parámetro “-r”, también pueden copiarse
carpetas sin validación.
CWE-451
(CVE-2019-6109): spoofing en el cliente utilizando el nombre del objeto.
Mediante dicho nombre, pueden escribirse caracteres ANSI que modifiquen la
salida, para por ejemplo ocultar archivos transferidos.
CWE-451
(CVE-2019-6110): spoofing en el cliente utilizando stderr. Similar al anterior,
pero aprovechando que el servidor puede escribir una salida de error en el
cliente.
Algunos de
los clientes afectados son OpenSSH scp (versiones anteriores a 7.9), PuTTY PSCP
(todavía sin parche), y WinSCP scp (hasta la versión 5.13). Una posible
solución si el cliente lo permite (como OpenSSH) es cambiar el protocolo a
SFTP, aunque los servidores utilizados deben de soportar dicho protocolo. Otros
clientes o programas que empleen SCP pueden encontrarse afectados.
Más información
- scp client multiple vulnerabilities: https://sintonen.fi/advisories/scp-client-multiple-vulnerabilities.txt
Fuente:
Hispasec