Não é seguro usar Bitwarden/1Password pra armazenar Passkeys

Bom dia, pessoal.
Tudo certo?

O problema é o seguinte: O que acontece se eu for infectado por um Malware? A resposta parece simples: o Bitwarden armazena as senhas de forma criptografada, então, mesmo que o vault vaze, não tem como acessar o valor descriptografados das Keys e nem das senhas.

Mais ou menos. Tem uma pergunta que nunca consegui achar uma resposta na internet.

O que acontece APÓS eu desbloquear o Vault? As senhas serão descriptografadas e estarão armazenadas em algum lugar da minha memória. O que impede um software malicioso de escanear esses valores e vazar esses valores? Considerando que não devemos confiar cegamente no gerenciamento de memória do S.O. para garantir a segurança desses dados.

Aí entra meu pé atrás com as passkeys. Se vazar uma SENHA, eu tenho 2FA. Se vazar uma passkey, o que eu faço? Espero encontrar a resposta aqui.

Até onde eu consegui chegar, o único jeito “seguro” de armazenar passkeys seria em um dispositivo externo tipo Yubikey. Fora isso, armazenar a passkey no Bitwarden parece menos seguro que armazenar a senha.

Atenciosamente!

2 curtidas

Olá, tudo bem contigo?

Quando um dispositivo é infectado por malware, o risco deixa de ser “será que meus dados vão vazar” e vira “em algum momento isso pode acontecer”. Isso vale para qualquer gerenciador de senhas ou aplicativo que lida com informações sensíveis. A boa notícia é que esse tipo de ataque costuma depender de permissões dadas pelo próprio usuário, falhas de segurança não corrigidas ou instalação de software suspeito. Em dispositivos atualizados e usados com cuidado, a chance de algo assim acontecer cai bastante.

Sobre o vault desbloqueado: enquanto ele está aberto, as senhas ficam temporariamente na memória RAM para que o aplicativo consiga funcionar. Se o sistema já estiver comprometido, um malware mais avançado pode tentar capturar esses dados — e isso não é uma falha do Bitwarden, mas uma consequência de usar um dispositivo que já não é confiável.

Quanto às passkeys: se uma senha vaza, você ainda tem o 2FA; se uma passkey vaza, ela é o próprio fator de autenticação. Por outro lado, passkeys são muito mais difíceis de extrair do que senhas, porque não são digitadas, não aparecem em texto puro e só funcionam no domínio para o qual foram criadas. O risco real só aparece se o dispositivo inteiro estiver comprometido.

No fim das contas, segurança em camadas continua sendo a melhor abordagem. Se você já usa o Bitwarden para senhas, realmente pode ser interessante guardar passkeys em outro serviço ou até em um dispositivo físico, como uma YubiKey que você citou, para diversificar e reduzir a superfície de ataque.

:vulcan_salute:

2 curtidas

Armazenar o Passkey é mais inseguro que armazenar a senha. Justamente, porque, se a senha vazar, ainda tem o 2FA. Se a Passkey vazar, não tem o que fazer. É praticamente a mesma coisa que ter um cookie roubado.

A única menção a isso no seu texto é quando diz que a passkey é mais difícil de extrair porque “só funcionam no domínio para o qual foram criadas”. Eu não sei o que isso significa. Você pode exportar sua key, importar ela em outro computador e ela vai funcionar normalmente. Exatamente o que aconteceria caso um malware roubasse ela.

E, por gentileza, se esse tipo de mensagem for escrito por IA, sugiro que nem responda. Não me leve a mal. Prefiro ficar no vácuo no fórum que ser respondido por puro gibberish gerado no ChatGPT.

Existe uma grande diferença entre você não ficar satisfeito com a resposta e eu não ter tentado ajudar - como é o padrão aqui do comunidade. Sinceramente, não sei direito o que você está esperando como resposta, mas vou deixar bem simples: se qualquer fator de autenticação vazar, não importa qual seja, você está com problemas de verdade.

Quer entender realmente sobre passkeys?

:vulcan_salute:

3 curtidas

Vc apaga a passakey do serviço associado e cria uma nova.

Lendo todo o seu texto ele se baseia em situações bem extremas (acesso a valores direto na memória). Nenhum sistema é 100% seguro mas em resumo no caso especifico de passkeys n é algo a se preocupar já q ele é por default mais seguro que senhas armazenadas.

1 curtida

Se qualquer fator de autenticação vazar, não importa qual seja, você está com problemas de verdade.

Se ainda não deu pra entender, vou propor um exercício mental bem simples: se eu colar aqui a minha senha do e-mail, você vai fazer o quê com ela? Se eu te mandar agora minha senha da Steam, você vai conseguir logar na minha conta?

