Ir al contenido

Protecciones y límites

Qué protege ShellEasy, de quién, y dónde termina la protección. Esta página resume en palabras sencillas el modelo de amenazas del proyecto; donde algo no está verificado, lo decimos.

Estado: prealfa, versión 0.1.0. Criptografía con primitivas estándar y decisiones documentadas, no verificada por terceros.

Qué protege

Credenciales
Las claves privadas, las frases de contraseña y las contraseñas de los servidores se cifran dos veces: dentro de una base de datos cifrada y, una por una, con un cifrado dedicado vinculado a cada registro.
Lista de hosts
Hosts, nombres de usuario, carpetas, etiquetas, snippets y reglas de los túneles están en la base de datos cifrada, no solo las contraseñas.
Claves de los servidores
En la primera conexión comparas la huella del servidor. Si después la clave cambia, la conexión se bloquea y no se puede aceptar sobre la marcha.
Interfaz
La interfaz de la app nunca recibe los secretos: solo los ve el código que abre la conexión.
Ningún servicio propio
Sin cuenta, sin telemetría, sin actualizaciones automáticas. Las únicas conexiones salientes son hacia los servidores que abres y, solo si lo activas, hacia el servidor del asistente de IA.

De quién protege

El escenario principal es quien obtiene los archivos de la app sin la contraseña maestra. Por ejemplo:

Equipo robado o perdido
También una copia de seguridad copiada (Time Machine, nube, disco externo), otro usuario del mismo equipo o un programa que lee los archivos pero no conoce la contraseña.
Un servidor hostil
Nombres de archivo maliciosos, salida con secuencias especiales, claves que cambian: los nombres peligrosos se descartan antes de escribir en tu disco.
Un archivo preparado a propósito
Un archivo .shelleasy o un ~/.ssh/config construido para hacer daño: la importación muestra una vista previa, hace una copia de seguridad y nunca ejecuta nada (ProxyCommand no es compatible).
Otra máquina de la red
Por defecto los túneles escuchan solo en 127.0.0.1; si eliges una dirección accesible desde la red, la app te avisa.
Un equipo dejado desbloqueado
Se mitiga con el bloqueo automático tras 15 minutos de inactividad.

Qué no protege

Un equipo desbloqueado y comprometido
Si alguien controla el equipo mientras el almacén está desbloqueado, puede leer la memoria, registrar el teclado o pedirle a la app que exporte. Ningún almacén local resiste a esto.
Un sistema comprometido
Un sistema operativo o un firmware comprometidos quedan fuera del perímetro.
Una contraseña débil
Quien tiene los archivos puede probar contraseñas sin conexión: cada intento es costoso, pero una contraseña débil sigue siendo débil. La contraseña maestra no se puede recuperar: si la pierdes, los datos se pierden. Por eso conviene tener una exportación.
Sesiones y túneles ya abiertos
Siguen activos después de bloquear el almacén: para cerrarlos debes cerrar las sesiones o la app.
La memoria
Pueden quedar copias de los secretos en la memoria, en el swap o en un archivo de hibernación incluso después del bloqueo.
Lo que pasa por las sesiones
La salida de la terminal, los archivos transferidos y el portapapeles no están cifrados en reposo y dependen de tu equipo y del servidor.
Las exportaciones .shelleasy
Están protegidas por su contraseña durante toda su vida: guárdalas como guardarías las llaves.
La restauración de copias antiguas
Quien sustituye la base de datos por una copia anterior obtiene datos antiguos y la app no lo detecta. Si sospechas que la contraseña ha sido comprometida, cambiarla no basta: crea un almacén nuevo con una contraseña nueva e importa una exportación.

Qué sigue visible para quien tiene los archivos

Quien tiene los archivos pero no la contraseña no puede leer los datos, pero sí puede ver:

La carpeta de datos
Que existe una carpeta de ShellEasy, los nombres de sus archivos, su tamaño y las fechas de modificación.
Los parámetros del almacén
Salt y costes de la derivación de la clave: no son secretos, pero indican cuánto cuesta un intento.
Las diferencias entre dos copias
Con dos copias de la base de datos se ve qué bloques han cambiado, no qué contienen.
Fuera del almacén
Según el sistema: carpetas recientes, historial de la shell local y archivos temporales de la edición remota mientras están abiertos.

Asistente de IA, opcional

Está desactivado por defecto y no incluye ningún modelo: conectas Ollama, LM Studio o llama.cpp. Por defecto el texto va solo a tu equipo; un servidor no local requiere una confirmación explícita.

Cada solicitud pasa por una vista previa: el texto mostrado es el que se envía, al destino mostrado. Un filtro oculta claves privadas, tokens y contraseñas conocidas, pero no puede reconocerlo todo: no ve una contraseña escrita en claro sin un nombre que la delate, ni información sensible que no son secretos, como nombres de host y rutas.

El comando propuesto nunca se ejecuta: se inserta en el prompt y lo lanzas tú. La explicación puede ser engañosa y el comando dañino, así que lee antes de pulsar Enter.

Qué todavía no está verificado

Versiones firmadas
Los paquetes para macOS y Windows todavía no están firmados.
Otras plataformas
El desbloqueo con huella está pensado para macOS; Windows Hello y Linux todavía no están implementados. El comportamiento en Windows y Linux reales aún hay que probarlo.
Asistente de IA
Está probado con un servidor simulado, todavía no con Ollama, LM Studio y llama.cpp reales.
Ventana de la app
Falta una Content-Security-Policy: sería una defensa adicional, no la corrección de un problema conocido.
Revisión externa
Recomendada antes de la versión 1.0 y antes de recomendar la app para credenciales de producción. Todavía no se ha hecho.

Comunicación coordinada de vulnerabilidades

Escribe a security@shelleasy.app con versión, sistema operativo, reproducción e impacto. No envíes secretos o datos de terceros innecesarios. Prueba solo en sistemas y datos autorizados; detente si existe riesgo de daño o afectación a terceros. Quedan excluidos denegación de servicio, ingeniería social y accesos más allá de lo necesario.

Para investigaciones de buena fe que cumplan estas condiciones, APDSoftware se compromete a no emprender acciones legales basadas exclusivamente en la investigación y comunicación así realizadas. No vincula a terceros o autoridades ni autoriza el acceso a sus sistemas. Nuestro objetivo es responder en 5 días laborables y dar una primera actualización en 15; no son plazos garantizados de corrección. Coordinamos la divulgación según el riesgo y las obligaciones legales. No se ofrece remuneración; un reconocimiento público requiere tu acuerdo. Los datos de la comunicación se rigen por la información de privacidad.

Leer el modelo de amenazas completo →