Gately v0.6.6 est disponible
12 novembre 2026
Télécharger v0.6.6 · GitHub Release
Cette version est consacrée au renforcement de la sécurité. La mise à jour est recommandée pour tous les utilisateurs.
Correctifs de sécurité
- En-têtes d’origine falsifiés : seuls les en-têtes au nom exact, comme
X-Real-Ip, étaient retirés auparavant, alors que les backends PHP, WSGI et CGI traitentX_Forwarded_ForouX_Real_IPcomme la même variable que l’en-tête réel : un visiteur pouvait donc indiquer à ces backends n’importe quelle adresse client ou n’importe quel schéma. Les en-têtes d’origine et de port source fournis par le visiteur, y compris leurs variantes à tiret bas, sont désormais toujours retirés avant la transmission. Les sous-requêtes d’authentification transmise reçoivent le même traitement, et Gately écrit lui-mêmeX-Original-URI: les services d’authentification qui autorisent des chemins d’après cet en-tête ne sont plus induits en erreur par une valeur du visiteur. - Limitation des connexions aux services de fichiers : les vérifications de mot de passe de WebDAV, FTP et SMB n’avaient aucune limite de tentatives. Une source qui échoue 10 fois en 15 minutes est désormais refusée jusqu’à la fin de la fenêtre (IPv6 regroupé par /64, une connexion réussie ne remet pas le compteur à zéro). Les identifiants vérifiés récemment ne consomment pas de place et les sondes SMB anonymes ne sont pas comptées.
- Restauration : la restauration d’un fichier de compte utilise désormais une nouvelle clé de session, si bien qu’une ancienne sauvegarde ne peut pas réactiver des jetons révoqués ensuite par la déconnexion ou par « Se déconnecter de tous les appareils » ; les sauvegardes dont le contenu décompressé dépasse 128 Mo ou qui contiennent plus de 256 fichiers sont refusées.
- Divers : l’import de configuration nginx limite la profondeur d’imbrication des blocs (un fichier très imbriqué épuisait la pile et mettait fin au processus) ; les en-têtes Host de plus de 300 octets reçoivent un 400 ; les noms d’utilisateur écrits dans l’enregistrement d’audit et les journaux lors d’une connexion échouée sont tronqués à 64 caractères.
- Dépendances : correctifs de sécurité de la bibliothèque standard de Go 1.26.11 ; mise à jour de golang.org/x/net, klauspost/compress et andybalholm/brotli ; le client SMB des montages de stockage passe à cloudsoda/go-smb2, qui est maintenu (GO-2026-5051).
Comptes et sessions
- Révocation des sessions côté serveur : la déconnexion révoque le jeton, et « Paramètres → Compte et sécurité → Sessions de connexion » propose le nouveau bouton « Se déconnecter de tous les appareils » (
POST /api/account/sessions/revoke), qui met fin d’un coup à toutes les sessions issues d’une connexion par mot de passe, Passkey, fournisseur tiers ou passerelle fnOS. Les jetons d’API ne sont pas affectés. - Restriction des requêtes sortantes (
restrictOutbound, désactivée par défaut) : une fois activée, les requêtes sortantes vers des adresses configurées par l’administrateur (webhooks, notifications, abonnements aux listes d’IP, rappels DDNS, vérification des mises à jour, connexion tierce, etc.) refusent les adresses de bouclage, privées et de lien local (y compris 169.254.169.254). La vérification porte sur l’IP résolue à chaque connexion, ce qui couvre aussi les redirections et le DNS rebinding. Les amonts du proxy inverse, Wake-on-LAN, les montages de stockage et les autres fonctions orientées réseau interne ne sont pas affectés. - Protection contre les requêtes lentes : le port d’administration limite la lecture du corps des requêtes par point d’accès. Les points d’accès ordinaires doivent terminer en 60 secondes ; ceux des gros fichiers (restauration de sauvegarde, paquets de mise à jour, envoi de fichiers) n’ont pas de durée totale limite mais doivent continuer d’envoyer à 4 Kio/s ou plus en moyenne.
Service Web
- Retirer le préfixe de chemin des backends par chemin (#86) : un backend par chemin peut retirer son préfixe avant la transmission grâce à l’option « Retirer le préfixe de chemin à la transmission » ;
/api/zyqd/abcarrive alors au backend sous la forme/abc, précédé du chemin éventuel de l’adresse du backend. Cela correspond auproxy_pass http://backend/;de nginx, et les imports nginx le convertissent automatiquement. - Port source du visiteur (#83) : avec « Ajouter X-Forwarded-* » activé,
X-Real-PortetX-Forwarded-For-Portsont envoyés au backend. Lorsque Gately se trouve derrière un CDN ou un proxy inverse, les paramètres globaux acceptent un « En-tête du port réel ». - Gately à deux niveaux (#81) : lorsque l’instance externe n’exécute que le WAF et que l’instance interne gère la connexion, définissez la même clé de marqueur d’authentification des deux côtés et activez « Faire confiance au marqueur d’authentification du backend » sur le site externe ; les visiteurs authentifiés par l’instance interne contournent alors aussi le WAF externe.
Voir Service Web et WAF.
Sauvegarde et restauration (#85)
La restauration d’une configuration permet maintenant de « Conserver le compte administrateur actuel » : le compte, les jetons d’API et la connexion tierce de l’interface d’administration gardent leurs valeurs actuelles, et la sauvegarde peut omettre account.json, ce qui convient pour reprendre la configuration d’une autre instance. Voir Configuration · Sauvegarde et restauration.
Correctifs
- DDNS (#84) : les enregistrements dynv6 dont le domaine principal est
dynv6.netavec le sous-domainexxxxne provoquent plus d’erreur 404 lors de la synchronisation ni de la suppression de l’enregistrement chez le fournisseur ; la zonexxxx.dynv6.netest détectée automatiquement.
Performances
- La liste de blocage ne reconstruit plus sa liste CIDR à chaque modification quand elle contient beaucoup d’entrées ; le routage des sites ne compare les domaines génériques qu’après l’échec d’une correspondance exacte ; les enregistrements expirés de limitation de débit et d’échecs de connexion sont purgés au plus une fois par seconde.
- L’authentification Basic des sites et WebDAV mettent en cache pendant 10 minutes les vérifications bcrypt réussies, ce qui ramène le coût CPU par requête d’environ 85 ms à quelques microsecondes.
- La redirection de ports réutilise les tampons de copie lorsque splice est inutilisable ; la liste des connexions en direct ne construit que les 500 lignes renvoyées ; le retrait des en-têtes d’origine n’alloue plus de mémoire.
- Les statistiques de sites, l’état et les journaux de Docker et la liste des sessions de terminal de l’interface web cessent leur interrogation tant que l’onglet du navigateur est masqué.
Notes de mise à jour
- Docker : récupérez la nouvelle image et recréez le conteneur ; OpenWrt : installez le nouveau
.apk/.ipkpar-dessus l’ancien ; fnOS : installez le nouveau.fpkdans le Centre d’applications ; les autres installations peuvent se mettre à jour en ligne depuis les Paramètres système. - Les sessions ouvertes restent valides après la mise à jour ; utilisez « Se déconnecter de tous les appareils » lorsque tous les appareils doivent se reconnecter.