Não, não vai. Porque tem 2FA. Não tem o que fazer só com a senha. Diferente de um caso onde vaza a Passkey. Se você colar sua chave privada nessa sessão de comentário, todo mundo que importar ela vai conseguir logar. Se não ficou claro, é sobre isso que estou comentando no post.

Existe uma grande diferença entre você não ficar satisfeito com a resposta e eu não ter tentado ajudar - como é o padrão aqui do comunidade.

Ainda pedi pra que não me levasse a mal. Parece que a carapuça serviu.

Agradeço todos os esforços. Te convido a ler os artigos que você mesmo enviou. Vai encontrar a afirmação da minha preocupação e não vai encontrar nem um argumento que vá contra ela.

Nenhum sistema é 100% seguro mas em resumo no caso especifico de passkeys n é algo a se preocupar já q ele é por default mais seguro que senhas armazenadas.

Não, não parece ser. Comentei sobre isso no post e na minha réplica mais recente.

É exatamente isso que eu quero: que alguém prove que é mais seguro armazenar uma passkey que uma senha no meu vault.

Não me leve a mal, mas ninguém precisa te provar nada, se você não quiser utilizar passkey basta não utilizar passkey.

:vulcan_salute:

1 curtida

Esse realmente parece ser um ponto falho na utilização do passkey. Considerando que a informação fica encriptada do lado do servidor, resta o dispositivo do usuário que de fato é o ponto mais vulnerável. Uma máquina comprometida tem grandes chances de expor as passkey.

Mas quando se analisa os riscos de um ataque de segurança, existem outros pontos que precisam ser levados em consideração, por exemplo:

  • Qual é o dano/recompensa do ataque. Conseguir acessar a minha passkey é diferente de vazar um banco de dados com a senha de vários usuários. Em um cenário o dano abrange várias pessoas, no outro apenas alguns usuários com máquinas vulneráveis
  • O quanto acessível é o ataque. Se for necessário um passo antes para conseguir a passkey do usuário, que no caso é infectar a máquina, isso por si só já restringe o quando o ataque pode expandir. Os criminosos focam nas empresas justamente por elas concentrarem a informação de muitas pessoas, é mais difícil hackear uma empresa (pelo menos esperamos q seja) mas a recompensa é bem maior (voltando no primeiro ponto).
  • Toda solução de segurança tenta equilibrar uma difícil balança entre praticidade e segurança, se vc tem um provavelmente está perdendo um pouco do outro. E o passkey é um exemplo disso. Esse exercício q vc fez é interessante, mas a minha sugestão é pensar, “qual o dano que vou receber se isso acontecer?”. Uma vez q vc tiver essa resposta, vc pode pesar de vale a pena a praticidade.

E também, vale lembrar que a resposta para a pergunta q eu sugeri muda de pessoa para pessoa. E até para um indivíduo mesmo, eu não ligo de usar passkey aqui no fórum ou em muitos outros serviços. O dano dela ser comprometida é baixo (não menosprezando esse espaço aqui, amo vcs :heart_on_fire: ). Agora se um dia for virar investidor de cripto ou tiver uma conta bancária com um investimento alto, nesses casos eu iria de 2FA e até mesmo YubiKey.

Ou seja, se o dano da passkey vazar for ficar restrito a um único serviço e não representar um risco a minha saúde e patrimônio, não me sinto preocupado em utilizar.

Aqui no fórum somos, em grande parte, entusiastas e usuários que dedicam um pouco do próprio tempo, que normalmente já é escasso, para tentar ajudar outras pessoas. As contribuições são feitas de forma voluntária e com boa intenção.

Por isso, comentários desqualificando quem tenta ajudar ou insinuando má-fé acabam sendo desnecessários e não contribuem para um ambiente saudável de discussão.

Se a sua expectativa é por análises formais ou consultoria especializada em segurança, talvez seja mais adequado procurar espaços profissionais voltados especificamente para esse tipo de serviço. Aqui a proposta é justamente a troca de conhecimento entre pessoas da comunidade.

7 curtidas

O maior problema no seu caso, é o quanto você super-estima o quão seguro está com senha + 2FA. Mas, você já parou para pensar que se estiver tão comprometido a esse ponto, seus cookies já vazaram a muito tempo do seu navegador? Não precisa nem de senha nem de 2FA nem de nada além disso para falsificar a sua sessão se você não deslogar…

Dito isso, passkeys são consideradas mais seguras, tendo em mente que o sistema não esteja comprometido de forma total. Ainda é mais fácil usar keylogers ou ter o conteúdo do segredo revelado por um intermediário que tenha o seu texto crú da senha em mãos, como por exemplo, o navegador.

