CVE-2025-20281 : Vulnérabilité d'exécution de code à distance non authentifiée via l'API de Cisco ISE
Une vulnérabilité dans Cisco Identity Services Engine (ISE), spécifiquement dans la méthode enableStrongSwanTunnel, permettait l'injection de commandes en tant que root. Initialement signalée comme une vulnérabilité de désérialisation, elle incluait également une faille d'injection de commandes. Le chercheur, Kentaro Kawane, a découvert que des données fournies par l'attaquant étaient utilisées pour exécuter des scripts shell avec des privilèges sudo. L'exploitation s'est avérée plus complexe que prévu en raison de la manière dont la méthode exec() de Java tokenise les commandes. Le StringTokenizer de Java ignore les guillemets, empêchant l'exécution directe de commandes ; cependant, le chercheur a contourné ce problème en utilisant la variable Bash IFS (Internal Field Separator). Cela a permis l'injection de commandes en tant qu'argument unique, évitant ainsi les problèmes de tokenisation. Les commandes injectées s'exécutaient initialement dans un conteneur Docker, mais comme le conteneur fonctionnait en mode privilégié, le chercheur a utilisé une technique de "User-Mode Helpers" pour s'échapper du conteneur et obtenir un accès root sur le système hôte. Un encodage base64 a été utilisé pour contourner la limitation du caractère espace dans la charge utile. L'exploit complet impliquait l'envoi d'une requête POST spécialement conçue à l'endpoint vulnérable. Cette exploitation réussie démontre une combinaison de vulnérabilités menant à un compromis total du système. Le chercheur souligne l'importance de comprendre à la fois le comportement de exec() de Java et les capacités des conteneurs Docker privilégiés. Des recherches supplémentaires dans ce domaine sont prévues.
enableStrongSwanTunnel, permettait l'injection de commandes en tant que root. Initialement signalée comme une vulnérabilité de désérialisation, elle incluait également une faille d'injection de commandes. Le chercheur, Kentaro Kawane, a découvert que des données fournies par l'attaquant étaient utilisées pour exécuter des scripts shell avec des privilèges sudo. L'exploitation s'est avérée plus complexe que prévu en raison de la manière dont la méthodeexec()de Java tokenise les commandes. LeStringTokenizerde Java ignore les guillemets, empêchant l'exécution directe de commandes ; cependant, le chercheur a contourné ce problème en utilisant la variable BashIFS(Internal Field Separator). Cela a permis l'injection de commandes en tant qu'argument unique, évitant ainsi les problèmes de tokenisation. Les commandes injectées s'exécutaient initialement dans un conteneur Docker, mais comme le conteneur fonctionnait en mode privilégié, le chercheur a utilisé une technique de "User-Mode Helpers" pour s'échapper du conteneur et obtenir un accès root sur le système hôte. Un encodage base64 a été utilisé pour contourner la limitation du caractère espace dans la charge utile. L'exploit complet impliquait l'envoi d'une requête POST spécialement conçue à l'endpoint vulnérable. Cette exploitation réussie démontre une combinaison de vulnérabilités menant à un compromis total du système. Le chercheur souligne l'importance de comprendre à la fois le comportement deexec()de Java et les capacités des conteneurs Docker privilégiés. Des recherches supplémentaires dans ce domaine sont prévues.