El mantenedor de KeePassXC en Debian elimina todas las funciones de red
(fosstodon.org/@keepassxc)- Si el paquete
keepassxcde Debian pasa a ser un paquete de funcionalidad mínima, los usuarios que quieran conservar las funciones actuales deberán cambiarse akeepassxc-full - La eliminación no se limita a networking: también incluye YubiKey, auto-type, integración con navegadores, SSH agent, FDO secrets, descarga de favicons y HIBP
- La descripción del paquete en Debian indica que el
keepassxcpredeterminado solo ofrece “funcionalidad mínima básica” y clasifica networking, SSH agent, plugins de navegador y FDO secret storage como complejidad de seguridad - El aviso del cambio se comunicará mediante
NEWS.Debian.gzyapt-listchanges; los usuarios de stable deberán revisar las notas de la versión - El nombre del paquete y la forma de transición aún podrían ajustarse, y se menciona la posibilidad de que después de Trixie
apt install keepassxcmuestre dos opciones
Cambios en el paquete keepassxc de Debian
- Team KeePassXC informó a los usuarios de Debian que el mantenedor del paquete
keepassxcplanea eliminar una gran cantidad de funciones - Si el cambio llega más allá de testing/sid, los usuarios que necesiten las funciones actuales deberán cambiarse a
keepassxc-full - Aunque el reporte de bug de Debian parece tratar sobre desactivar networking, Team KeePassXC refuta esto y afirma que el cambio real se acerca más a una eliminación completa de funciones, más allá de networking
Alcance de las funciones eliminadas
- Según Team KeePassXC, las funciones que se eliminarán son las siguientes
- YubiKey
- auto-type
- integración con navegadores
- SSH agent
- FDO secrets
- networking
- descarga de favicons
- HIBP
Descripción del paquete Debian y justificación
- La descripción del paquete
keepassxcen Debian sid indica que el paquete predeterminado solo incluye funciones mínimas - Esa descripción considera networking, SSH agent, plugins de navegador y FDO secret storage como complejidad de seguridad, e indica usar
keepassxc-fullsi son estrictamente necesarios - Se compartió como reporte de bug relacionado de Debian #953529 - keepassxc: Compiling with disable networking support
Postura del mantenedor de Debian
- El mantenedor de Debian señaló
/usr/share/doc/<package>/NEWS.Debian.gzcomo el primer lugar donde revisar cambios inesperados - Los usuarios de testing/unstable pueden ver automáticamente los cambios si tienen instalado
apt-listchanges, y los usuarios de stable deben leer las notas de la versión - Afirmó que esta decisión se discutió durante un año y que, tras el incidente de xz-utils, se inclinaron por reducir al máximo el código incluido por defecto
- El mantenedor no considera que haya una gran superposición entre los usuarios que quieren Debian, KeePassXC y un gestor de contraseñas con muchas funciones al mismo tiempo
- Expresó que no tiene sentido poner “agujeros” en un gestor de contraseñas solo local
Problemas de comunicación entre upstream y downstream
- Un usuario cuestionó que, pese a que la discusión duró mucho tiempo, los desarrolladores upstream parecieran estar completamente sorprendidos
- El mantenedor de Debian respondió que se trata de un asunto interno del proyecto Debian y que pidió opiniones a otros desarrolladores de Debian en IRC
- Explicó que ya conocía la postura de upstream, que upstream dejó IRC hace algunos años y que apenas tiene energía suficiente para empaquetar las nuevas versiones
- Team KeePassXC y algunos usuarios temen que esta decisión de downstream provoque que lleguen a upstream reportes de bugs y confusión
Nombre del paquete y dirección de la transición
- Varios usuarios sugirieron que, en lugar de convertir el
keepassxcpredeterminado en un paquete de funcionalidad mínima, sería menos confuso usar un nombre comokeepassxc-minimalokeepassxc-lighty mantener elkeepassxcexistente con todas las funciones - Una propuesta planteaba la siguiente estructura
keepassxc-lightkeepassxc-fullkeepassxccomo paquete de transición que depende dekeepassxc-full- explicación del cambio mediante
NEWS.Debian
- El mantenedor de Debian respondió que el cambio de nombre depende de la aprobación de
ftpteam, y que la opción del paquete de transición para Trixie podría ser la mejor propuesta - También se mencionó la posibilidad de que, después de Trixie, se elimine el paquete de transición y
apt install keepassxcmuestre dos opciones
1 comentarios
Opiniones de Hacker News
Distribuir con el mismo nombre software al que se le quitaron masivamente funciones que upstream había incluido resulta sospechoso, en el mejor de los casos.
Si quieren ir por ese camino, deberían distribuirlo como un fork con otro nombre, para que upstream no siga recibiendo quejas de usuarios por esos problemas.
Me recuerda a cuando, hace tiempo, el mantenedor de Chromium en Debian deshabilitó unilateralmente la instalación de extensiones y al final el parche se revirtió.
También me hace pensar en algo mucho más antiguo: cuando Debian eliminó la interfaz del kernel para cargar firmware binario en tarjetas de red y me rompió la red.
En realidad, lo único que hicieron fue cambiar a OFF el parámetro de compilación XC_ALL [0], y ese valor también es el predeterminado en el CMakeLists.txt de upstream 1.
Si upstream considera que esta función es tan importante, debería empezar por corregir el valor predeterminado.
Es posible que los usuarios se confundan porque una función dejó de funcionar después de actualizar, pero que el paquete sin sufijo coincida con los valores predeterminados de upstream es, en sí mismo, bastante razonable.
[0] https://salsa.debian.org/debian/keepassxc/-/commit/7d6d16e3f...
1 https://github.com/keepassxreboot/keepassxc/blob/develop/CMa...
El rol del mantenedor es más que copiar y pegar upstream.
Tiene autoridad para juzgar qué es apropiado para los usuarios finales de la distribución.
En este caso parece haber una justificación de seguridad razonable, y además se ofrece un paquete alternativo.
Debian parece ser la única distribución con una actitud rara de ignorar a upstream.
En dos proyectos upstream que mantengo, Debian también cambió unilateralmente los nombres de los paquetes.
De uno me enteré mucho tiempo después; en el otro me opuse explícitamente, pero aun así avanzaron de una manera completamente absurda.
Al final, quien tiene que explicárselo a los usuarios soy yo.
Edición: aquí se puede ver la arrogancia de Julian, del lado de Debian: https://github.com/keepassxreboot/keepassxc/issues/10725#iss... — a esto me refiero.
No “recortaron” lo que creó upstream.
Distribuyen una versión sin plugins y crearon una versión -full que incluye los plugins.
Si el plugin viene activado por defecto, entonces no es un plugin sino una función integrada, y esta forma de hacerlo es correcta.
Si Apple hubiera dicho “modificamos tu app porque creemos que es mejor para la seguridad”, la gente habría salido con antorchas y horcas.
Pero si lo hace un mantenedor deb, se vuelve tema de debate.
Si hay un problema de seguridad, la versión insegura directamente no debería ofrecerse, pero este caso ni siquiera es eso.
En un mundo tipo App Store, el rol del mantenedor debería cambiar.
Su trabajo es hacer que el software funcione en la distribución, no crear un cuasi-fork a su gusto manteniendo el mismo nombre.
Me parece una decisión bastante razonable.
Las funciones de red y la integración con el navegador son grandes agujeros potenciales y puntos de entrada para ataques.
Si solo ejecutas una base de datos de confianza sin funciones relacionadas con red, aunque se descubra una vulnerabilidad debería ser casi imposible abusar de la herramienta, y esa es una característica muy deseable en una herramienta tan crítica como un gestor de contraseñas.
El mantenedor original también está de acuerdo 1.
El paquete completo con red habilitada también está en Debian, así que quien lo quiera solo tiene que hacer
apt install keepassxc-fullpara usar todas las funciones de red.Dicho eso, llamar “crappy”[0] a upstream no es una actitud productiva para un mantenedor de paquetes, y los nombres
keepassxc-liteykeepassxc-fullhabrían sido más claros para los usuarios de Debian quekeepassxcykeepassxc-full.[0] https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
1 https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
La “utilidad” puede mejorar la seguridad.
Porque si un gestor de contraseñas es difícil de usar, la gente deja de usarlo.
Viéndolo un poco más, tampoco queda claro que usar el portapapeles sea necesariamente más seguro que la integración con el navegador.
Un simple error al copiar y pegar podría compensar buena parte de la carga de seguridad que implica la integración con el navegador.
Hace mucho trabajé como contratista en una empresa grande, y las laptops de los administradores de cuentas tenían una contraseña para el cifrado de disco, una contraseña de inicio de sesión de Windows y una contraseña de inicio de sesión de AD; todas tenían que ser distintas, cambiarse cada pocos meses y cumplir requisitos de complejidad bastante severos.
En todas las laptops que vi, sin excepción, había un post-it con las tres contraseñas escritas.
El punto es que la seguridad hipotética de fanáticos de la seguridad no es lo mismo que la seguridad real en la práctica.
Al menos no siempre, y aquí hacen falta compromisos reales.
1: Como contratistas externos, nos encargábamos del mantenimiento de las laptops de algunos empleados.
En teoría no debería haberse hecho así, pero pasar por los sistemas de TI de la empresa tardaba demasiado por la burocracia, así que era mucho más rápido y fácil.
Era ese tipo de empresa.
Esto, por supuesto, también era un “riesgo de seguridad” en sí mismo, porque no corresponde que un técnico cualquiera de una tienda de computadoras toque laptops con datos ultrasecretos de la empresa.
Aunque creo que no había tanto que proteger. Eran más que nada cifras de ventas/clientes, información útil solo para un grupo muy limitado de personas.
Hay un aspecto en el que la integración con el navegador mejora la seguridad frente a copiar/pegar manualmente.
La extensión del navegador verifica la URL de la página antes de completar las credenciales, mientras que copiar/pegar manualmente es vulnerable a dominios con errores tipográficos o a phishing con caracteres homógrafos.
Estoy de acuerdo en que las funciones de red y la integración con el navegador son agujeros potenciales importantes, pero, como dijeron los participantes del issue de GitHub, es importante que casi no haya pruebas de builds reducidas en comparación con el build completo, y que las combinaciones arbitrarias de flags de build no se prueben en absoluto.
Como también se comentó en otros lugares, uno de los flags “opcionales” desactivados es el soporte para yubikey, y por eso usuarios que actualizaron al nuevo paquete roto están quedando bloqueados fuera de su gestor de contraseñas.
Con solo volver a activar ese flag ya se queda en un estado que en la práctica nadie prueba.
Si la premisa era mover a los usuarios existentes a
keepassxc-full, coincido en que el nombrekeepassxc-litehabría evitado el problema.Pero justamente ese es el punto.
Es razonable tomar la solución más segura como valor predeterminado, pero el mantenedor no debería romper funcionalidades existentes si upstream o los usuarios no lo quieren, y en especial no debería dejar a los usuarios bloqueados fuera de su gestor de contraseñas.
Publicar “crappy” en GitHub fue tan grosero que, si yo usara Debian, habría reconsiderado usarlo.
Si el paquete está lleno de funciones tan pésimas, no entiendo por qué se molestan en mantenerlo.
Mejor eliminarlo y dejar que los usuarios averigüen cómo instalarlo correctamente.
Me dan pena los desarrolladores de KeepassXC; mantener un proyecto open source ya es difícil y encima tienen que lidiar con esto.
En cuanto vi la expresión crappy, perdí de inmediato el respeto por julian-klode.
La solución que propuso drawks parece claramente la opción correcta:
https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
No veo por qué esto no podría ser una opción obvia.
Porque el mantenedor tiene su propia postura y quería explícitamente cambiar el valor predeterminado.
No solo era la opción obvia, sino que en Debian ocurrió exactamente así: https://salsa.debian.org/debian/keepassxc/-/commit/7d6d16e3f...
El post original es simplemente clickbait mal escrito.
No se eliminó nada; solo se movió al paquete
keepassxc-full.Mientras tanto, en Arch, el paquete fwupd, que probablemente esté instalado con bastante frecuencia entre su base de usuarios, fue configurado silenciosamente para depender de passim, y passim levanta un servidor web abierto en
0.0.0.0:275001 sin consentimiento explícito del usuario.Además, passim usa GnuTLS, famoso por tener más agujeros que un queso suizo 2.
Me parece realmente absurdo, y no me sorprendería que hubiera un exploit tipo xz escondido en algún punto de la cadena.
Ni siquiera hace falta buscar fwupd.
El omnipresente systemd-resolved puede abrir, bajo demanda, un servidor LLMNR en el puerto 5355; es decir, lo que también se conoce como mDNS y forma parte de la antigua familia Microsoft NetBIOS.
En la era del Internet de las cosas, donde cualquiera puede acceder a mi LAN, ahora Linux también se está sumando a ese desastre.
La corrección para fwupd es esta, ya que el archivo de configuración predeterminado es de baja calidad y ni siquiera trae valores predeterminados comentados:
La corrección para resolved es poner
LLMNR=noen/etc/systemd/resolved.conf, donde está comentado, y probablemente también quierasDNSStubListener=no.Unos valores predeterminados decentes serían estos:
Bueno saberlo.
Creo que esto podría publicarse como un artículo aparte.
El responsable del paquete debería actuar según el principio de mínima sorpresa y no desactivar funciones clave salvo que exista un riesgo documentado, o al menos plausible
En esta sección de comentarios la palabra “plugin” aparece 25 veces hasta ahora, pero de lo que se habla aquí no son plugins
KeePassXC tiene muchas funciones, pero no parece haber nada que, por sí solo y sin una acción explícita del usuario, sea una fuente probable de vulnerabilidades
La integración con el navegador primero debe activarse antes de configurarla, y las demás funciones desactivadas por esta bandera probablemente sean iguales, por lo que un paquete
-minimalhabría sido más apropiadoLa molestia grave que esto causará a quienes usaban la integración con el navegador supera por mucho a la pequeñísima cantidad de usuarios que podrían beneficiarse de este cambio en un futuro incierto
Además, la integración con el navegador suele ser una función mucho más segura que el acceso al portapapeles
Tampoco parece alinearse con la visión del proyecto:
El objetivo es crear una aplicación que cualquiera pueda usar y que también ofrezca funciones avanzadas a quienes las necesiten
Como esta distinción se podría haber creado sin romper a los usuarios existentes, es difícil verlo como otra cosa que una mala decisión del responsable del paquete de Debian
Sin duda es bueno poder usar KeepassXC sin funciones de red, pero considerar la integración con el navegador como una función de nicho está muy alejado de la realidad
Apostaría a que más de la mitad de los usuarios de KeepassXC en Debian, probablemente muchos más, quieren funciones que serán desactivadas sin aviso por la forma en que se hizo esto
Al final la decisión está en sus manos, pero eso no significa que sea una buena decisión, y yo creo que no lo es
Palabras del mantenedor de KeePassXC:
https://github.com/keepassxreboot/keepassxc/issues/10725#iss...
Esto suena a chantaje emocional
Quién sabe cuántas veces se ha perdido todo por una falla de hardware, una actualización que rompió el sistema operativo, usar
dden la unidad equivocada, etc.Si un mantenedor downstream quiere cambiar un paquete de una forma distinta a la intención del proyecto upstream, creo que debería distribuirlo con otro nombre y encargarse directamente de todos los reportes de bugs causados por esa versión modificada
La compilación predeterminada tiene networking en OFF
Lo mismo aplica para Yubikey, la integración con el 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...
La opción de compilación
WITH_XC_NETWORKINGviene desactivada por defecto, así que está claro que los desarrolladores pretendían que esta configuración fuera una configuración de compilación válidaSé que normalmente esto no se cumple bien, pero el flujo predeterminado debería ser así
Si usas un paquete proporcionado por una distribución y encuentras un bug, deberías abrir el bug contra el paquete de la distribución; luego el mantenedor lo revisa y, si es un bug que viene de upstream, lo eleva al proyecto upstream
Este enfoque es útil porque 1. el responsable del paquete conoce el paquete y puede hacer la clasificación y el análisis iniciales, e incluso corregirlo antes de que llegue a upstream, y 2. como se dijo, los paquetes de las distribuciones a menudo incluyen parches, así que el mantenedor debe verificar si el problema está en el empaquetado o en el código fuente upstream
Lamentablemente, muchos usuarios reportan primero a upstream
Así que, en la práctica, es una preocupación razonable, pero en principio no debería ocurrir
O bien habría que señalar a los usuarios finales que es un paquete no soportado
Por ejemplo, que aparezca como KeePassXC-Debian o KeePassXC-Unsupported, y que en About se quiten los datos de contacto o el sitio web de los desarrolladores y se reemplacen por información de soporte de Debian
Pequeños cambios downstream para adaptarse al sistema operativo están bien
Pero modificar la app para eliminar funciones centrales y hacer que los desarrolladores upstream reciban una enorme cantidad de quejas no está bien
No entiendo por qué comentan sin leer ni siquiera el texto enlazado de 200 caracteres
El mantenedor activó todos los plugins, incluidos los relacionados con red, en el paquete
keepassxc-full, y dejó el paquetekeepassxcsolo con las funciones básicas, con una postura de seguridad mucho mejorEsto es claramente totalmente aceptable y está dentro de las atribuciones del mantenedor
Toda la queja es que esto es un cambio
Para quien tenga interés, este issue de GitHub parece contener los comentarios más recientes
https://github.com/keepassxreboot/keepassxc/issues/10725
La postura de Julian Klode, mantenedor de Debian, es bastante filosa:
El título está mal
El texto original decía que el mantenedor había eliminado no solo las funciones de red, sino todas las funciones, y era correcto porque, en efecto, todas las funciones opcionales, incluso las completamente offline, fueron desactivadas durante la compilación