Os navegadores geralmente fazem um handshake SSLv23. Com esse aperto de mão, eles anunciam a melhor versão de protocolo que suportam (na maioria das vezes TLS1.2 hoje), mas não restringem o servidor a essa versão. Assim, um servidor, que possui uma pilha TLS adequadamente implementada e configurada, mas suporta apenas TLS1.0, simplesmente responderá com TLS1.0 e a conexão será bem-sucedida na primeira tentativa.
Mas, há algumas pilhas ou configurações incorretas de TLS ou algumas middleboxes ruins (balanceador de carga, etc.) no lado do servidor, que causam falha no handshake SSLv23. Nesses casos, os navegadores fazem downgrade do protocolo usado no handshake, ou seja, tentam com um handshake TLS1.0 explícito seguido por um handshake SSL3.0 explícito (alguns navegadores já desabilitaram o SSL3.0 e, portanto, não tentaram isso).
Os navegadores mais recentes usarão a pseudo-cifra TLS_FALLBACK_SCSV se fizerem essa conexão desatualizada. Se o servidor capaz de TLS_FALLBACK_SCSV detectar uma conexão desatualizada com uma versão de protocolo mais baixa, ele suportará (por exemplo, downgrade usa TLS1.0, mas o servidor suporta TLS1.2) do que pressupõe que um ataque semelhante ao POODLE ocorre e fechará a conexão.
Mas por que um cliente pode fazer o downgrade em primeiro lugar ao entrar em contato com o servidor?
- Você pode ter um balanceador de carga quebrado na frente, o que faz com que você receba pedidos desnecessários.
- Seu servidor ou algum dispositivo anti-DOS na frente pode simplesmente fechar as conexões em alta carga antes que o handshake SSL seja concluído. Nesse caso, o navegador assumirá um problema de protocolo e tentará novamente com uma versão desatualizada.
- Qualquer outro tipo de problema, como falta de memória, etc., que pode causar fechamento aleatório no handshake SSL.