No todas las vulnerabilidades son dramáticas, ni hace falta un hallazgo espectacular para contar un caso valioso. Este trata de un error concreto en una aplicación de mensajería de código abierto y, sobre todo, de una respuesta que muestra cómo debería funcionar la divulgación coordinada.
la misma clave en todos los dispositivos
SKRED guarda cifradas ciertas configuraciones sensibles en el dispositivo. Normalmente crea una clave propia para cada teléfono en su almacén seguro (Android Keystore). Si ese proceso fallaba —algo conocido en algunos dispositivos antiguos—, entraba en juego una clave de respaldo incorporada al código. Esa clave era idéntica en todas las instalaciones.
Por qué existía. La intención era razonable: seguir protegiendo los datos si fallaba el Keystore del dispositivo. Sin embargo, la clave de respaldo no era propia de cada equipo. Se calculaba de forma determinista a partir de dos valores incluidos en el código; por eso era igual en todas las instalaciones y podía reconstruirse a partir del código fuente público.
Su alcance, sin exageraciones. Se trataba de una ruta de respaldo, no del mecanismo normal de cifrado. Afectaba a configuraciones almacenadas localmente, no al contenido de los mensajes de todos los usuarios. Para aprovecharla hacía falta acceso al propio dispositivo; no era un ataque remoto. Su gravedad se limita a ese escenario local. Es un fallo real, pero de alcance bien delimitado.
ahora: se detiene ante el error
la clave de respaldo solo lee datos antiguos
En la versión actual, la clave de respaldo ya no se usa para cifrar. Si falla la creación de la clave en el Keystore, la aplicación pasa a un estado de error en vez de seguir con una clave conocida. La clave antigua solo se conserva para descifrar datos ya existentes durante la migración.
Una persona responde — y lo corrige.
Tras recibir el informe remitido por el BSI, el responsable técnico del fabricante respondió personalmente. Contestó punto por punto, con contenido técnico, sin recurrir a una respuesta genérica. Compartió documentación adicional de la arquitectura, señaló el código fuente público y empezó a corregir los problemas de inmediato. Además del cambio en la clave de respaldo, añadió la fijación de certificados que faltaba; ambas correcciones pueden seguirse en el repositorio público.
Así debería hacerse.
El valor de la divulgación coordinada no depende de lo espectacular del fallo, sino de lo que ocurre después. SKRED dio un buen ejemplo: código abierto, una persona disponible para responder, diálogo técnico en vez de ponerse a la defensiva y correcciones rápidas y verificables. Que las aplicaciones sean abiertas forma parte de esa misma actitud.