Matrix: Instale a atualização de segurança para corrigir falhas de criptografia de ponta a ponta
A plataforma de comunicação descentralizada Matrix publicou um aviso de segurança sobre duas vulnerabilidades de gravidade crítica que afetam a criptografia de ponta a ponta no kit de desenvolvimento de software (SDK).
Um agente de ameaças que explora essas falhas pode quebrar a confidencialidade das comunicações da Matrix e executar ataques man-in-the-middle que expõem o conteúdo da mensagem de forma legível.
Os clientes afetados pelos bugs são aqueles que usam o matrix-js-sdk, matrix-ios-sdk e matrix-android-sdk2, como Element, Beeper, Cinny, SchildiChat, Circuli e Synod.im.
Outros clientes que usam uma implementação de criptografia diferente (por exemplo, Hydrogen, ElementX, Nheko, FluffyChat, Syphon, Timmy, Gomuks, Pantalaimon) não são afetados.
Matrix ressalta que os problemas foram corrigidos e tudo o que os usuários precisam fazer para manter suas comunicações seguras é aplicar as atualizações disponíveis aos seus clientes de mensagens instantâneas.
O anúncio da Matrix afirma que explorar as falhas não é uma tarefa fácil e que eles não viram evidências de exploração ativa.
Detalhes da vulnerabilidade
As questões de segurança estão na implementação dos mecanismos de criptografia e não no próprio protocolo. Eles foram descobertos por pesquisadores da Brave Software, da Royal Holloway University em Londres e da Universidade de Sheffield e divulgados de forma responsável à Matrix.
O grupo também publicou um artigo técnico detalhando suas descobertas e apresentando seis exemplos de ataques que exploram os bugs.
Em resumo, as falhas de gravidade crítica descobertas pela equipe são as seguintes:
CVE-2022-39250 : Confusão do identificador de chave/dispositivo na verificação de SAS em matrix-js-sdk, permitindo que um administrador de servidor mal-intencionado interrompa a verificação baseada em emoji quando a assinatura cruzada for usada, autenticando-se em vez do usuário de destino.
CVE-2022-39251 : Erro de confusão de protocolo no matrix-js-sdk, levando à aceitação incorreta de mensagens de um remetente falsificado, abrindo a possibilidade de se passar por um remetente confiável. A mesma falha possibilita que administradores maliciosos de servidores domésticos adicionem chaves de backup à conta do alvo.
CVE-2022-39255 : Igual ao CVE-2022-39251, mas com impacto no matrix-ios-sdk (clientes iOS).
CVE-2022-39248 : Igual a CVE-2022-39251, mas impactando matrix-android-sdk2 (clientes Android).
Além dos problemas acima, os seguintes problemas de gravidade mais baixa também foram encontrados:
CVE-2022-39249 : Problema de representação semi-confiável em matrix-js-sdk levando à aceitação de chaves encaminhadas sem solicitação, possibilitando a representação de outros usuários no servidor. Os clientes marcam essas mensagens como suspeitas do lado do destinatário, então a gravidade do bug diminui.
CVE-2022-39257 : Igual ao CVE-2022-39249, mas com impacto no matrix-ios-sdk (clientes iOS).
CVE-2022-39246 : O mesmo que CVE-2022-39249, mas impactando matrix-android-sdk2 (clientes Android).
Há também duas questões que ainda não receberam um número de identificação. Um deles é um problema que permite que um servidor doméstico malicioso falsifique convites em nome de seus usuários ou adicione dispositivos a contas de usuários.
A segunda refere-se ao uso de AES-CTR para criptografar anexos, segredos e backups de chaves simétricas sem um vetor de inicialização AES, o que o torna inseguro.
Segurança da matriz
Uma coisa que os pesquisadores que descobriram as falhas apontam é que os blocos de construção criptográficos da Matrix são robustos, mas o projeto parece ter uma maneira frouxa de reunir tudo com segurança.
A variedade dos tipos de bugs (inseguro por design, confusão de protocolos, falta de separação de domínios, bugs de implementação) e o fato de que o impacto está espalhado por vários subprotocolos e bibliotecas parecem confirmar isso, conforme destacado no documento técnico:
Além dos erros de implementação e especificação observados, essas vulnerabilidades destacam a falta de uma abordagem unificada e formal para garantias de segurança no Matrix.
Em vez disso, a especificação e as implementações parecem ter crescido “organicamente” com novos subprotocolos adicionando novas funcionalidades e, assim, subvertendo inadvertidamente as garantias de segurança do protocolo principal.
Isso sugere que, além de corrigir as vulnerabilidades específicas relatadas aqui, o Matrix/Megolm precisará receber uma análise formal de segurança para estabelecer confiança no design.
A Matrix está atualmente se concentrando no desenvolvimento de SDKs de 2ª e 3ª geração mais limpos e seguros escritos em Rust, e vale a pena notar que as falhas descobertas não afetam esses SDKs de geração mais recente.
O Thunderbird, que adicionou suporte para Matrix VOIP e bate-papo na versão 102 lançada em junho de 2022, também lançou uma atualização de segurança ontem que aborda os problemas.