View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
14629 | Bug reports | Security | public | 2019-03-11 17:04 | 2021-03-10 22:46 |
Reporter | pneweb | Assigned To | ollehar | ||
Priority | none | Severity | minor | ||
Status | closed | Resolution | not fixable | ||
Product Version | 3.16.x | ||||
Summary | 14629: 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 : 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. | ||||
Tags | No tags attached. | ||||
Bug heat | 252 | ||||
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 resolved | No | ||||
Browser | n'importe | ||||
Database type & version | mysql 5.5 | ||||
Server OS (if known) | debian | ||||
Webserver software & version (if known) | apache 2.4 | ||||
PHP Version | 5.6 | ||||