PluXml 5.8.8 and 5.8.9 releases

P3terP3ter PluXml Project Manager
1 août modifié dans Annonces officielles

🇬🇧 PluXml 5.8.8 is now available ! This release contains eight fixes including two security vulnerabilities in the PluXml administration. Good update!

🇫🇷 PluXml 5.8.8 est disponible ! Cette version contient huit corrections dont deux concernant des failles de sécurités au sein de l'administration de PluXml. Bonne mise à jour !

Changelog

FIX Delete install.php link and redirect fixed for all administration pages #540 (P3ter)
FIX Sitemap lastmod attribute is now set with the modification date #541 (gcyrillus, P3ter)
FIX Filter articles, comments and pages names in plxGlob #383 #545 (bazooka07)
FIX PHP8 __Deprecated: Required parameter $conf follows optional parameter $isHtml #537 (MAPC2012, Francis)
FIX Force some values of $plxMotor->aConf[] to be integer #552 (bazooka07)
FIX Minor fix in PlxMotor function artInfoFromFilename #554 (gcyrillus, bazooka07)
FIX Article thumbnail XSS vulnerability #556 (P3ter, Moritz Huppert)
FIX Static pages PHP injection vulnerability #558 (P3ter, Moritz Huppert)

EDIT 2022/08/01 : une version 5.8.9 a été publiée contenant le retrait de la correction #558 concernant les pages statiques.

