Se, usando somente chaves públicas, um cliente SSH efetuar login (ou já estiver conectado) em um servidor SSH comprometido, o cliente SSH também estará em risco?

4

Existem condições sob as quais um invasor com controle sobre o servidor pode obter acesso e iniciar ações no cliente? Percebo que o invasor pode plantar cavalos de Tróia no servidor na esperança de que o usuário por trás do cliente SSH carregue um deles (manualmente ou executando um script), mas existem outros vetores de ataque também?

Estou especificamente interessado em cenários em que não há senhas envolvidas e somente a autenticação de chave pública é usada, possivelmente com as mesmas credenciais de usuário nos dois lados da conexão.

    
por Will 23.05.2013 / 10:32

4 respostas

3

O cliente SSH simples é geralmente protegido de qualquer coisa no servidor, pelo menos enquanto não forem encontradas vulnerabilidades de segurança. Mas os recursos SSH a seguir apresentam problemas de segurança:

  1. Reencaminhamento remoto de portas (com -R ). A pessoa / malware no sistema remoto obterá acesso à porta local.
  2. Encaminhamento de dispositivo de túnel (com -w ). A pessoa / malware no sistema remoto poderá enviar tráfego pelo túnel.
  3. Encaminhamento de conexão do agente de autenticação ( -A ). A pessoa / malware no sistema remoto poderá usar seu chaveiro ssh-agent para autenticar com outros servidores SSH para os quais você possui chaves.
  4. encaminhamento X11 ( -X ou -Y ). Como outros notaram, o protocolo X11 foi projetado com clientes confiáveis em mente. O software malicioso pode ler o conteúdo de outras janelas, enviar pressionamentos de teclas ou simplesmente mostrar uma janela solicitando uma senha.

Outra coisa a considerar é o emulador de terminal que você está usando. Provavelmente é um GUI como konsole ou o Terminal do GNOME. Se estiver vulnerável, ele também pode ser explorado com um programa no servidor comprometido (por exemplo, o servidor remoto pode enviar uma sequência de caracteres que causa um estouro de buffer e permite que o invasor execute código no computador cliente).

Eu nunca ouvi falar de um worm ou de um software de ataque automatizado usando esses vetores de ataque, mas se for um ataque direcionado, esses (especialmente o Encaminhamento de agentes) podem ser usados contra você.

    
por 23.05.2013 / 19:03
2

Existem (eu acredito apenas) ataques teóricos usando o encaminhamento do X que poderiam fazer isso.

O X essencialmente exige confiança total em todos os clientes (aplicativos) e pode extrair dados do seu cliente usando uma janela invisível.

Além disso, se você ativar o encaminhamento do agente para esse host, um invasor poderá usar isso combinado com qualquer arquivo de "hosts conhecidos" já existentes no host comprometido, a fim de estender o alcance deles.

    
por 23.05.2013 / 10:56
2

Intrinsecamente, isso não representa nenhuma ameaça à segurança (exceto na medida em que você estiver usando uma máquina comprometida), a menos que você esteja usando o encaminhamento do X também (as janelas do X não são sandboxed).

No entanto, se acontecer de alguém ter um vetor para explorar algum bug em seu cliente SSH por meio da ação do servidor ao qual você se conectou, você pode estar de alguma forma comprometido. Por exemplo, um ataque pode explorar um estouro de buffer no processo de negociação chave ou algo assim.

Esse tipo de coisa é puramente teórico. Embora seja certamente possível que algo assim exista, nunca ouvi falar disso.

    
por 23.05.2013 / 11:03
1

Não sei exatamente qual é a sua pergunta, portanto, sinta-se à vontade para atualizá-la, se essa não for a resposta que você está procurando.

Se você estiver perguntando se o login em um servidor comprometido com uma chave pública comprometerá a chave privada no cliente, a resposta será não: a chave privada sempre fica em sua máquina e é usada apenas para assinar a autenticação token que você enviou para o servidor.

Isso não significa que não tenha conseqüências: uma vez que você está conectado a uma máquina comprometida, tudo o que você faz durante esta sessão é potencialmente comprometido também. por exemplo, se você usar uma chave privada armazenada nesse servidor para acessar outro servidor, essa chave será potencialmente comprometida. Na verdade, se você realizar qualquer outro tipo de login a partir da sessão SSH, as credenciais usadas serão potencialmente comprometidas.

    
por 23.05.2013 / 10:54

Tags