Archives de la liste a​i​d​e​@p​a​h​e​k​o​.c​l​o​u​d​

Re: Bug Garradin : Problème SSL only derrière un Reverse Proxy

BohwaZ/Garradin

21/03/2018 10:40:52

Hello,

c'est à toi de voir pour que PHP ait bien $_SERVER['HTTPS'] de rempli
correctement, ce que tu me signale n'est qu'un bug dans ta
configuration.

Garradin ne peut pas prendre en compte des entêtes HTTP supplémentaires
tel que X-Forwarded-Protocol comme tu le dis car ces entêtes peuvent
être forgés facilement par un attaquant pour induire en erreur et faire
croire à une victime qu'elle utilise une connexion sécurisée alors que
ce n'est pas le cas. La seule valeur sécurisée indiquée par PHP,
c'est dans $_SERVER['HTTPS']. Si cette valeur n'est pas correcte à
cause d'une configuration spécifique c'est à toi de corriger ce
comportement.

Une solution simple serait simplement dans ton cas de mettre ceci dans
ton fichier config.local.php :

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
    && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
{
	$_SERVER['HTTPS'] = true;
}

Mais ceci uniquement si tu es sûr que ton reverse proxy supprime cet
entête s'il a été envoyé par le client, dans le cas contraire ça serait
une faille de sécurité.

Cordialement.

On Wed, 21 Mar 2018 10:05:56 +0100 / Jérôme AVOND
<jerome.avond@alolise.org> said :

> Bonjour,
> 
>   * L'adresse de la page sur laquelle le bug est survenu (vous pouvez
>     supprimer le domaine de l'adresse pour préserver vos informations
>     personnelles)
>       o Page de login d'administration
>           + Indication d'une connexion non sécurisée, alors que le
>             Reverse Proxy devant garradin est en TLS-only termination
>           + Le RP envoie les Headers suivants :
> 
>             |X-Forwarded-Protocol: https X-Forwarded-Ssl: on
>             X-Url-Scheme: https|
> 
>   * Les dernières lignes du fichier error.log situé à la racine de
> votre installation de Garradin
>       o RAS
>   * La version de PHP et des modules utilisés (consultable dans la
> page "Configuration" de Garradin)
>       o Version installée
>             0.8.2 [release]
>         Informations système
>             Version PHP : 7.0.27-0+deb9u1
>             Version SQLite : 3.16.2
>             Heure du serveur : 21/03/2018 09:55:28
>             Chiffrement GnuPG : non, module PHP gnupg non installé ?
>   * Le message d'erreur (s'il apparaît à l'écran)
>       o Connexion non sécurisé : passez à HTTPS
>   * Le parcours réalisé pour arriver au message d'erreur (quel bouton
> a été cliqué sur quelle page par exemple)
>       o Connexion sur Administration
> 
> PS : J'ai corrigé notre version en modifiant le fichier
> /var/www/garradin/www/admin/login.php ligne 49
> 
> < $tpl->assign('ssl_enabled', empty($_SERVER['HTTPS']) ?
false :
> true);
> 
> > $tpl->assign('ssl_enabled', empty($_SERVER['HTTPS']) ?
true : true);
> 
> Assurant ainsi que le site serait toujours convaincu d'être derrière
> une connexion sécurisée,
> 
> Il est de plus en plus courant de mettre des applications derrière un
> reverse proxy, ceci permet d'assurer plusieurs choses :
> 
>   * Sécurité :
>       o Authentification spéciale
>       o Web guard
>       o Centralisation de la mise en TLS
>   * Exploitation :
>       o Mise à jour via clone, puis remplacement
>       o Version non production
>   * Confinement :
>       o Pas d'accès web
> 
> Et j'en oublie forcément, les avantages sont multiples, il serait
> intéressant que Garradin prenne en charge les headers indiqués.
> 
> 
> En vous remerciant pour votre attention,
> 
> Cordialement,
>

Re: Re: Bug Garradin : Problème SSL only derrière un Reverse Proxy

Bruno CAILLARD

21/03/2018 11:54:20

Pourriez-vous me sortir de la liste de diffusion ?

MERCI


Cordialement
Bruno

Le 21 mars 2018 à 10:40, BohwaZ/Garradin <garradin@garradin.eu> a écrit :