RĂ©ponses

  • Bonjour,

    J'ai mis à jour les fichiers par ftp comme d'habitude, mais la page de mise à jour ne s'est pas affichée lors de mon accès suivant au site et la version indiquée dans l'administration est toujours 5.8.7 !?

    Comment faire ?

    Merci.

  • Salut,

    Avec cette mouture, il nettoie les balise php des pages statiques. :'(

    Ce qui pose problème pour l'utilisation de hook ou tout autres idées qui a besoin de php et cela est possible depuis la version 5.2 (au minimum).

    Donc éviter de passer a cette version si vous avez du code php avec certaines de vos pages statiques (ou ne jamais les modifiées avec Pluxml).

    Après avoir bien visionné la vidéo, il rentre ds l'admin pour faire cela, il a donc les identifiants et est en local... what's a hack :o

    Ps: Si nous allons par là, Il y a aussi la modif des fichiers du thème qui permet ça :p

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

  • bazooka07bazooka07 Moderator
    1 août modifié

    @Sudwebdesign,
    Je suis bien d'accord avec toi. et en bon français :
    Quel exploit !!!
    Pour réaliser son forfait,@MoritzHuppert utilise son serveur web local. Pas sûr qu'il puisse renouveler son forfait chez un hébergeur sérieux.
    Il ferait mieux d'apprendre à paramétrer PHP sur son serveur et d'utiliser la directive "disable_functions" dans "php.ini".
    Pour résoudre son problème, modifier php.ini comme suit et redémarrer le serveur :

    disable_functions=fsockopen,proc_open
    

    Mais pour Ă©viter d'autres tracas, il vaut mieux mettre ces valeurs :

    disable_functions=fsockopen,proc_open,system,exec,chroot,shell_exec,proc_open,fsockopen
    

    Le plus gros risque est de trouver ces scripts malicieux dans de jolis thèmes de PluXml en libre téléchargement sur Internet.

    Franchement, @MoritzHuppert ne mérite pas son bounty !

    En modifiant php.ini, on Ă©vite cet Ă©cueil.

    J'ai publié sur Github le contenu d'une page statique qui liste ces fonctions malicieuses de PHP :
    voir le gist sur Github

    Le correctif apporté dans la version 5.8.8 de PluXml est déjà hacké ! Voir.
    Il ne résout rien.

    Si on n'a pas accès à php.ini, il vaut mieux renommer ces fonctions critiques dans le contenu des pages statiques en utilisant les expressions régulières mais cela n'assure aucune protection pour les thèmes.

    Pour voir rapidement les fonction invoquées par la directive disable_functions, créer une page statique avec le contenu suivant pour Pluxml version 5.8.7 et précèdentes :

    <?php
    $disabled = ini_get('disable_functions');
    if($disabled === false) {
            echo '<p>Aucune fonction désactivée</p>' . PHP_EOL;
    } else {
    ?>
    <ul>
    <?php
            foreach(explode(',', $disabled) as $item) {
            $it = trim($item);
    ?>
        <li><a href="https://www.php.net/manual/fr/function.<?= str_replace('_', '-', $it) ?>.php" target="_blank"><?= $it ?></a></li>
    <?php
            }
    </ul>
    }
    ?>
    
  • 1 aoĂ»t modifiĂ©

    Bonjour,

    Pareil que @Sudwebdesign , je ne suis pas du tout convaincu qu'il soit nécessaire de sortir un missile pour écraser un peu probable moustique, et pas tous :astonished: C'est en premier lieu un problème de chaise->clavier qui laisserait quelqu'un se connecter à l'administration. Et puis c'est pas comme ci c'était nouveau dans PluXml, les pages statiques existent depuis la V4 de PluXml (2008-2009) et à priori n'ont jamais servis à ce genre d'exploit. C’était même l'une des évolutions de PluXml des plus séduisantes.

    edit: page statitique présentes depuis la beta4 de pluxml https://pluxml.org/article17/pluxml-blog-beta (10/2008).

    Un filet serait peut-être plus efficace en gérant plus finement les droits des users en dehors de l'administrateur (numero 000) . Avec une option autorisant ou non l'ajout de php dans les pages statiques , ou ne laisser accès à la création/modifications des pages statiques uniquement par l'administrateur (numero 000), idem pour le coup pour l'édition des fichiers php des théme pour bien faire comme le mentionne sudwebdesign.

    Bref, perso je vois cette modif plutôt comme une régression qu'un gain de sécurité.

    Cdt

    edit @bazooka07 zavais pas vu ton post qui me conforte bien dans l'idée que le risque se situe ailleurs que dans le code de PluXml :)

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • P3terP3ter PluXml Project Manager

    Bonjour,

    @chantoine si tu as récupéré la version depuis les tags github, il y avait effectivement un soucis sur le positionnement du tag, c'est corrigé.

    Concernant, le correctif #558 sur les pages statiques, après avoir lu vos messages, j'ai publié une version 5.8.9 contenant uniquement le retrait de ce correctif. Le correctif étant déjà obsolète et pouvant apportant des régressions, j'ai finalement préféré aller dans votre sens et le retirer. Mes excuses pour le désagrément.

  • @P3ter merci pour nous , dĂ©cidĂ©ment j'adore PluXml :)

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • bazooka07bazooka07 Moderator
    1 août modifié

    Cela ne résoud pas le problème pour ceux qui n'ont pas accès à php.ini.

    Voir PR#565
    La nouvelle fonction plxUtils::sanitizePhp remplace par un commentaire l'appel Ă  certaines fonctions critiques dans le contenu d'une page statique :

    • fsockopen
    • proc_open
    • system
    • exec
    • chroot
    • shell_exec
    • socket*

    Si vous voyez d'autres fonctions critiques, n'hésitez pas à le faire remarquer.

  • Salut! Merci d'avoir mis Ă  jour ce superbe cms) TrouvĂ© un bug... J'utilise PluXml (5.8.9) sur php 8.1 donc, quand la prĂ©moditation des commentaires est activĂ©e, ils n'atteignent pas le panneau d'administration. Lorsque la modĂ©ration est dĂ©sactivĂ©e, les commentaires sont publiĂ©s...

  • bazooka07bazooka07 Moderator

    Bonjour,
    Effectivement, il y a un bug quand la modération des commentaires est activée.

    dans core/lib/class.plx.glob.php, il faut modifier le tableau plxGlob::PATTERNS pour la clé 'commentaires' comme ci-dessous :

        const PATTERNS = array(
            'arts'          => '#^\D?(\d{4,})\.(?:\w+|\d{3})(?:,\w+|,\d{3})*\.\d{3}\.\d{12}\..*\.xml$#',
            'statiques'     => '#^(\d{3,})\..*\.php$#',
            'commentaires'  => '#^_?\d{4,}\.(?:\d{10,})(?:-\d+)?\.xml$#'
        );
    

    J'ai publié un pull request (PR) pour corriger cela avec diverses optimisations.

    Voir PR #571

  • Merci, bazooka07. Maintenant tout fonctionne)

  • bazooka07bazooka07 Moderator

    Bonjour,
    Sous Linux, la ligne de commande suivante :

    grep PHP_VERSION *.php update/*.php core/{admin,lib}/*.php
    

    donne le résultat suivant :

    jpierre@beelink-1:/var/www/test/PluXml-5.8.9$ grep PHP_VERSION *.php update/*.php core/{admin,lib}/*.php
    install.php:if(version_compare(PHP_VERSION, '5.0.0', '<')){
    install.php:    echo utf8_decode(L_WRONG_PHP_VERSION);
    install.php:                        <li><?php echo L_INFO_PHP_VERSION.' : '.phpversion() ?></li>
    update/index.php:if(version_compare(PHP_VERSION, '5.0.0', '<')){
    update/index.php:   echo utf8_decode(L_WRONG_PHP_VERSION);
    core/admin/parametres_infos.php:    <li><?php echo L_INFO_PHP_VERSION; ?> : <?php echo phpversion(); ?></li>
    core/lib/class.plx.utils.php:           version_compare(PHP_VERSION, '7.2', '>=') ?
    

    Les versions de PHP testées dans "install.php", "update/index.php" et "core/lib/class.plx.utils.php" ne sont pas cohérentes.
    Il faut définir une constante "PHP_VERSION_MIN" comme dans la version 6.0 de PluXml et faire les tests de version de PHP par rapport à elle.

    D'autre part, on utilise l'opérateur "??" uniquement dans "core/admin/article.php".
    Cet opérateur n'existe que depuis PHP 7.0.0. Donc exit les installations chez Free.fr.

Connectez-vous ou Inscrivez-vous pour répondre.