Description
Rails convertit automatiquement les paramètres d’une requête en structures Ruby. Lorsque la requête est envoyée en XML, le code de conversion de types acceptait aussi des symboles et des documents YAML. Or désérialiser du YAML fourni par l’utilisateur revient à le laisser instancier des objets Ruby arbitraires.
Un attaquant pouvait donc envoyer une requête XML contenant un objet YAML encodé et, selon l’application, exécuter du code sur le serveur, injecter du SQL, contourner l’authentification ou provoquer un déni de service. L’équipe Rails a qualifié la faille d’« extrêmement critique » et publié des correctifs pour toutes les branches maintenues.
Pourquoi elle reste d’actualité
Cette faille est devenue un cas d’école de la désérialisation non sûre. Elle rappelle que les applications « historiques », jamais migrées, restent exposées des années après la publication du correctif — un scénario fréquent dans les audits de SI vieillissants.
Ce que nous recommandons
- Inventorier les applications Rails et leur version exacte, y compris les outils internes.
- Planifier la migration des applications sur des branches Rails non maintenues.
- Ne jamais désérialiser de données non fiables (YAML, Marshal) sans liste blanche de types.