ACCUEIL >>  Technologies et Territoires >>  Laboratoire du libre >>  SPIP >>  Bouts de codes et développements

 

Faille de sécurité sous SPIP

vendredi 23 juillet 2004 , par wilfried

 

Un message que j’ai aussi posté dans le forum de spip.net.

C’est en ayant voulu recouvrer mes identifiants de connexion à un site SPIP lors d’une journée de formation, que je suis tombé sur cette importante faille (sans vraiment le vouloir).

Un bug qui pourrait permettre à une personne administrateur restreint (et mal intentionnée) de prendre le controle d’un SPIP facilement (à la portée de tout le monde) :

Il suffit pour cela de posséder un compte "administrateur de rubriques" avec son mot de passe [1]

Je ne vais pas ici vous détailler la manipulation, mais disons que cette faille est dû au simple fait qu’il possible pour un administrateur restreint de modifier l’adresse email des autres utilisateurs, dont le super administrateur ... Vous vous doutez de la suite ? Si vraiment vous êtes curieux, allez sur ce forum en question pour les détails.

Bref, je vous encourage vivement à vous informer sur les moyens de se protéger de cela.

@bientôt.




[1] le simple rédacteur n’est pas concerné.



Répondre à cet article





> UNE AUTRE SOLUTION

27 février 2005, par utilisateur de la liste rézo

Le 27 février 2005

Bonjour,

Suite à un post sur spip@rezo.net, au sujet de cette faille de sécurité, des échanges fructueux ont permis de dégager une solution simple et efficace.

En ajoutant simplement : "OR !$connect_toutes_rubriques", on peut désormais, en tant qu’administrateur restreint,
- modifier sa fiche auteur,
- avoir accès aux fiches auteurs
- ne plus avoir accès aux informations perso modifiable des autres.
- on conserve la fonction "oubli de mot de passe" qui permet à chacun de récupérer le mot de passe.
- on ajout un tout petit bout de code

A FAIRE : DANS LE FICHIER AUTEURS _INFO.PHP3 qui se trouve dans le dossier écrire Voici ce qui change : Rendez vous à la ligne 65 //sécurité, ajouter "OR !$connect_toutes_rubriques" entre : if ($connect_statut != "0minirezo" (mettre ici) AND $connect_id_auteur != $id_auteur)

Voici donc le code "corrigé".

// securite

if ($connect_statut != "0minirezo" OR !$connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) gros_titre(_T(’info_acces_interdit’)) ; exit ;

Voila, on empêche désormais les admins restreint d’avoir accès aux informations personnelles modifiables, ce qui pouvait effectivement occasionner de sérieux problèmes.

La validation d’un connaisseur en php serait un plus.

Florence

    > UNE AUTRE SOLUTION
    21 mars 2005, par Eliane

    Je pense qu’il faudrait plutôt utiliser :

    if (($connect_statut != "0minirezo" OR !$connect_toutes_rubriques) AND $connect_id_auteur != $id_auteur) gros_titre(_T(’info_acces_interdit’)) ; exit ;

    sinon, les rédacteurs n’ont plus du tout accès à leurs infos personnelles et ne peuvent plus changer leur mot de passe par exemple.



 

> Faille de sécurité sous SPIP

23 juillet 2004, par Patrick VINCENT

Merci Wilfried pour cet avertissement judidiceux.

Nous avons temporairement désactivé la fonction d’envoi de mail du mot de passe oublié en attendant de résoudre plus en finesse cette faille de sécurité.

[root@www SPIP]# diff  spip_pass.php3.orig spip_pass.php3
68,71c68,71
<                               if (envoyer_mail($email, "[$nom_site_spip] "._T('pass_oubli_mot'), $message))
<                                       $erreur = _T('pass_recevoir_mail');
<                               else
<                                       $erreur = _T('pass_erreur_probleme_technique');
---
> ##                            if (envoyer_mail($email, "[$nom_site_spip] "._T('pass_oubli_mot'), $message))
> ##                                    $erreur = _T('pass_recevoir_mail');
> ##                            else
> ##                                    $erreur = _T('pass_erreur_probleme_technique');
[root@www SPIP]#

 



Recherche par mots clés