plantage de spip si ReflectionMethod ou ReflectionFunction est déactivé par l'admin (mode parano) #3287

Closed
opened 8 years ago by gilles.vincent · 4 comments
Owner

Afin d'éviter un plantage survenu dans mon cas après la 3.0.17, voici un petit patch de sandbox.php
(qui revert plus ou moins http://core.spip.org/projects/spip/repository/revisions/21378)
J'ai essayé de l'optimiser du mieux que j'ai pu.
En tout cas ça marche chez moi

Afin d'éviter un plantage survenu dans mon cas après la 3.0.17, voici un petit patch de sandbox.php (qui revert plus ou moins http://core.spip.org/projects/spip/repository/revisions/21378) J'ai essayé de l'optimiser du mieux que j'ai pu. En tout cas ça marche chez moi
Owner

ton patch à un problème, il est vide.

ton patch à un problème, il est vide.
Poster
Owner

Un problème du Mac sans doute (il ne l'ouvre pas non plus, à cause de l'extension).
Le revoici

Un problème du Mac sans doute (il ne l'ouvre pas non plus, à cause de l'extension). Le revoici
Owner

Question : si on commence a tester la disponibilité de toutes les fonctions PHP, où s'arrête-t-on ? En particulier il faudrait commencer par traiter le cas des exec() qui ont bien evidemment beaucoup plus de chance d'etre desactivés.
En quoi les 2 fonctions concernées peuvent etre dangereuses ? Que se passe-t-il si ini_get est lui même désactivé puisqu'on est parano ?
Que fait-on si c'est suhosin.executor.func.blacklist qui est utilisé ?

Par ailleurs, le fichier sandbox.php regroupe justement tout ce qui est possiblement dangeureux à la compilation de squelette (ie tout se qui permet d'injecter du PHP et donc d'appeler les fonctions qu'on veut), et est donc conçu pour etre surchargé si on veut être veritablement parano.
Dans ce cas, il serait judicieux de tester que les filtres qu'on injecte dans les squelettes sont eux-meme bien autorisés (aka eviter de generer un truc comme [(#VAL{rm -fR}|exec)] si exec est interdit).

D'un point de vue technique, il vaut mieux utiliser une variable static dans ta fonction que de definir des constantes.

Version cible mise à 3.1

Question : si on commence a tester la disponibilité de toutes les fonctions PHP, où s'arrête-t-on ? En particulier il faudrait commencer par traiter le cas des `exec()` qui ont bien evidemment beaucoup plus de chance d'etre desactivés. En quoi les 2 fonctions concernées peuvent etre dangereuses ? Que se passe-t-il si `ini_get` est lui même désactivé puisqu'on est parano ? Que fait-on si c'est `suhosin.executor.func.blacklist` qui est utilisé ? Par ailleurs, le fichier sandbox.php regroupe justement tout ce qui est possiblement dangeureux à la compilation de squelette (ie tout se qui permet d'injecter du PHP et donc d'appeler les fonctions qu'on veut), et est donc conçu pour etre surchargé si on veut être veritablement parano. Dans ce cas, il serait judicieux de tester que les filtres qu'on injecte dans les squelettes sont eux-meme bien autorisés (aka eviter de generer un truc comme `[(#VAL{rm -fR}|exec)]` si exec est interdit). D'un point de vue technique, il vaut mieux utiliser une variable static dans ta fonction que de definir des constantes. **Version cible mise à 3.1**
Poster
Owner

Effectivement ce ticket est lié à une mauvaise configuration de l'hébergement - et n'est pas lié à SPIP
Statut changé à Fermé

Effectivement ce ticket est lié à une mauvaise configuration de l'hébergement - et n'est pas lié à SPIP **Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.