Gately v0.6.6 publicado
12 de noviembre de 2026
Descargar v0.6.6 · GitHub Release
Esta versión se centra en el refuerzo de seguridad. Se recomienda actualizar a todos los usuarios.
Correcciones de seguridad
- Cabeceras de origen falsificadas: antes solo se eliminaban las cabeceras con el nombre exacto, como
X-Real-Ip, mientras que los backends PHP, WSGI y CGI tratanX_Forwarded_ForoX_Real_IPcomo la misma variable que la cabecera real, de modo que un visitante podía indicar a esos backends cualquier dirección de cliente o esquema. Ahora las cabeceras de origen y de puerto de origen que aporta el visitante, incluidas sus variantes con guion bajo, se eliminan siempre antes de reenviar. Las subpeticiones de autenticación de reenvío reciben el mismo trato y Gately escribe él mismoX-Original-URI, así que los servicios de autenticación que permiten rutas según ese valor ya no se dejan engañar por un valor del visitante. - Límite de intentos de inicio de sesión en servicios de archivos: las comprobaciones de contraseña de WebDAV, FTP y SMB no tenían límite de intentos. Ahora un origen con 10 fallos en 15 minutos es rechazado hasta que termina la ventana (IPv6 agrupado por /64; un inicio de sesión correcto no reinicia el contador). Las credenciales verificadas recientemente no ocupan un hueco y las sondas anónimas de SMB no se cuentan.
- Restauración: al restaurar un archivo de cuenta se usa una nueva clave de sesión, de modo que una copia antigua no puede reactivar tokens revocados después por el cierre de sesión o por «Cerrar sesión en todos los dispositivos». Se rechazan las copias que al descomprimirse superan 128 MB o contienen más de 256 archivos.
- Otros: la importación de configuración de nginx limita la profundidad de anidamiento de bloques (un archivo muy anidado agotaba la pila y terminaba el proceso); las cabeceras Host de más de 300 bytes reciben 400; los nombres de usuario que se escriben en el registro de auditoría y en los logs tras un inicio de sesión fallido se recortan a 64 caracteres.
- Dependencias: correcciones de seguridad de la biblioteca estándar de Go 1.26.11; actualizados golang.org/x/net, klauspost/compress y andybalholm/brotli; el cliente SMB de los montajes de almacenamiento pasa a cloudsoda/go-smb2, que tiene mantenimiento (GO-2026-5051).
Cuentas y sesiones
- Revocación de sesiones en el servidor: al cerrar sesión se revoca el token, y «Ajustes → Cuenta y seguridad → Sesiones de inicio de sesión» incluye el nuevo «Cerrar sesión en todos los dispositivos» (
POST /api/account/sessions/revoke), que finaliza de una vez todas las sesiones creadas con contraseña, Passkey, inicio de sesión de terceros y el gateway de fnOS. Los tokens de API no se ven afectados. - Límites de solicitudes salientes (
restrictOutbound, desactivado por defecto): al activarlo, las solicitudes salientes a direcciones configuradas por el administrador (webhooks, notificaciones, suscripciones a listas de IP, callbacks de DDNS, comprobación de actualizaciones, inicio de sesión de terceros, etc.) rechazan las direcciones de loopback, privadas y de enlace local (incluida 169.254.169.254). La comprobación se aplica a la IP resuelta en cada conexión, de modo que cubre también las redirecciones y el DNS rebinding. Los upstreams del proxy inverso, Wake-on-LAN, los montajes de almacenamiento y otras funciones de red interna no se ven afectados. - Protección contra solicitudes lentas: el puerto de administración limita la lectura del cuerpo de la solicitud por endpoint. Los endpoints normales deben terminar en 60 segundos; los de archivos grandes (restauración de copias, paquetes de actualización, subida de archivos) no tienen límite de tiempo total, pero deben seguir enviando a 4 KiB/s o más de media.
Servicio web
- Quitar el prefijo de ruta en backends por ruta (#86): un backend por ruta puede quitar su prefijo antes de reenviar con la opción «Quitar el prefijo de ruta al reenviar», de modo que
/api/zyqd/abcllega al backend como/abc, precedido por la ruta que lleve la dirección del backend. Equivale alproxy_pass http://backend/;de nginx, y las importaciones de nginx lo convierten automáticamente. - Puerto de origen del visitante (#83): con «Añadir X-Forwarded-*» activado, se envían al backend
X-Real-PortyX-Forwarded-For-Port. Cuando Gately está detrás de una CDN o un proxy inverso, los ajustes globales admiten una «Cabecera del puerto real». - Gately de dos niveles (#81): cuando la instancia externa solo ejecuta el WAF y la interna gestiona el inicio de sesión, configure la misma clave de marca de autenticación en ambas y active «Confiar en la marca de autenticación del backend» en el sitio externo; los visitantes autenticados por la instancia interna también omiten el WAF externo.
Consulte Servicio web y WAF.
Copia de seguridad y restauración (#85)
Al restaurar una configuración ahora se puede «Conservar la cuenta de administrador actual»: la cuenta, los tokens de API y el inicio de sesión de terceros de la interfaz de administración mantienen sus valores actuales, y la copia puede omitir account.json, lo que resulta útil para trasladar la configuración de otra instancia. Consulte Configuración · Copia de seguridad y restauración.
Correcciones
- DDNS (#84): los registros de dynv6 con dominio principal
dynv6.nety subdominioxxxxya no fallan con 404 al sincronizar ni al eliminar el registro del proveedor; la zonaxxxx.dynv6.netse detecta automáticamente.
Rendimiento
- La lista de bloqueos ya no reconstruye su lista CIDR en cada cambio cuando contiene muchos bloqueos; el enrutamiento de sitios solo compara dominios comodín tras no encontrar un dominio exacto; los registros caducados de límite de tasa y de fallos de inicio de sesión se limpian como máximo una vez por segundo.
- La autenticación básica de sitios y WebDAV guardan en caché durante 10 minutos las comprobaciones bcrypt correctas, con lo que el coste de CPU por solicitud baja de unos 85 ms a microsegundos.
- El reenvío de puertos reutiliza los búferes de copia cuando no se puede usar splice; la lista de conexiones en vivo solo construye las 500 filas que devuelve; la eliminación de cabeceras de origen ya no reserva memoria.
- Las estadísticas de sitios, el estado y los logs de Docker y la lista de sesiones de terminal de la interfaz web dejan de consultarse mientras la pestaña del navegador está oculta.
Notas de actualización
- Docker: descargue la nueva imagen y recree el contenedor; OpenWrt: instale el nuevo
.apk/.ipksobre el anterior; fnOS: instale el nuevo.fpken el Centro de aplicaciones; el resto de instalaciones puede actualizarse en línea desde Ajustes del sistema. - Las sesiones iniciadas siguen siendo válidas tras la actualización; use «Cerrar sesión en todos los dispositivos» cuando todos los dispositivos deban iniciar sesión de nuevo.