Uma passkey, na prática funciona como uma chave ssh funcionaria. No caso da passkey, se tudo foi feito corretamente, o fator principal é que você fica exposto menos tempo e em menos lugares, o servidor não tem autoridade, o navegador ou app que fara uso da passkey não tem a passkey de fato nunca em mãos para manipular, técnicamente, apenas o vault tem.

Aqui existem várias nuances, mas no geral, a prática recomendada é a mesma de chaves SSH:

  1. Você mantem essa chave desbloqueada o mínimo de tempo possível.
  2. Você não mantem essa chave desbloqueada em qualquer lugar, de preferencia mantem em algum nível ou isolamento que exigiria um comprometimento total do sistema para acessar.
  3. Você usa algum mecanismo muito difícil de comprometer ou roubar em uma máquina que não está absolutamente comprometida, e ai, geralmente isso envolve segurança de hardware e biometria para desbloqueio do cofre.

Eu sei que muitas destas coisas infelizmente são bem menos realistas de se por em prática no Linux, especialmente se não estiver atrás de um contêiner via flatpack e de um servidor gráfico como o wayland, mas na prática, a realidade é essa.

Não me leve a mal, mas ninguém precisa te provar nada, se você não quiser utilizar passkey basta não utilizar passkey.

Hahahah. “Não tenho que te provar nada!!“

Comentou por qual motivo, então?? É cada uma que me aparece.

Mas, você já parou para pensar que se estiver tão comprometido a esse ponto, seus cookies já vazaram a muito tempo do seu navegador? Não precisa nem de senha nem de 2FA nem de nada além disso para falsificar a sua sessão se você não deslogar…

Errado. Eu posso dropar os meus cookies do gmail aqui, e você não vai conseguir fazer nada.

Talvez para sites simples, somente o JSESSIONID ou o JWT da sessão sejam o suficiente pra te manter conectado pra sempre. Mas qualquer serviço sério, e que pode te comprometer, faz outras verificações que asseguram que o cookie da sessão é, de fato, íntegro e pertence àquela browser fingerprint.

Você mantem essa chave desbloqueada o mínimo de tempo possível.

Não sei se serve… Um stealer rodando vai verificar constantemente quando o vault for aberto.

Você não mantem essa chave desbloqueada em qualquer lugar, de preferencia mantem em algum nível ou isolamento que exigiria um comprometimento total do sistema para acessar.

Serve parcialmente. Usando o sistema da Apple, ou um hardware compatível com o Windows Hello, ou alguma coisa perto de um Yubikey, imagino que seja o único método seguro: armazenar esse cara FORA do seu disco rígido.

Não, não está errado, isso foi exatamente o que eu disse, você precisa deslogar da conta para revogar seu cookie e informar ao servidor para marcar o access token da sessão como inválido, se você não entendeu.

O problema não é o seu JWT nem o seu JSESSIONID, estes são apenas identificadores, o maior problema é seu access token que pode ser válido por uma hora. E supondo que a pessoa conseguiu roubar seus cookies, honestamente, mimetizar o comportamento da biblioteca do cliente com uma assinatura de ambiente forjada é ridiculamente simples. Geralmente os mecanismos sérios de proteção de cookies hoje envolve impedir que o cookie vaze, como por exemplo, só trafegando o mesmo por HTTPS, impedir a engine JS de ler o cookie via HttpOnly, etc.

Obviamente, se o cookie ou o token de acesso for rotacionando pelo servidor, o que é comum ao fazer refresh da sessão, o invasor teria de roubar este novamente.

O bitwarden também implementa mecanismo similar para o Linux. A questão é que, em todos estes sistemas, um client secret, nem que seja com validade muito momentânea de segundos ou minutos, é construído e armazenado na memória, independente de ser produzido por biometria ou qualquer outro hardware de segurança, acaba de alguma forma na memória, e no fim, o que se faz é limitar sua validade e impedir qualquer acesso simples e bobo, como um memory dump. E é por isso que mencionei que depende do nível de comprometimento.

1 curtida

Quando vc utiliza uma senha armazenada no cofre (gerenciador de senhas) por exemplo, o gerenciador ainda tem que preencher o campo da senha no serviço passando do cofre para o campo de senha o que não ocorre com passkeys já que a validação é feita fora do serviço utilizado (site, app). É basicamente uma estrutura isolada e é por isso n pode ser ataca por metodos de bruteforce ou “roubo de senha“ já que n existe uma. Se passkeys fossem menos inseguras que senha acredite em mim, os engenheiros mais bem pagos do planeta terra (Google, Apple e Microsoft) não a apoiariam. Sei que é chato dar essa cartada mas acredite quando digo que essa questão já foi tratada por profissionais de segurança incalculavelmente mais qualificados que eu ou vc. Em resumo se continua com desconfiança basta não usar. Ainda não é algo 100% obrigatório.

