Post banner | CVE-2023-24055
    unidade-37cyberSecuritycyberAttackscveservice

CVE-2023-24055

A CVE-2023-24055 é uma vulnerabilidade classificada com uma pontuação de 5.5, possuindo um baixo grau de complexidade de execução, mas representando um alto risco para a confidencialidade.



No início deste ano, o engenheiro de segurança Alex Hernandez publicou um relatório de segurança sobre o gerenciador de senhas de código aberto KeePass, o qual tem gerado certa repercussão em relação à natureza do problema. A questão em si é se o relatório trata de fato de uma vulnerabilidade ou se descreve apenas um vetor de ataque.

Sobre o KeePass

Com quase 20 anos de existência, o KeePass tem sido a escolha de muitos usuários como gerenciador de senhas, especialmente para aqueles que buscam um controle mais rígido sobre seu cofre de senhas. Além disso, é uma opção gratuita, de código aberto e com suporte a múltiplos usuários, quando necessário.

O KeePass destaca-se por possibilitar o uso de extensões, incluindo para navegadores, pela sua portabilidade, uma vez que o próprio usuário mantém controle do banco de dados. Além disso, o gerenciador de senhas integra-se com alguns mecanismos de MFA, utiliza um bom padrão de criptografia, como AES-256 (também utilizado pelo Dashlane e Bitwarden), e possui diversas re-implementações para diferentes plataformas, tais como KeePassDroid, MacPass, KeeWeb e KeePassXC.

É importante ressaltar que o KeePass tem se apresentado como uma alternativa aos gerenciadores de senhas mais populares, como o LastPass. Este último, antes considerado uma opção viável financeiramente, tem enfrentado graves ataques, comprometendo a segurança de um número significativo de usuários. Tal informação ganha relevância pelo fato de que, com sua recente ampla adoção, o KeePass se tornou alvo de especialistas em segurança. A seguir, descreveremos um relatório que tem sido discutido na comunidade.

Sobre a CVE-2023-24055

A CVE-2023-24055 é uma vulnerabilidade classificada com uma pontuação de 5.5, possuindo um baixo grau de complexidade de execução, mas representando um alto risco para a confidencialidade. Essa vulnerabilidade diz respeito à possibilidade de utilização do recurso de automação (Triggers) presente no KeePass (versão 2.53) para a execução de códigos maliciosos, comprometendo, dessa forma, as senhas armazenadas no programa.

Em todas as instalações do KeePass, o arquivo de configuração KeePass.config.xml é encontrado por padrão. Esse arquivo pode ser localizado no diretório do usuário ou no diretório da aplicação. Os dados gravados nesse arquivo estão relacionados às configurações associadas aos recursos e preferências do usuário.

É importante ressaltar que esse arquivo não contém senhas ou qualquer informação encriptada, sendo destinado apenas para armazenar configurações, como as definições de automação utilizando os Triggers. Os Triggers permitem ao usuário configurar a execução de uma tarefa em segundo plano, vinculada a uma ação realizada pelo próprio usuário dentro do KeePass. Por exemplo, é possível realizar o backup do arquivo de senhas após cada salvamento ou executar um comando ao abrir ou encerrar o KeePass.

No entanto, utilizando os Triggers também é possível que uma cópia do banco de senhas desencriptado seja salva em um arquivo, seguida pela execução de um comando que consuma esse arquivo. Essa sequência de ações pode comprometer a segurança do banco de senhas, tornando-o vulnerável a acessos não autorizados.

Para exemplificar o funcionamento da vulnerabilidade, foi criado um banco de senhas chamado "MyPasswords" utilizando o KeePass 2.53 no Windows 11. É importante destacar que, na imagem apresentada, o banco de senhas está aberto com uma senha pessoal e nenhum Trigger foi configurado.

Área de configuração de Triggers do KeePassÁrea de configuração de Triggers do KeePass

No entanto, mesmo com o banco de senhas protegido (e até mesmo trancado), foi possível localizar o arquivo de configuração do KeePass e realizar modificações globais para qualquer banco de senhas, incluindo um Trigger malicioso.

