Security: RCE
Bonjour,
Merci pour ce plugin et pour le readme.
Tu introduits un fichier (formidable_imagecrop.php) qui permet pour le moment à n’importe qui et sans vérification d’écrire du contenu non contrôlé sur le serveur…
C’est une faille de sécurité tel que codé actuellement.
Il y a plusieurs choses à améliorer donc, pour vérifier les droits du visiteur (fonction autoriser(), pour vérifier que par exemple déjà que le nom du fichier d’origine ne peut pas être altéré, que le contenu correspond écrit correspond à ce qui est attendu)… bref brider drastiquement des possibilités d’injection malveillante.
Tu peux déjà comme pistes :
- créer un fichier d’action (SPIP) comme destination des traitements, avec des autorisations et vérifications dedans (déplacer le fichier formidable_imagecrop.php donc et l’adapter)
- créer un formulaire SPIP CVT pour une partie de ta page qui affiche le formulaire et exécute le javascript, et l’appeler donc avec une balise
#FORMULAIRE_xxx
dont la partie charger() peut déjà vérifier des autorisations du visiteur, - ajouter un token et/ou une action signée sur un des paramètres postés par ton javascript (qui va poster sur le fichier d’action), token à vérifier dans ton action PHP.
De la sorte déjà ça limite une partie des soucis (il faut être identifié et tu vérifies que la personne qui a affiché le formulaire est la même qui poste du contenu, ici l’image croppée).
Après si la personne identifiée est malveillante, c’est un encore un autre souci… d’où s’assurer sur l’autorisation que par exemple c’est un administrateur ou un rédacteur au moins, et pas un simple visiteur), et éventuellement vérifier que le contenu posté est de type image comme attendu.
Il y a peut être certains plugins plus ou moins identiques qui pourraient t’aiguiller…