View Issue Details

This bug affects 1 person(s).
 252
IDProjectCategoryView StatusLast Update
14629Bug reportsSecuritypublic2021-03-10 22:46
Reporterpneweb Assigned Toollehar  
PrioritynoneSeverityminor 
Status closedResolutionnot fixable 
Product Version3.16.x 
Summary14629: Sécurisation de kcfinder derrière un (des) reverse proxy
Description

Le composant kcfinder utilisé par LS (dans third_party) intègre un dispositif de sécurisation consistant à mémoriser l'adresse IP et le user_agent eb début de session puis à contrôler qu'ils ne varient pas d'une requête à l'autre, ce qui révélerait un vol de session.

Ce dispositif est inopérant lorsque limesurvey est installé derrière un reverse proxy : l'adresse IP prise en compte est celle du reverse proxy donc elle est la même pour toutes les requêtes. Donc un hacker ayant pu usurper la session, et utilisant le même user_agent, est considéré comme utilisateur légitime.

Si au lieu d'un reverse proxy on a une ferme de plusieurs reverse proxy en répartition de charge, on a non seulement un défaut de sécurisation, mais en plus les requêtes provenant de l'utilisateur légitime peuvent être refusées : En effet, le dispositif de sécurisation mémorise alors l'adresse IP du reverse proxy utilisé au premier appel et rejette ensuite toutes les requêtes provenant des autres reverse proxy de la ferme.

Steps To Reproduce

Il suffit d'accéder au module de téléversement de fichier sur une instance LS installée derrière une ferme d'au moins 2 reverse proxy pour constater que le téléversement dysfonctionne de façon apparemment aléatoire : affichage d'un message "Erreur inconnue".

Additional Information

Nous avons résolu ce problème en modifiant le fichier third_party/kcfinder/core/class/uploader.php, ligne 155 :
dans stamp['ip'],
au lieu de mettre systématiquement : $_SERVER['REMOTE_ADDR']
nous mettons ;
isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])) : $_SERVER['REMOTE_ADDR']

Autrement dit, si on est derrière un RP, on ne prend pas l'adresse IP du RP mais celle du client immédiat du RP.

TagsNo tags attached.
Bug heat252
Complete LimeSurvey version number (& build)3.16.0 mais présent depuis au moins la v2.73.0
I will donate to the project if issue is resolvedNo
Browsern'importe
Database type & versionmysql 5.5
Server OS (if known)debian
Webserver software & version (if known)apache 2.4
PHP Version5.6

Users monitoring this issue

There are no users monitoring this issue.

Activities

ollehar

ollehar

2021-03-10 22:46

administrator   ~63216

Please report the bug again but in English. Thank you. :)

Issue History

Date Modified Username Field Change
2019-03-11 17:04 pneweb New Issue
2021-03-10 22:46 ollehar Assigned To => ollehar
2021-03-10 22:46 ollehar Status new => closed
2021-03-10 22:46 ollehar Resolution open => not fixable
2021-03-10 22:46 ollehar Note Added: 63216