Visualizando o diretório e arquivo de configuração do KeePass em um terminal Power Shell.Visualizando o diretório e arquivo de configuração do KeePass em um terminal Power Shell.

Ao editar o arquivo de configuração XML, foi adicionado um Trigger chamado "Risk Trigger". Esse Trigger tem a função de salvar uma cópia do banco de senhas sempre que houver uma modificação e, em seguida, executar um comando no PowerShell para enviar todo o conteúdo descriptografado do banco de senhas para um servidor remoto. Em um cenário real, esse servidor poderia ser malicioso e receberia uma cópia descriptografada do banco de senhas, sem a necessidade de descobrir a senha necessária para destrancá-lo.

Trigger malicioso injetado no arquivo de configuração do KeePass.Trigger malicioso injetado no arquivo de configuração do KeePass.

Antes de visualizarmos o arquivo do banco de senhas que foi salvo pelo “Risk Trigger”, é interessante observar como esse Trigger pode ser encontrado por meio da interface gráfica do KeePass.

Trigger malicioso sendo visualizado através do GUI do KeePass, aba “Properties”.Trigger malicioso sendo visualizado através do GUI do KeePass, aba “Properties”.

Um Trigger pode ser acionado por diferentes eventos. Neste caso, foram configuradas ações para serem executadas após o evento "Saved Database File", que ocorre sempre que o usuário salva uma informação modificada dentro do banco de senhas.

Trigger malicioso sendo visualizado através do GUI do KeePass, aba “Events”.Trigger malicioso sendo visualizado através do GUI do KeePass, aba “Events”.

Em seguida, podemos visualizar as ações que serão executadas na seção "Actions". É nesse ponto que ocorre a exportação de uma cópia descriptografada do banco de senhas e o seu envio através do meu comando Powershell malicioso.

Trigger malicioso sendo visualizado através do GUI do KeePass, aba “Actions”Trigger malicioso sendo visualizado através do GUI do KeePass, aba “Actions”

Por fim, a cópia do arquivo de senhas que foi enviada para um servidor sempre que o KeePass acionou o "Risk Trigger" após a realização de alterações no banco de senhas.

Arquivo salvo pelo Trigger Malicioso contendo senhas e nomes de usuários desencriptados.Arquivo salvo pelo Trigger Malicioso contendo senhas e nomes de usuários desencriptados.

Rótulo: Sample Entry #37
Usuário: ExampleUsername
Senha: Un1d4d3#37

Mitigação e remediação

Até o momento desta publicação, o KeePass ainda não implementou medidas de segurança para criptografar ações de gatilho específicas (como a exportação de uma cópia do banco de dados criptografado) e também não adotou medidas para proteger o arquivo de configuração do KeePass contra possíveis configurações maliciosas que ainda não foram exploradas. Na versão posterior (2.53.1), a única adição ao mecanismo de controle foi a verificação da chave mestra (utilizada para abrir o banco de senhas) antes da ação de exportação da cópia descriptografada ocorrer.

Changes from 2.53 to 2.53.1:
...
Removed the 'Export - No Key Repeat' application policy flag; KeePass now always asks for the current master key when trying to export data.
Minor other improvements.

Essa decisão foi tomada pelo criador e principal mantenedor do projeto, Dominik Reichl, devido à sua discordância de que essa CVE esteja de fato relatando uma vulnerabilidade. Em resposta ao autor da CVE, Alex Hernandez, nos fóruns de discussão do KeePass, Reichl afirmou:

"Esse tipo de ataque só pode ser prevenido ao manter um ambiente seguro e utilizar antivírus, firewall, ou não abrir nenhum e-mail suspeito." Além disso, ele acrescentou: "O KeePass é incapaz de ser magicamente seguro em um ambiente inseguro.”

No NIST - National Vulnerability Database, a CVE ainda está em revisão e contestada.

Screenshot do CVE visto na página oficial.Screenshot do CVE visto na página oficial.