// SECURITY AUDIT

Informe de auditoría de seguridad

Confía, pero verifica — cada conclusión de la auditoría se publica aquí.

Resumen de la auditoría

Publicado
📅 Fecha de auditoría: 2026-06-01📄 Alcance: los 159 archivos .dart de lib/ · 14 plugins .html en plugins/ · configuración de android/🔬 Método: verificación cruzada entre archivos + auditoría por capas de abajo arriba
0
Crítico
0
Alto
0
Medio
0
Bajo
0
Confirmado seguro

Veredicto general: la postura de seguridad del proyecto es sólida. Los mecanismos centrales están bien implementados: cifrado de datos sensibles en Hive, aislamiento en sandbox, HTTPS forzado. Los problemas principales se concentran en la gestión de claves de la máquina de build Android, algunas cajas Hive fuera del alcance de cifrado y la entrada de contraseñas en la capa de plugins.

🔧
Avance de correcciones desde la publicación: las versiones posteriores ya han corregido varios puntos — claves de API por proveedor en cubos cifrados (v1.7.0), cifrado falso del gestor de contraseñas reescrito como AES-256-GCM real (v1.7.0), persistencia de 2FA (v1.7.0), verificación SSL estricta en el kit de red (v1.7.0), filtrado de campos sensibles en el portapapeles (v1.7.0), recifrado automático al cambiar la contraseña maestra (v1.1.0). Correcciones recientes: ver el registro de cambios.

Problemas reales confirmados

🔴 Crítico

Crítico
#1 Contraseña de la clave de firma Android en texto plano — la frase de paso de la clave de firma está en claro en la configuración de la máquina de build; comprometer la máquina equivale a comprometer la clave de firma.

🟠 Alto

Alto
#2 La caja ai_plugin_projects guarda aiApiKey sin cifrar — las claves de IA de nivel de proyecto se persisten en claro en Hive, fuera del alcance de cifrado.
Alto
#3 Clave de licencia de prueba codificada en el mercado de plugins — las credenciales de prueba no deberían ir en los builds de lanzamiento.
Alto
#4 Permiso REQUEST_INSTALL_PACKAGES — la app pide instalar desde fuentes desconocidas; el caso de uso debería minimizarse.

🟡 Medio

Medio
#5 Clave de API de Baidu Translate por parámetro GET en la URL — la clave puede acabar en registros de acceso / historial.
Medio
#6 Los plugins introducen contraseñas de cifrado con prompt() — la entrada de contraseñas en el sandbox debería usar el canal de teclado seguro del host.
Medio
#7 Contraseña de la copia automática WebDAV guardada en Hive — hay que confirmar que está dentro de una caja cifrada.
Medio
#8 Permiso RECORD_AUDIO — debería pedirse solo bajo demanda para grabar, no concederse de forma permanente.

🟢 Bajo

Bajo
#9 La caja sticky_notes guarda notas de usuario sin cifrar
Bajo
#10 El plugin de contabilidad guarda datos financieros en claro
Bajo
#11 Indicador requestLegacyExternalStorage — debería eliminarse al subir targetSdk
Bajo
#12 El plugin de marcadores permite URLs http:// — las páginas en claro deberían mostrar una advertencia de degradación por defecto
Bajo
#13 La exportación de registros de error puede exponer rutas internas — los stack traces contienen rutas de archivo y estructura del código

⚪ Problemas sospechosos (requieren confirmación manual)

Sospechoso
S1 Uso generalizado de innerHTML en plugins (13/14 plugins) — la mayoría ya escapa con escapeHtml(), y la CSP del sandbox limita scripts externos, pero cualquier escape omitido es un posible XSS de DOM.
Sospechoso
S2 Llamadas console.log / console.error en plugins — la salida va a logcat; el contenido son objetos de error sin datos de usuario, riesgo bajo.

Diseños confirmados como seguros

Los siguientes mecanismos superaron la verificación cruzada entre archivos y se confirman como seguros y eficaces:

#MecanismoVía de verificaciónEstado
1Protección por hardware de las claves de cifrado de HiveFlutterSecureStorage → Android Keystore / iOS Keychain
27/7 cajas sensibles cifradasverificado en main.dart; las cajas sensibles se abren todas con cipher
3Copias de seguridad forzosamente cifradassin contraseña → UnencryptedBackupException
4Algoritmo de cifrado de copiasPBKDF2 (300k rondas) + AES-256-GCM
5Cero overhead de registro en releasetodas las salidas de registro dentro de kDebugMode
6WebDAV con HTTPS forzadolas configuraciones HTTP se rechazan directamente
7eval / Function desactivados en el sandboxcobertura total con Object.defineProperty
8Inyección de CSP en el sandboxmeta tag + encabezado HTTP, doble vía
9Protección anti path traversalcomprobaciones de seguridad en importación de plugins y restauración de copias
10Otros puntos confirmadoscifrado de copias v3, flujo de restauración atómico, FLAG_SECURE en páginas sensibles, etc.
🔬
El informe completo (con ubicaciones de código y recomendaciones de corrección por punto) se publicará con el repositorio de código abierto. Esta es la versión resumida. La seguridad es nuestro fundamento — cualquier hallazgo es bienvenido a través de comentarios.
MODO MATRIX: ACTIVADO — repite o pulsa ESC para salir