Onde este artigo começa
A história da família sem fio cobre o WEP e a lição que ele ensinou, que foi a de que a falha não estava na cifra, e sim em como o protocolo a usava. Este artigo é o que veio depois, porque a mesma frase acaba descrevendo tudo o que se seguiu.
O WPA2 substituiu o WEP em 2004 e segurou a linha por treze anos. Seu aperto de mão de quatro vias - a troca em que um cliente e um ponto de acesso, ambos já de posse da chave derivada da senha da rede, acordam uma chave de sessão nova - fora examinado por criptógrafos e tinha provas formais de segurança por trás. A declaração de um fabricante durante a divulgação de 2017 disse com todas as letras: o aperto de mão fora matematicamente provado seguro pela comunidade científica.
Fora mesmo. E quebrou.
O que o aperto de mão faz, e o que o KRACK fez com ele
Quatro mensagens. O ponto de acesso manda um número aleatório; o cliente manda o seu e uma prova de que conhece a chave compartilhada; o ponto de acesso confirma e, na mensagem três, manda o cliente instalar a chave de sessão que agora derivou; o cliente confirma na mensagem quatro.
A falha está no que acontece quando a mensagem quatro se perde. Rádio não é confiável, então o ponto de acesso retransmite a mensagem três, e o cliente - corretamente, segundo a especificação - a aceita e instala a chave de novo. É esse o ataque inteiro. Mathy Vanhoef, do grupo imec-DistriNet da KU Leuven, mostrou que um atacante ao alcance do rádio e posicionado entre os dois podia bloquear a mensagem quatro de propósito, forçar a retransmissão, e fazer o cliente reinstalar uma chave que já estava usando.
Reinstalar zera os contadores associados - o número de pacote de transmissão, que é o nonce, e o contador de repetição de recepção - de volta aos valores iniciais. E reutilizar nonce sob a mesma chave é a única coisa que a cifragem por baixo jamais pode fazer. Reutilize e o fluxo de chave pode ser recuperado.
O impacto dependia da cifra em uso, e a distinção importa operacionalmente. Contra o -CCMP, um atacante podia repetir e decifrar pacotes, mas não forjá-los - o bastante para sequestrar um fluxo TCP e injetar nele. Contra -TKIP e GCMP, na palavra dos próprios pesquisadores, o impacto era catastrófico: os pacotes podiam ser repetidos, decifrados e forjados. A mesma técnica também quebrou o aperto de mão de chave de grupo, o PeerKey e o de transição rápida do 802.11r, e recebeu dez identificadores distintos.
E havia o achado de implementação, que era pior que o de protocolo. Clientes Android e Linux usando certas versões do wpa_supplicant não reinstalavam a chave verdadeira quando enganados - instalavam uma chave só de zeros. Contra esses aparelhos o atacante não precisava recuperar fluxo de chave nenhum.
Por que uma prova não impediu isso
Esta é a parte que vale levar a qualquer conversa sobre verificação formal, e é a versão sem fio do argumento que o artigo sobre código perfeito faz com o ScreenOS da Juniper.
As provas do aperto de mão de quatro vias eram provas sobre o aperto de mão: que um atacante que observa a troca não consegue derivar a chave de sessão, e que as duas partes terminam concordando na mesma. Tudo isso continuou verdadeiro. O que as provas não modelavam era a máquina de estados em volta do aperto de mão - o que uma implementação deveria fazer quando uma mensagem chega duas vezes. A especificação não proibia reinstalar uma chave, porque ninguém tinha feito a pergunta, e uma prova responde apenas à pergunta que lhe foi dada.
A conclusão correta não é que análise formal seja inútil. É que uma prova tem um escopo, que o escopo em geral é o protocolo e não o comportamento da implementação ao longo do tempo, e que a distância entre os dois é onde a indústria não para de achar coisas.
A divulgação, que deu certo
O artigo foi submetido a revisão em 19 de maio de 2017. O CERT/CC notificou os fabricantes em 28 de agosto. A pesquisa veio a público em 16 de outubro, e o artigo foi apresentado na conferência da ACM em Dallas no começo de novembro. Quando veio a público, já havia correções para os principais sistemas operacionais, firmwares de roteador e conjuntos de chips, lançadas mais ou menos ao mesmo tempo.
Dois detalhes valem ser guardados. O próprio Vanhoef observou que, na publicação, os achados já tinham vários meses e que ele desde então encontrara técnicas mais fáceis que as do artigo - a versão publicada era, de propósito, não a mais afiada disponível. E a correção era retrocompatível: os clientes foram corrigidos para recusar reinstalar uma chave já em uso, o que significa que um cliente corrigido está seguro num ponto de acesso não corrigido. Essa propriedade é a razão de a resposta ter funcionado, e nem sempre está disponível.
O WPA3, e o ano que ele durou
A Alliance anunciou o em 2018. Sua melhoria central era substituir o aperto de mão de chave pré-compartilhada pelo Simultaneous Authentication of Equals, conhecido como Dragonfly - uma troca de chaves autenticada por senha, projetada para que um atacante que capture um aperto de mão não possa levá-lo embora e rodar um ataque de dicionário offline contra ele. Era uma correção real e importante para uma fraqueza real e importante.
Em abril de 2019 Vanhoef, então na NYU Abu Dhabi, publicou de novo, com Eyal Ronen, da Universidade de Tel Aviv e da KU Leuven. O artigo, Dragonblood, achou várias classes de problema: ataques de rebaixamento contra o WPA3 em modo de transição, em que uma rede que aceita clientes WPA2 e WPA3 pode ser empurrada de volta ao aperto de mão antigo; um rebaixamento contra o próprio SAE; negação de serviço contra o ponto de acesso; contornos de autenticação em toda implementação do EAP-pwd relacionado que testaram; e, como resultado principal, canais laterais de tempo e de cache no método de codificação de senha que vazam o suficiente para permitir exatamente o ataque de dicionário offline que o projeto existia para impedir.
Dois detalhes são quase perfeitos demais. A sobrecarga de negação de serviço que exploraram era causada pelas defesas contra canais laterais de tempo conhecidos - uma contramedida criando um problema novo. E a avaliação deles sobre o processo, citada na cobertura, era que um processo de projeto mais aberto teria impedido ou esclarecido a possibilidade dos ataques de rebaixamento. As correções foram adotadas na norma.
O que um profissional deve tirar disso
Três gerações, três falhas, nenhuma delas na cifra. A falha do WEP estava em como usava uma cifra de fluxo. O era uma máquina de estados aceitando uma retransmissão. O Dragonblood era uma codificação de senha vazando por tempo. A criptografia nunca foi a parte fraca, o que é boa razão para desconfiar de qualquer discussão de segurança que passe o tempo em comprimento de chave.
O modo de transição é onde o ataque mora. O WPA3 em modo de transição - aceitando clientes WPA2 para nada quebrar - é rebaixável, exatamente como os ataques nomeados ao TLS mostram para todo protocolo que manteve uma opção mais fraca por compatibilidade. Se o parque de fato não tem aparelhos só WPA2, a configuração é WPA3 apenas; se tem, a posição honesta é que a rede está protegida no nível do WPA2 e deve ser planejada assim.
Corrigir o cliente foi o controle que importou. O KRACK era primordialmente uma correção do lado do cliente. Numa empresa, a população que nunca foi corrigida é a que se deve inventariar: coletores de mão, equipamentos médicos, controles prediais, impressoras, qualquer coisa cujo fabricante parou de lançar . É a mesma população que a era dos worms não para de identificar.
E o processo funcionou, devagar e em público. Um pesquisador achou, divulgou por um órgão coordenador, os fabricantes corrigiram antes da publicação, as correções entraram na norma, e o mesmo pesquisador então fez de novo com o substituto. Isso não é uma falha do sistema. É o sistema, e a alternativa - falhas achadas por gente que não publica - é do que trata o resto deste catálogo.
Fontes
- krackattacks.com, o site do próprio Mathy Vanhoef: o artigo "Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2" foi submetido a revisão em 19 de maio de 2017 e apresentado na conferência Computer and Communications Security em 1º de novembro de 2017; técnicas mais fáceis foram achadas depois da submissão, tornando triviais os ataques contra implementações que só aceitam retransmissões cifradas da mensagem 3; o wpa_supplicant v2.6 do Linux também é vulnerável à instalação de uma chave de cifragem só de zeros
- Nota de vulnerabilidade VU#228519 do CERT/CC: as fraquezas constituem uma nova classe de ataque ao aperto de mão de quatro vias usado em todas as variantes de WPA e WPA2, chamada KRACK; é uma questão de toda a indústria, já que todo produto que implementa Wi-Fi é teoricamente vulnerável; os fabricantes foram notificados em 28 de agosto de 2017; uma declaração de fabricante na nota registra que o protocolo de quatro vias fora matematicamente provado seguro pela comunidade científica; nenhum dos ataques recupera a senha do WPA
- Vanhoef e Piessens, o artigo da CCS 2017: o aperto de mão de quatro vias também transporta a chave temporal de grupo ao suplicante; um wpa_supplicant não modificado reinstala a chave ao receber uma mensagem 3 retransmitida
- Bruce Schneier, citando o resumo do artigo: o adversário engana a vítima para que reinstale uma chave já em uso manipulando e repetindo mensagens do aperto de mão, zerando o número de pacote de transmissão e o contador de repetição; o ataque também quebra os apertos de mão PeerKey, de chave de grupo e de Fast BSS Transition; contra o AES-CCMP o adversário pode repetir e decifrar mas não forjar pacotes, enquanto contra WPA-TKIP e GCMP o impacto é catastrófico e os pacotes também podem ser forjados
- NowSecure: o ataque envolve interceptar e repetir a terceira mensagem do aperto de mão de quatro vias; Vanhoef identificou dez identificadores CVE distintos, de CVE-2017-13077 a CVE-2017-13088
- Vanhoef e Ronen, Dragonblood, Cryptology ePrint Archive 2019/383 e IEEE Symposium on Security and Privacy 2020: uma análise sistemática do WPA3 e do EAP-pwd achando ataques de negação de serviço e de rebaixamento, vulnerabilidades severas em todas as implementações, canais laterais que permitem ataques de dicionário offline, e correções de projeto que estão sendo oficialmente adotadas; os resultados principais são ataques de canal lateral contra o método de codificação de senha do Dragonfly
- wpa3.mathyvanhoef.com: as falhas de projeto se dividem em ataques de rebaixamento contra aparelhos com WPA3 e fraquezas no próprio aperto de mão Dragonfly; a auditoria revelou contornos de autenticação em todas as implementações do EAP-pwd e num cliente SAE; as ferramentas liberadas não são feitas para atacar a rede do vizinho
- O artigo Dragonblood: a causa da alta sobrecarga do SAE, explorada para negação de serviço, são as defesas contra canais laterais de tempo conhecidos; um ataque de rebaixamento e dicionário funciona contra o WPA3 em modo de transição, e ataques específicos de implementação funcionam mesmo em redes só WPA3
- BleepingComputer, abril de 2019: Vanhoef, da NYU Abu Dhabi, e Ronen, da Universidade de Tel Aviv e da KU Leuven, descrevem ataques que se assemelham a ataques de dicionário e recuperam a senha abusando de vazamentos de canal lateral de tempo ou de cache que miram o método de codificação de senha do protocolo; um processo mais aberto teria impedido ou esclarecido a possibilidade de ataques de rebaixamento contra o modo de transição do WPA3