>
> Hello,
>
> c'est à toi de voir pour que PHP ait bien $_SERVER['HTTPS'] de
rempli
> correctement, ce que tu me signale n'est qu'un bug dans ta
> configuration.
>
> Garradin ne peut pas prendre en compte des entêtes HTTP supplémentaires
> tel que X-Forwarded-Protocol comme tu le dis car ces entêtes peuvent
> être forgés facilement par un attaquant pour induire en erreur et faire
> croire à une victime qu'elle utilise une connexion sécurisée alors que
> ce n'est pas le cas. La seule valeur sécurisée indiquée par PHP,
> c'est dans $_SERVER['HTTPS']. Si cette valeur n'est pas
correcte à
> cause d'une configuration spécifique c'est à toi de corriger ce
> comportement.
>
> Une solution simple serait simplement dans ton cas de mettre ceci dans
> ton fichier config.local.php :
>
> if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
>     && $_SERVER['HTTP_X_FORWARDED_PROTO'] ==
'https')
> {
>         $_SERVER['HTTPS'] = true;
> }
>
> Mais ceci uniquement si tu es sûr que ton reverse proxy supprime cet
> entête s'il a été envoyé par le client, dans le cas contraire ça
serait
> une faille de sécurité.
>
> Cordialement.
>
> On Wed, 21 Mar 2018 10:05:56 +0100 / Jérôme AVOND
> <jerome.avond@alolise.org> said :
>
> > Bonjour,
> >
> >   * L'adresse de la page sur laquelle le bug est survenu (vous
pouvez
> >     supprimer le domaine de l'adresse pour préserver vos
informations
> >     personnelles)
> >       o Page de login d'administration
> >           + Indication d'une connexion non sécurisée, alors que le
> >             Reverse Proxy devant garradin est en TLS-only termination
> >           + Le RP envoie les Headers suivants :
> >
> >             |X-Forwarded-Protocol: https X-Forwarded-Ssl: on
> >             X-Url-Scheme: https|
> >
> >   * Les dernières lignes du fichier error.log situé à la racine de
> > votre installation de Garradin
> >       o RAS
> >   * La version de PHP et des modules utilisés (consultable dans la
> > page "Configuration" de Garradin)
> >       o Version installée
> >             0.8.2 [release]
> >         Informations système
> >             Version PHP : 7.0.27-0+deb9u1
> >             Version SQLite : 3.16.2
> >             Heure du serveur : 21/03/2018 09:55:28
> >             Chiffrement GnuPG : non, module PHP gnupg non installé ?
> >   * Le message d'erreur (s'il apparaît à l'écran)
> >       o Connexion non sécurisé : passez à HTTPS
> >   * Le parcours réalisé pour arriver au message d'erreur (quel
bouton
> > a été cliqué sur quelle page par exemple)
> >       o Connexion sur Administration
> >
> > PS : J'ai corrigé notre version en modifiant le fichier
> > /var/www/garradin/www/admin/login.php ligne 49
> >
> > < $tpl->assign('ssl_enabled',
empty($_SERVER['HTTPS']) ? false :
> > true);
> >
> > > $tpl->assign('ssl_enabled',
empty($_SERVER['HTTPS']) ? true : true);
> >
> > Assurant ainsi que le site serait toujours convaincu d'être
derrière
> > une connexion sécurisée,
> >
> > Il est de plus en plus courant de mettre des applications derrière un
> > reverse proxy, ceci permet d'assurer plusieurs choses :
> >
> >   * Sécurité :
> >       o Authentification spéciale
> >       o Web guard
> >       o Centralisation de la mise en TLS
> >   * Exploitation :
> >       o Mise à jour via clone, puis remplacement
> >       o Version non production
> >   * Confinement :
> >       o Pas d'accès web
> >
> > Et j'en oublie forcément, les avantages sont multiples, il serait
> > intéressant que Garradin prenne en charge les headers indiqués.
> >
> >
> > En vous remerciant pour votre attention,
> >
> > Cordialement,
> >
>
> --
> . ____
>  / ___|  Liste d'entraide des utilisateurs de Garradin
> | |  _   http://garradin.eu/
> | |_| |
>  \____|  Désinscription : http://garradin.eu/aide/
>