faille sécurité ? balise meta+refresh dans un champ d'article
#3371
Closed
opened 8 years ago by miros
·
16 comments
No Branch/Tag Specified
1.8
1.9.1
1.9.2
2.0
2.1
3.0
3.1
3.2
4.0
4.1
4.2
boutons-danger
coquille_doc
debug_ecrire_fichier
dev-sortable
dev/autoloader
dev/hasard_fixe
dev/instituer_ergo
dev/issue_4626_menu_squelettes
dev/issue_5447_exporter_csv
dev_infos_image
fix/valider_url_distante
fix_issue_5454
fix_modifier_login
issue_4101
issue_4678
issue_4705
issue_4717
issue_4836
issue_4946
issue_5258
issue_5344
issue_5427_bis
issue_5483_find_script_jquery
issue_5487_info_maj
master
v1.8.3+b
v1.9.1+i
v1.9.2+f
v1.9.2+g
v1.9.2+h
v1.9.2+i
v1.9.2+j
v1.9.2+k
v1.9.2+m
v1.9.2+n
v1.9.2+o
v1.9.2+p
v2.0.0
v2.0.1
v2.0.10
v2.0.11
v2.0.12
v2.0.13
v2.0.14
v2.0.15
v2.0.16
v2.0.17
v2.0.18
v2.0.19
v2.0.2
v2.0.20
v2.0.21
v2.0.22
v2.0.23
v2.0.24
v2.0.25
v2.0.26
v2.0.3
v2.0.5
v2.0.6
v2.0.7
v2.0.8
v2.0.9
v2.1.0
v2.1.1
v2.1.10
v2.1.11
v2.1.12
v2.1.13
v2.1.14
v2.1.15
v2.1.16
v2.1.17
v2.1.18
v2.1.19
v2.1.2
v2.1.20
v2.1.21
v2.1.22
v2.1.23
v2.1.24
v2.1.25
v2.1.26
v2.1.27
v2.1.28
v2.1.29
v2.1.3
v2.1.30
v2.1.4
v2.1.5
v2.1.6
v2.1.7
v2.1.8
v2.1.9
v3.0.0
v3.0.0-alpha.1
v3.0.0-beta
v3.0.0-beta.2
v3.0.0-rc
v3.0.1
v3.0.10
v3.0.11
v3.0.12
v3.0.13
v3.0.14
v3.0.15
v3.0.16
v3.0.17
v3.0.18
v3.0.19
v3.0.2
v3.0.20
v3.0.21
v3.0.22
v3.0.23
v3.0.24
v3.0.25
v3.0.26
v3.0.27
v3.0.28
v3.0.3
v3.0.4
v3.0.5
v3.0.6
v3.0.7
v3.0.8
v3.0.9
v3.1.0
v3.1.0-alpha
v3.1.0-beta
v3.1.0-rc
v3.1.0-rc.2
v3.1.0-rc.3
v3.1.1
v3.1.10
v3.1.11
v3.1.12
v3.1.13
v3.1.14
v3.1.15
v3.1.2
v3.1.3
v3.1.4
v3.1.5
v3.1.6
v3.1.7
v3.1.8
v3.1.9
v3.2-alpha.1
v3.2.0
v3.2.0-alpha.1
v3.2.0-beta
v3.2.0-beta.2
v3.2.0-beta.3
v3.2.1
v3.2.10
v3.2.11
v3.2.12
v3.2.13
v3.2.14
v3.2.15
v3.2.16
v3.2.17
v3.2.2
v3.2.3
v3.2.4
v3.2.5
v3.2.6
v3.2.7
v3.2.8
v3.2.9
v4.0.0
v4.0.0-alpha
v4.0.0-beta
v4.0.1
v4.0.2
v4.0.3
v4.0.4
v4.0.5
v4.0.6
v4.0.7
v4.0.8
v4.0.9
v4.1.0
v4.1.0-alpha
v4.1.0-beta
v4.1.0-rc
v4.1.1
v4.1.2
v4.1.3
v4.1.4
v4.1.5
v4.1.6
v4.1.7
v4.2.0-alpha
v4.2.0-alpha2
Labels
Amélioration, nouvelle fonctionnalité APIs authentification base de données bug
Ca ne fonctionne pas code généré compilo css divers documentation doublon
Ce ticket est un doublon ergonomie espace privé filtres et balises formulaires Inscription installation invalide
Ticket invalide javascript langues LDAP plugin PostgreSQL refusé
Ignoré, c'est comme Ca... sécurité traduction
Apply labels
Clear labels
accessibilité
amélioration
Amélioration, nouvelle fonctionnalité APIs authentification base de données bug
Ca ne fonctionne pas code généré compilo css divers documentation doublon
Ce ticket est un doublon ergonomie espace privé filtres et balises formulaires Inscription installation invalide
Ticket invalide javascript langues LDAP plugin PostgreSQL refusé
Ignoré, c'est comme Ca... sécurité traduction
No Label
accessibilité
amélioration
APIs
authentification
base de données
bug
code généré
compilo
css
divers
documentation
doublon
ergonomie
espace privé
filtres et balises
formulaires
Inscription
installation
invalide
javascript
langues
LDAP
plugin
PostgreSQL
refusé
sécurité
traduction
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
7 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
This issue currently doesn't have any dependencies.
Reference in new issue
There is no content yet.
Delete Branch '%!s(MISSING)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
Suite à un piratage sur une version 3.0.5, je me suis aperçu que Spip interprétait les balises html meta qu'on mettait dans divers champs avec une redirection :
J'ai testé sur une 3.0.17 et ça le faisait aussi.
On peut notamment mettre ça en titre d'articles et dès que c'est listé dans un catégorie ou autre, ça redirige la page, y compris dans la zone privée.
On peut neutraliser l'effet en bloquant la redirection avec le navigateur (option de Firefox) pour corriger mais tout ça me semble extrêmement dangereux.
Pour moi le problème de sécu vient du piratage qui a eu lieu, pas de ce que le pirate a fait une fois dans la place... Essentiellement il est passé admin, et les admins gardent le droit de faire des choses intéressantes dans leur site.
Statut changé à Fermé
Fil Up a écrit :
Oui mais non : j'ai testé sur une 3.0.17 à jour, pas piraté, et a priori, n'importe quel rédacteur peut faire ça.
J'ai même testé sur forum.spip.net et ça a l'air de le faire aussi fait : mettez en titre, et voyons si les utilisateurs sont contents quand ils sont renvoyés vers une page piégé à chaque fois que l'article est listé.
Si vous pouvez, essayez de voir cet article, proof of concept : http://forum.spip.net/ecrire/?exec=article&id_article=3140
ah oui de ce point de vue ; il faudrait le bloquer dans l'espace privé pour les articles non validés, comme les attributs js des tags img ?
Version cible mise à 3.1
Statut changé à En cours
Bonjour
En fait il y a un principe de base qui fait que si un rédacteur a le
droit d'écrire alors il a le droit d'écrire ce qu'il veut. Ainsi il
n'y pas de contrôle pour le bien du rédacteur.
En l'état ce serait plus le rôle d'un plugin de faire ces contrôles,
par défaut SPIP fait confiance.
Qu'une personne non autorisée ait pu rédiger du texte (quel qu’il soit
en pratique) est par contre un vrai problème.
Sauf que le fait d'autoriser l'inscription ouverte est une fonctionnalité de la distribution par défaut, ce n'est pas un plugin. Donc la protection dans le cas où l'inscription est ouverte devrait aussi se trouver par défaut, pas en plugin. Ça doit aller ensemble.
Ciao
Par défaut SPIP fait confiance. Donc l'un et l'autre semblent logiques ainsi. Après est ce qu'on est d'accord ou pas, c'est un débat complémentaire.
RastaPopoulos ♥ a écrit :
D'autant plus qu'on se demande bien qui ferait cet usage si ce n'est dans une intention malveillante.
HS : pour info, wp "fait aussi confiance", le bug est aussi présent chez eux sur une 4.2.1.
J'ai souvenir qu'on a le même problème avec l'exécution de tags js dans le titre des articles. En suivant le conseil de Fil, on pourrait bloquer l'usage des tags meta et script dans les titres des éléments pour les rédacteurs ?
Maj de la liste des tags à exclure : meta, script, iframe.
Est-ce qu'une solution intermédiaire plus acceptable serait de n'accepter que les tags sans attribut ou une whitelist d'attributs (je pense notamment à lang pour permettre de mettre un
<span lang='en'>
) dans les titre pour les securiser ? Cela eviterait les cas des javascript sur les hover, onclick, onload ou autre.Cette sanitization active par défaut serait désactivable pour compatibilité avec les anciens sites qui feraient usage de html plus compliqué dans les titre.
Puisque la 3.1 affiche surtitre et sous titre dans les listes, il faut maintenant sanitizer ces 2 champs également
Bonne idée pour le blocage des attributs non référencés dans une liste blanche. Mais je pense qu'on peut aussi bloquer les balises meta, script et iframe qui amha n'ont rien à faire dans un des champs de titrage.
Statut changé à Fermé
Super, merci cedric :)
r23701 https://zone.spip.org/trac/spip-zone/changeset/106234 et r23703 complètent la sécurisation sur les champs texte des objets éditoriaux (tout ce qui passe dans propre()) et sur le champ PGP de l'auteur
Todobien :)