Mantenedor do KeePassXC no Debian remove todos os recursos de rede
(fosstodon.org/@keepassxc)- Se o pacote
keepassxcdo Debian passar a ser um pacote de funcionalidade mínima, os usuários que quiserem manter os recursos atuais terão de migrar parakeepassxc-full - O escopo da remoção não se limita à rede e inclui YubiKey, auto-type, integração com navegador, agente SSH, segredos FDO, download de favicon e HIBP
- A descrição do pacote no Debian informa que o
keepassxcpadrão oferece apenas “bare minimal functionality” e classifica rede, agente SSH, plugin de navegador e armazenamento de segredos FDO como complexidade de segurança - O aviso da mudança será comunicado por
NEWS.Debian.gzeapt-listchanges, e usuários do stable devem verificar as notas de lançamento - O nome do pacote e a forma de transição ainda podem ser ajustados; após o Trixie, há discussão sobre fazer
apt install keepassxcmostrar as duas opções
Mudança no pacote keepassxc do Debian
- A equipe do KeePassXC informou aos usuários do Debian que o mantenedor do pacote
keepassxcpretende remover uma grande quantidade de recursos - Quando a mudança sair de testing/sid, os usuários que precisarem dos recursos atuais terão de migrar para
keepassxc-full - O relatório de bug do Debian parece indicar apenas a desativação de rede, mas a equipe do KeePassXC contesta isso e afirma que a mudança real está mais próxima de uma remoção geral de recursos além da rede
Escopo dos recursos removidos
- Segundo a equipe do KeePassXC, os recursos a serem removidos são os seguintes
- YubiKey
- auto-type
- integração com navegador
- agente SSH
- segredos FDO
- rede
- download de favicon
- HIBP
Descrição do pacote Debian e justificativa
- A descrição do pacote
keepassxcno Debian sid informa que o pacote padrão inclui apenas a funcionalidade mínima - Essa descrição trata rede, agente SSH, plugin de navegador e armazenamento de segredos FDO como complexidade de segurança, orientando quem realmente precisar desses recursos a usar
keepassxc-full - Foi compartilhado o relatório de bug do Debian relacionado #953529 - keepassxc: Compiling with disable networking support
Posição do mantenedor do Debian
- O mantenedor do Debian apontou
/usr/share/doc/<package>/NEWS.Debian.gzcomo o primeiro lugar para verificar mudanças inesperadas - Usuários de testing/unstable podem ver as mudanças automaticamente se tiverem
apt-listchangesinstalado, e usuários do stable devem ler as notas de lançamento - Ele afirmou que essa decisão foi discutida durante um ano e que, após o caso xz-utils, houve uma tendência a reduzir ao máximo o código incluído por padrão
- O mantenedor também disse não acreditar que haja grande sobreposição entre os usuários que querem Debian, KeePassXC e um gerenciador de senhas com muitos recursos ao mesmo tempo
- Ele descreveu como sem sentido colocar “buracos” em um gerenciador de senhas apenas local
Problema de comunicação entre upstream e downstream
- Um usuário apontou como problema o fato de que, mesmo após uma discussão longa, os desenvolvedores upstream pareceram totalmente surpresos
- O mantenedor do Debian respondeu que isso era um assunto interno do projeto Debian e que havia pedido opiniões a outros desenvolvedores Debian no IRC
- Ele explicou que já conhecia a posição do upstream, que o upstream havia deixado o IRC há alguns anos e que só empacotar novas versões já consumia toda a energia disponível
- A equipe do KeePassXC e alguns usuários demonstraram preocupação de que a decisão downstream possa gerar uma onda de relatórios de bug e confusão direcionados ao upstream
Nome do pacote e direção da transição
- Vários usuários sugeriram que, em vez de transformar
keepassxcno pacote de funcionalidade mínima, seria menos confuso usar nomes comokeepassxc-minimaloukeepassxc-lighte manter okeepassxcatual com todos os recursos - Uma das propostas tinha a seguinte estrutura
keepassxc-lightkeepassxc-fullkeepassxcdependendo dekeepassxc-fullcomo pacote de transição- explicação da mudança em
NEWS.Debian
- O mantenedor do Debian respondeu que a mudança de nome depende da aprovação do
ftpteame que, para a transição no Trixie, essa proposta pode ser a melhor opção - Após o Trixie, também foi levantada a possibilidade de remover o pacote de transição e fazer
apt install keepassxcmostrar as duas opções
1 comentários
Opiniões no Hacker News
Distribuir com o mesmo nome depois de remover em massa funcionalidades que o upstream colocou no software é, na melhor das hipóteses, suspeito
Se quiserem seguir nessa direção, deveriam distribuir como um fork com outro nome, para que o upstream não continue sendo importunado por problemas relatados por usuários
Isso lembra quando, no passado, o mantenedor do Chromium no Debian desativou unilateralmente a instalação de extensões, até que o patch acabou sendo revertido
Também me faz lembrar de muito tempo atrás, quando o Debian removeu a interface do kernel que carregava firmware binário em placas de rede, e minha rede quebrou
Na prática, a única coisa feita foi mudar o parâmetro de build XC_ALL para OFF [0], e esse valor também é o padrão no CMakeLists.txt do upstream 1
Se o upstream considera esse recurso tão importante, deveria corrigir primeiro o valor padrão
É possível que usuários fiquem confusos quando o recurso parar de funcionar após a atualização, mas o pacote sem sufixo corresponder ao padrão do upstream é, por si só, bastante razoável
[0] https://salsa.debian.org/debian/keepassxc/-/commit/7d6d16e3f...
1 https://github.com/keepassxreboot/keepassxc/blob/develop/CMa...
O papel de um mantenedor é mais do que copiar e colar o upstream
Ele tem o direito de decidir o que é apropriado para os usuários finais da distribuição
Neste caso, parece haver uma justificativa de segurança razoável, e também é oferecido um pacote alternativo
O Debian parece ser a única distribuição com uma atitude estranha de ignorar o upstream
Em dois projetos upstream que mantenho, o Debian também mudou unilateralmente os nomes dos pacotes
De um deles só fiquei sabendo muito tempo depois; no outro, mesmo eu tendo me oposto explicitamente, fizeram de um jeito completamente sem sentido
No fim, quem precisa explicar aos usuários sou eu
Edit: dá para ver aqui a arrogância do Julian, do lado do Debian: https://github.com/keepassxreboot/keepassxc/issues/10725#iss... — é disso que estou falando
Eles não “arrancaram” algo que o upstream criou
Estão distribuindo uma versão sem plugins e criando uma versão -full com os plugins incluídos
Se os plugins vêm ativados por padrão, então não são plugins, são funcionalidades embutidas, e este é o jeito certo
Se a Apple dissesse “modificamos seu app porque achamos que é melhor para a segurança”, as pessoas apareceriam com tochas e forcados
Mas, quando um mantenedor deb faz isso, vira tema de debate
Se há um problema de segurança, a versão insegura nem deveria ser oferecida; mas nem é esse o caso aqui
Em um mundo tipo App Store, o papel do mantenedor precisa mudar
O trabalho é fazer o software funcionar na distribuição, não criar um quase-fork de acordo com preferências próprias mantendo o mesmo nome
Parece uma decisão bastante razoável
Funcionalidades de rede e integração com o navegador são grandes brechas em potencial e pontos de entrada para ataques
Se você executa apenas um banco de dados confiável, sem recursos relacionados a rede, mesmo que uma vulnerabilidade seja descoberta, deveria ser quase impossível abusar da ferramenta — uma característica muito desejável para uma ferramenta tão crítica quanto um gerenciador de senhas
O mantenedor original também concorda 1
O pacote completo com rede ativada também está no Debian, então usuários que quiserem só precisam fazer
apt install keepassxc-fullpara usar todos os recursos de redeAinda assim, chamar o upstream de “crappy”[0] não é uma postura produtiva para um mantenedor de pacotes, e os nomes
keepassxc-liteekeepassxc-fullprovavelmente seriam mais claros para usuários do Debian do quekeepassxcekeepassxc-full[0] https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
1 https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
“Utilidade” pode aumentar a segurança
Porque, se um gerenciador de senhas é difícil de usar, as pessoas param de usá-lo
Olhando melhor, também não está claro se usar a área de transferência é necessariamente mais seguro do que a integração com o navegador
Só erros de copiar/colar já podem compensar boa parte do ônus de segurança da integração com o navegador
Há muito tempo, fiz um trabalho terceirizado em uma grande empresa; os notebooks dos gerentes de contas tinham senha de criptografia de disco, senha de login do Windows e senha de login no AD, todas precisavam ser diferentes, trocadas a cada poucos meses e com requisitos de complexidade pesados
Em todos os notebooks que vi, sem exceção, havia um post-it com as três senhas anotadas
O ponto é que segurança hipotética de entusiasta de segurança não é o mesmo que segurança no mundo real
Pelo menos nem sempre é, e aqui são necessárias concessões reais
1: Nós, como contratados externos, fazíamos a manutenção dos notebooks de alguns funcionários
Originalmente isso não deveria acontecer, mas passar pelo sistema de TI da empresa demorava demais por causa da burocracia, então era muito mais rápido e fácil
Era esse tipo de empresa
Isso por si só, obviamente, também era um “risco de segurança”, porque não faz sentido um técnico qualquer de uma loja de informática mexer em um notebook com dados ultrassecretos da empresa
Mas acho que não havia tanta coisa assim a proteger. Eram algo como números de vendas/clientes, informações úteis apenas para um grupo muito restrito de pessoas
Há um aspecto em que a integração com o navegador aumenta a segurança em relação a copiar/colar manualmente
A extensão do navegador verifica a URL da página antes de preencher as credenciais, enquanto copiar/colar manualmente é vulnerável a domínios com erro de digitação ou phishing com caracteres homógrafos
Concordo que recursos de rede e integração com o navegador são grandes brechas em potencial, mas, como disseram os participantes da issue no GitHub, é importante notar que há pouquíssimos testes da build reduzida em comparação com a build completa, e combinações arbitrárias de flags de build não são testadas de forma alguma
Como também foi mencionado em outros lugares, uma das flags “opcionais” desativadas é o suporte a yubikey, e por causa disso usuários que atualizaram para o pacote recém-quebrado estão ficando bloqueados fora do seu gerenciador de senhas
Só religar essa única flag já deixa o pacote em um estado que, na prática, ninguém testa
Se a premissa era mover os usuários existentes para
keepassxc-full, concordo que o nomekeepassxc-liteteria evitado o problemaMas esse é exatamente o ponto central
É razoável tornar a solução mais segura o padrão, mas o mantenedor não deve quebrar funcionalidades existentes a menos que o upstream ou os usuários queiram isso, e especialmente não deve deixar usuários bloqueados fora do gerenciador de senhas
Postar “crappy” no GitHub foi tão grosseiro que, se eu usasse Debian, eu reconsideraria o uso
Se o pacote está cheio de funcionalidades tão porcarias, não sei por que se dar ao trabalho de mantê-lo
Seria melhor simplesmente removê-lo e deixar os usuários descobrirem por conta própria como instalar direito
Tenho pena dos desenvolvedores do KeePassXC; manter um projeto open source já é difícil, e ainda precisam lidar com esse tipo de coisa
No momento em que vi a expressão crappy, perdi imediatamente o respeito por julian-klode
A solução proposta por drawks parece claramente ser a escolha correta:
https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
Não sei por que isso poderia não ser uma opção óbvia
Porque o mantenedor tem sua própria opinião e queria explicitamente mudar o padrão
Isso não só é a escolha óbvia, como foi exatamente assim que aconteceu de fato no Debian: https://salsa.debian.org/debian/keepassxc/-/commit/7d6d16e3f...
O post original é só um clickbait mal escrito
Nada foi removido; apenas foi movido para o pacote
keepassxc-fullEnquanto isso, no lado do Arch, o pacote fwupd, que provavelmente está instalado em uma parcela considerável da base de usuários, passou discretamente a depender do passim, e o passim sobe um servidor web aberto em
0.0.0.0:275001 sem consentimento explícito do usuárioAlém disso, o passim usa GnuTLS, famoso por ter mais buracos que queijo suíço 2
Acho isso realmente absurdo, e não ficaria surpreso se houvesse um exploit do tipo xz escondido em algum ponto da cadeia
Nem é preciso procurar pelo fwupd
O onipresente systemd-resolved pode, quando solicitado, abrir na porta 5355 um servidor LLMNR, também chamado de mDNS e parte da antiga linhagem Microsoft NetBIOS
Na era da Internet das Coisas, em que todo mundo pode acessar minha LAN, agora estão fazendo o Linux entrar nessa bagunça também
A correção do fwupd é assim, já que o arquivo de configuração padrão é de baixa qualidade e nem há valores padrão comentados:
A correção do resolved é descomentar
LLMNR=noem/etc/systemd/resolved.conf, e provavelmente você também vai quererDNSStubListener=noBons valores padrão seriam estes:
Bom saber
Acho que isso poderia virar um post separado
O mantenedor do pacote deve agir de acordo com o princípio da menor surpresa e não desativar funcionalidades essenciais, a menos que haja um risco documentado, ou ao menos plausível
A palavra “plugin” aparece 25 vezes nesta seção de comentários, mas não é disso que se trata aqui
O KeePassXC tem muitos recursos, mas não parece haver nada que, por si só, sem ação explícita do usuário, seja uma fonte provável de vulnerabilidades
A integração com o navegador precisa primeiro ser ativada antes de ser configurada, e os outros recursos desativados por essa flag provavelmente são iguais, então um pacote
-minimalteria sido mais adequadoO transtorno sério para quem usava a integração com o navegador é muito maior do que o benefício para um número minúsculo de usuários que, em algum futuro incerto, se beneficiaria dessa mudança
A integração com o navegador também costuma ser um recurso muito mais seguro do que o acesso à área de transferência
Isso também não parece estar alinhado à visão do projeto:
O objetivo é criar um aplicativo que qualquer pessoa possa usar, mas que também ofereça recursos avançados para quem precisa deles
Como seria possível criar essa distinção sem quebrar os usuários existentes, é difícil ver isso como outra coisa que não uma decisão ruim do mantenedor do pacote Debian
É certamente bom poder usar o KeepassXC sem recursos de rede, mas tratar a integração com o navegador como um recurso de nicho é extremamente desconectado da realidade
Eu apostaria dinheiro que mais da metade dos usuários do KeepassXC no Debian hoje, provavelmente muito mais, quer os recursos que serão desativados sem aviso por causa dessa abordagem
No fim, a decisão cabe a eles, mas isso não significa que seja uma boa decisão; eu acho que não é
Palavras do mantenedor do KeePassXC:
https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
Isso soa como chantagem emocional
Nem sei quantas vezes já vi alguém perder tudo por falha de hardware, atualização que quebrou o sistema operacional, uso de
ddno drive errado etc.Se um mantenedor downstream quiser modificar um pacote de uma forma diferente da intenção do projeto upstream, acho que deve distribuí-lo com outro nome e lidar diretamente com todos os relatórios de bugs causados por essa versão modificada
A build padrão vem com networking OFF
O mesmo vale para Yubikey, integração com navegador etc.
-DWITH_XC_NETWORKING=[ON|OFF] Enable/Disable Networking support (e.g., favicon downloading) (default: OFF)https://github.com/keepassxreboot/keepassxc/blob/develop/INS...
Como a opção de build
WITH_XC_NETWORKINGvem desativada por padrão, fica claro que os desenvolvedores pretendiam que essa configuração fosse uma configuração de build válidaSei que, normalmente, isso não é seguido à risca, mas o fluxo padrão original é esse
Se você usa um pacote fornecido pela distribuição e encontra um bug, deveria abrir o bug no pacote da distribuição; o mantenedor analisa e, se for um bug vindo do upstream, encaminha para o projeto upstream
Esse método é útil porque 1. o mantenedor do pacote conhece aquele pacote e pode fazer a triagem e a análise iniciais, talvez até corrigir antes de chegar ao upstream, e 2. como foi dito, pacotes de distribuição frequentemente incluem patches, então o mantenedor precisa verificar se o problema está no empacotamento ou no código-fonte upstream
Infelizmente, muitos usuários reportam primeiro ao upstream
Então, na prática, é uma preocupação válida, mas originalmente não deveria ser assim
Ou então deve ficar claro para o usuário final que se trata de um pacote sem suporte
Por exemplo, exibindo-o como KeePassXC-Debian ou KeePassXC-Unsupported, removendo do About os contatos ou o site dos desenvolvedores e substituindo por informações de suporte do Debian
Pequenas alterações downstream para adequação ao sistema operacional são aceitáveis
Mas modificar o app para remover recursos essenciais e fazer os desenvolvedores upstream receberem uma enxurrada de reclamações não é aceitável
Não entendo por que você comenta sem nem ler o texto linkado de 200 caracteres
O mantenedor ativou todos os plugins, incluindo os relacionados a rede, no pacote
keepassxc-full, e deixou o pacotekeepassxcapenas com os recursos básicos, com uma postura de segurança muito melhorIsso é claramente totalmente aceitável e está dentro da autoridade do mantenedor
A reclamação toda é que isso é uma mudança
Para quem estiver interessado, esta issue no GitHub parece conter os comentários mais recentes
https://github.com/keepassxreboot/keepassxc/issues/10725
A visão do mantenedor do Debian, Julian Klode, é bastante afiada:
O título está errado
O texto original dizia que o mantenedor removeu não apenas os recursos de rede, mas todos os recursos, e isso estava correto, porque todos os recursos opcionais, até os totalmente offline, foram desativados durante a build