Engenheiro de segurança da Red Hat, Jakub Jelen propôs descontinuar e remover o protocolo SCP do Fedora. Entenda porque ele quer fazer isso.
O Secure Copy Protocol, em Português, protocolo de cópia segura, ou simplesmente SCP, é um meio seguro de transferência de arquivos entre um servidor local e um remoto ou entre dois servidores remotos, usando o protocolo SSH.
Rexcentemente, Jakub Jelen (um engenheiro de segurança da Red Hat) sugeriu que o protocolo SCP fosse classificado como obsoleto e subsequentemente removido, já que o SCP é conceitualmente próximo ao RCP e herda problemas arquitetônicos fundamentais, que são a fonte de vulnerabilidades potenciais.
Jakub Jelen propôs descontinuar e remover o protocolo SCP do Fedora
Em particular, no SCP e RCP, o servidor aceita a decisão sobre quais arquivos e diretórios enviar para o cliente, e o cliente segue as instruções do servidor e apenas verifica a exatidão dos nomes de objetos retornados.
Ao se conectar a um servidor controlado por um invasor, o servidor pode entregar outros arquivos, o que leva repetidamente à identificação de vulnerabilidades.
Por exemplo, até recentemente, o cliente verificou apenas o diretório atual, mas não levou em consideração que o servidor poderia emitir um arquivo com um nome diferente e sobrescrever arquivos que não foram solicitados (por exemplo, em vez de “test.txt” solicitado, o servidor pode enviar um arquivo chamado ». bashrc« e será escrito pelo cliente).
Na postagem, publicada por Jakub Jelen, você pode ler o seguinte:
“Olá, usuários do Fedora! Nos últimos anos, houve vários problemas no protocolo SCP, levando a discussões se podemos nos livrar dele nas fases iniciais.”
“A maioria das vozes disseram que usam SCP principalmente para cópias ad-hoc simples e porque o utilitário sftp não fornece uma interface simples para copiar um ou dois arquivos para frente e para trás e porque as pessoas só estão acostumadas a escrever scp em vez de sftp.”
Outro problema com o protocolo SCP é o recurso de processamento de argumento.
Visto que é mencionado que ao copiar arquivos para um servidor externo, o caminho do arquivo é anexado ao final do comando scp local, por exemplo, quando você executa o comando scp/sourcefile remoteserver:’touch/tmp/exploit.sh`/targetfile'
. No servidor, o comando touch/tmp/exploit.sh
e o arquivo /tmp/exploit.sh foram criados, então é importante usar caracteres de escape corretos no scp.
Quando scp é usado para passar recursivamente o conteúdo do diretório (a opção “-r”) em sistemas de arquivos que aceitam o caractere ‘`’ em nomes de arquivos, um invasor pode criar um arquivo com apóstrofos e torná-lo o código a ser executado.
No OpenSSH, esse problema permanece sem correção, pois é problemático corrigi-lo sem quebrar a compatibilidade com versões anteriores, por exemplo, executar comandos para verificar se existe um diretório antes de copiá-lo.
Discussões anteriores mostraram que o scp é geralmente usado para copiar arquivos de um sistema para outro.
Porém, muitas pessoas usam o scp em vez do sftp devido a uma interface mais simples e óbvia para copiar arquivos, ou apenas por hábito.
Jakub sugere usar a implementação padrão do utilitário scp, convertido para usar o protocolo SFTP (para alguns casos especiais, o utilitário fornece a opção “-M scp” para reverter para o protocolo SCP) ou adicionar um modo de compatibilidade ao utilitário sftp que permite que você use sftp in como um substituto transparente para scp.
“Alguns meses atrás, escrevi um patch para o scp para usar SFTP internamente (com a possibilidade de alterá-lo novamente usando -M scp) e executei com êxito em alguns testes.”
“O feedback geral do upstream também foi bastante positivo, então gostaria de ouvir os nossos usuários também. Ainda tem algumas limitações (falta suporte, não funcionará se o servidor não rodar o subsistema sftp, …), mas deve ser bom o suficiente para os casos de uso mais comuns.”
Entre as limitações da abordagem proposta, cita-se a impossibilidade de troca de dados com servidores que não iniciem o subsistema sftp e a ausência de um modo de transferência entre dois hosts externos com trânsito pelo host local (modo “-3”).
Alguns usuários também observam que o SFTP está um pouco atrás do SCP em termos de largura de banda, o que se torna mais perceptível em conexões ruins com alta latência.
Para teste, um pacote openssh alternativo já foi colocado no repositório copr, corrigindo-o com a implementação do utilitário scp sobre o protocolo SFTP.