CakePHP est un framework libre écrit en PHP reprenant les concepts du projet Ruby on Rails pour produire des applications web. Un advisory a été publié le 14 novembre 2010 par Felix Wilhelm [1] après avoir reporté la vulnérabilité aux développeurs. Celle-ci permet à un attaquant de contrôler les fichiers de cache de l'application, entraînant une exécution de code PHP.
1. Détail de la vulnérabilité
Le module CSRF Security Token présent dans le Security Component a été introduit pour empêcher les attaques de type Cross-site request forgery. Un jeton d'une durée de vie limitée associé à la session du client est ajouté à chaque formulaire généré par CakePHP. Lorsqu'un formulaire est envoyé par un client, le serveur vérifie que le jeton correspond à celui attendu.
La fonction vulnérable validatePost() (cake/libs/controller/components/security.php) est appelée lors de l'envoi d'un formulaire par un utilisateur pour vérifier l'absence de CSRF dans la requête :
function _validatePost(&$controller) {
...
$check = $controller->data;
$token = urldecode($check['_Token']['fields']);
if (strpos($token, ':')) {
list($token, $locked) = explode(':', $token, 2);
}
$locked = unserialize(str_rot13($locked));
...
Le tableau $check...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première