openssl renegociação segura (não suportada)

3

Estou executando um serviço da web implementado no servidor Ubuntu 14.04 LTS. Estou depurando TLSv1 quebra de conexão após algum tempo entre um cliente usando openssl version 0.9.7m e um servidor usando openssl 1.0.1f . Eu não tenho acesso ao lado do cliente, apenas ao servidor e ao roteador. Quando executo openssl s_server no lugar do servidor, vejo a mensagem secure renegotiation not supported quando o cliente se conecta. Renegociação não necessariamente tem nada a ver com os problemas de conexão, mas eu estou tentando entender a renegociação. Até agora não consegui encontrar respostas para as seguintes perguntas:

  1. Quais são os gatilhos típicos para a renegociação? Isso é feito de forma insegura se a negociação segura não for suportada?
  2. A renegociação é iniciada pelo código do cliente ou servidor ou pode ser iniciada em certo ponto?
  3. Existe uma maneira de forçar a renegociação com openssl s_server e / ou openssl s_client a experimentar?
por talamaki 22.12.2016 / 23:17

1 resposta

3

Existem quatro tipos de renegociação possíveis:

  • Renegociação segura iniciada pelo cliente
  • Renegociação insegura iniciada pelo cliente
  • Renegociação segura iniciada pelo servidor
  • Renegociação insegura iniciada pelo servidor

Desde a descoberta da possibilidade de realizar ataques de renegociação ( CVE-2009-3555 ), uma vulnerabilidade que existe " em todas as versões atuais do TLS ", é seguro assumir que a renegociação não será executada com segurança, a menos que o cliente e o servidor implementem Extensão de Indicação de Renegociação de TLS .

A primeira reação do OpenSSL foi desativar a renegociação , com a renegociação segura sendo implementada em um release posterior .

Um cliente usando 0.9.7m, por definição, é anterior ao CVE-2009-3555 e é suscetível a esse ataque e também é incapaz de realizar uma renegociação segura.

Com relação ao que pode acionar a renegociação, você pode acompanhar isso em diferentes RFCs: TLS v1.0 , TLS v1.1 , TLS v1.2 . Diferentes postagens de blog analisando o CVE-2009-3555 também fornecem detalhes sobre quando acontece.

E considerando se isso pode ser forçado a partir do subcomando s_client para fins de teste, sim, isso é documentado no manual página :

CONNECTED COMMANDS
If a connection is established with an SSL server then any data received from the server is displayed and any key presses will be sent to the server. When used interactively (which means neither -quiet nor -ign_eof have been given), the session will be renegotiated if the line begins with an R [...]

Também é possível fazer isso programaticamente .

    
por 06.01.2017 / 23:24

Tags