3 curtidas

Entendo que um dos pontos que os demais colegas estão trazendo à discussão é a visão bem próxima da realidade atual e principalmente de quem trabalha com a administração de ambientes.

A discussão inicial ficou muito focada no mecanismo de autenticação, e os pontos levantados são válidos. No entanto, porém existe um outros aspectos da segurança da informação que também precisa entrar nessa análise.

Na prática, segurança não é baseada em um único mecanismo, mas em um conjunto de controles trabalhando em camadas. Quando um dispositivo já está infectado por malware, por exemplo, o problema deixa de ser apenas “qual método de autenticação é mais seguro” e passa a ser a confiabilidade do próprio endpoint.

Nesse cenário, qualquer aplicação que lide com dados sensíveis pode ser afetada, porque em algum momento essas informações precisam existir em memória para serem utilizadas. Isso não é uma falha específica do Bitwarden, é uma consequência natural de um sistema que já não pode ser considerado confiável.

É justamente por isso que, no mundo real (principalmente em ambientes corporativos), segurança não depende de uma única solução. Existe todo um ecossistema de ferramentas trabalhando em conjunto, como:

  • firewall

  • antivírus / EDR

  • hardening do sistema

  • controle de acesso

  • autenticação forte

  • gestão de vulnerabilidades

  • monitoramento contínuo

Nenhuma dessas soluções é perfeita isoladamente. Todas podem falhar em algum momento, por isso o modelo atual de segurança é baseado em defesa em camadas e análise de comportamento.

Hoje, inclusive, muitos incidentes não são identificados pela quebra do mecanismo de autenticação em si, mas por anomalias de uso, como acessos fora do padrão, movimentação lateral na rede, comportamento suspeito de processos ou tentativas de exfiltração de dados.

Sobre passkeys especificamente, o ponto também é válido: elas utilizam criptografia de chave pública, não são digitadas, não podem ser reutilizadas em outros domínios e são resistentes a phishing. Dispositivos físicos como YubiKey realmente elevam o nível de proteção, mas fazem parte de uma estratégia de segurança em camadas, não de uma solução única.

Outro ponto importante, muito presente na visão de quem administra redes e sistemas, é que segurança não é tratada com a premissa de que um ambiente será 100% seguro. Na prática, trabalha-se assumindo que incidentes eventualmente podem acontecer. Por isso, além da prevenção, existe um foco muito forte em detecção, resposta e mitigação de impactos.

Ou seja, o método de autenticação é uma peça importante, mas dentro de um contexto maior. A segurança real acaba vindo da combinação de controles, monitoramento contínuo e gestão de riscos, que são elementos fundamentais da segurança da informação.

4 curtidas

Se não ficou claro o que o @tijolaum disse, vou resumir:

  1. Não super-estime nenhum mecanismo de segurança.
  2. Não sub-estime uma máquina que já foi comprometida.

Como eu mencionei com cookies, se você foi comprometido, já pode ter se dado mal de uma forma que nem imaginava possível, não de chance ao comprometimento, começando pela falsa sensação de segurança, não confie cegamente em 2FA, suspeitou de comprometimento da sua máquina, desconecte e e entre nas sua contas mais importantes e rotacione as senhas de todas as suas contas importantes, atualize passkeys, atualize chaves SSH, etc.

E eu sei que isso é um saco e muita gente não tem paciência para isso, mas tente criar uma agenda para rotacionar senhas, chaves e afins, nem que seja uma vez ao ano. Procure também não cair na tentação de configurar o seu chaveiro para ficar horas destrancado.

update: E no caso do OP que não confia em passkey, uma solução é usar apenas em serviços que permitem integrar a passkey como um mecanismo extra. Costuma ser um substituto um pouco melhor para 2FA padrão.

4 curtidas

Segurança é embaçado, os caras sempre descobrem um jeito de burlar as coisas.

Como explica o g1, a análise do Google aponta que o grupo se infiltrava em dispositivos por meio de falhas na comunicação entre a rede interna e a internet, inserindo arquivos maliciosos para assumir o controle total da máquina.

Um desses arquivos é o Gridtide, que permitia a conexão entre dispositivo da vítima e o Google Planilhas, com as planilhas online funcionando como um canal de comunicação para os hackers, em que eles enviavam ordens ao arquivo malicioso por forma de códigos.

2 curtidas