Cette version corrige de nombreuses failles de type pré-authentification RCE, élévation de privilèges, XSS, injection SQLite, upload HTML anonyme, reconstruction du secret du site.
Ces failles ne sont pas prises en charge par l’écran de sécurité.
Autre information importante, des failles critiques ont aussi été corrigées dans les plugins Crayons et Simplog, voir notre article à ce sujet.
La version 4.4.27 apporte les améliorations ou corrections de bugs suivantes :
- Interdire l’affichage direct des squelettes
formulaires/même pour les webmestres - Réinitialiser les vieux mots de passe en md5 des rédacteurs et des administrateurs
- Masquer les valeurs sensibles dans les logs et le debug
- Débuggueur : échapper la requête affichée dans le
<pre> - Échappement des attributs dans le debuggueur
- Redirige_formulaire est moins laxiste avec la mise en forme des urls
- Ne jamais utiliser
redirige_par_entete()dans une action -
|balise_svgfait appel au sanitizer svg avant tout affichage - La
copie_locale()abandonne si la sanitization du fichier échoue - Support des svg avec une balise
<SVGen majuscule - Vérifications de légitimité sur les copie locale d’URL de documents restreints
- On stocke en cache meta une version moins prédictible des meta sensible
- Refuser les fichier de spip_documents avec ’..’
- Traduction sqlite de
TIMESTAMPDIFFplus rigoureuse - Une regexp plus restrictive sur la traduction de INTERVAL dans une expression DATE_ADD ou DATE_SUB
- Ne pas stocker les valeurs sensibles dans la globale meta
- Un admin ne peut pas se dégrader, ie toucher aucun des champs statut, webmestre, restreintes qui le concernent
- La fonction
autoriser_auteur_modifier()attends un champ ’restreintes’ et pas ’restreint’ - Quand on mets à jour les sessions d’un auteur après modification, repartir de la base, pas des valeurs envoyées
- On n’accepte plus de contexte explicite signé venant de l’extérieur (contextes systématiquement en cache)
- Les autorisations génériques pour un type doivent contenir le suffixe
_fairepour éviter tout risque de collision avec une autorisation générique - Sanitizer titre et sinon en ajax comme dans body
- Demander le mot de passe du webmestre qui modifie des champs importants
- Indiquer un contexte public ’forum’ sur les traitements des champs des forum
- Utiliser des preg pour nettoyer les form c’est plus robuste
- Utiliser
attribut_urletattribut_htmlpartout où c’est nécessaire - Vérifier l’URL fournie dans
url_site - 2 coquilles sur le calcul de la prévisu (on prenait nom_site pour url_site)
- Vérifier l’autorisation de joindre un document dans
ajouter_documents() - Le filtre |contenu_document n’accepte pas les documents distant quand appelé avec un id_document
- Quand
sanitizer_document()renvoiefalse, on abandonne l’ajout de document - Définir un contexte public dans le calcul de la prévisu si appelée depuis le public
- sanitizer_svg_dist() traite correctement les cas fichier et chaîne svg en entrée
- Le sanitizer SVG supprime le PHP dans tous les cas
- Sanitizer les html lors de l’upload de document
- Ajout d’un sanitizer html pour l’upload de document
- Validation plus stricte des referers à la journalisation, à l’agrégation et à l’affichage ; purger les lignes déjà stockées
- Ne pas faire circuler en clair des valeurs techniques
- Le traitement des notes ne nécessite pas
propre - Il faut aussi appliquer
echappe_anti_xsssur les balises SVG également - Fonctions helper pour déclarer les traitements raccourcis et typo avec ou sans contexte de modèles
- Le traitement des modèles peut rendre inerte des modèles directement
- Permettre de transmettre des options à
propreettypo, transmises àtraiter_modeles() - Option interdire_script à
propre()ettypo() - Un collecteur de QuotedStrings pour collecter les chaînes entre simple ou double quotes
- Les contextes ajax sont stockés sur le disque
- Les autorisations génériques pour un type doivent contenir le suffixe
_fairepour éviter tout risque de collision avec une autorisation générique - Tester le retour de
get_spip_doc()avant de l’utiliser - En mysql & sqlite échouer sans requêter si les chaînes de la requête n’ont pu être échappées correctement
- S’assurer que l’on traite bien l’unité en majuscules dans
_sqlite_timestampdiff - Collecteur quand il manque une balise fermante
- Chaîne de langue pour le formulaire
editer_auteur - Erreur sur minipage
- Erreur sur produire_page sur squelette introuvable
- Collecteur QuotedStrings : en contexte Sqlite
'\'est une chaine bien formée (les guillemets sont échappés par un''et pas un\') - Ne pas perdre la case décochée quand on décoche un webmestre et qu’il y a une erreur
- Refuser les logins de plus de 256 caractères
- Tester le retour de
get_spip_doc()avant utilisation - Il faut passer
$nom_champen majuscules pour trouver le traitement - Empêcher
extraire_attributd’envoyernullàstrlen - Fonctions
stats_nettoyer_referer(),stats_valider_referer() - Accepter les referer commençant par ’Referer : ’ c’est un cas usuel...
- Fonctions
traiter_raccourcis_fin()etpropre_fin()
Mettre à jour en utilisant le spip_loader
Vous pouvez aussi mettre à jour au moyen de la dernière version de spip_loader (version 8.0.5).
spip_loader est distribué à l’adresse suivante : https://get.spip.net/
Le fichier spip_loader.php est un script compilé dans le format binaire
phar.
Si vous avez besoin de personnaliser l’installation en définissant des constantes, il vous faut créer un fichier de configuration spip_loader_config.php (cf https://www.spip.net/fr_article5705.html).
Résumé des versions de SPIP
| Branche | Version | Suivi | Compatibilité PHP |
|---|---|---|---|
| SPIP 4.4 | 4.4.27 | Maintenance active | PHP 7.4 à PHP 8.5 |
Pour connaître le détail des versions maintenues :
https://www.spip.net/fr_article6500.html
Comment être tenu au courant de ces annonces ?
C’est simple, inscrivez-vous sur la mailing liste https://discuter.spip.net/c/spip-ann/13
Bien sûr, les réseaux sociaux sont de la partie :
- Seenthis : https://seenthis.net/people/spip
- Facebook : https://www.facebook.com/spip.net
- Mamot : https://mamot.fr/@spip
Une question, besoin d’aide ?
En cas de problème ou de difficultés, il y aura certainement quelqu’un pour vous aider sur IRC, n’hésitez pas à venir poser vos questions https://irc.spip.net ou sur notre serveur Discord.
Vous pouvez aussi poster un message et échanger sur :
- La liste des utilisateurs et utilisatrices https://discuter.spip.net/c/spip/6
- La liste du développement spip-dev https://discuter.spip.net/c/spip-dev/5
Nous vous rappelons que pour signaler une faille, il suffit d’envoyer un mail à securite@spip.net.
SPIP Blog
Mise à jour critique de sécurité : sortie de SPIP 4.4.27
Messages
6 octobre, 16:01
pffuiou, autant de mercis que de modifications effectuées !
poutous à toustes
6 octobre, 17:30, par Stéphanie
J’ai une erreur suite au passage de la mise à jour :
Erreur d’exécution ../prive/squelettes/inclure/barre-nav.html | File […]/plugins-dist/safehtml/inc/safehtml.php Line 116 : Call to undefined function sanitizer_svg_string()
Erreur d’exécution ../prive/squelettes/inclure/pied.html | File […]/plugins-dist/safehtml/inc/safehtml.php Line 116 : Call to undefined function sanitizer_svg_string()
6 octobre, 17:32, par Marcimat
Merci @stéphanie, le problème est signalé aussi là https://discuter.spip.net/t/spip-4-4-27-erreur-sanitizer-svg-string/204449, une proposition de patch là https://git.spip.net/spip/safehtml/-/merge_requests/4821 mais a priori insuffisante…
6 octobre, 17:51, par Benitron
Vous gérez tellement !
MERCI