
PoC Jenkins de vulnérabilité de lecture arbitraire de fichiers via la CLI pouvant mener à une RCE.
Jenkins dispose d'une interface en ligne de commande (CLI) intégrée pour accéder à Jenkins depuis un script ou un environnement shell.
Jenkins utilise la bibliothèque args4j pour analyser les arguments et options de commande sur le contrôleur Jenkins lors du traitement des commandes CLI. Cet analyseur de commandes dispose d'une fonctionnalité qui remplace un caractère @ suivi d'un chemin de fichier dans un argument par le contenu du fichier (expandAtFiles). Cette fonctionnalité est activée par défaut et Jenkins 2.441 et versions antérieures, LTS 2.426.2 et versions antérieures ne la désactivent pas.
Cela permet aux attaquants de lire des fichiers arbitraires sur le système de fichiers du contrôleur Jenkins en utilisant l'encodage de caractères par défaut du processus du contrôleur Jenkins.
Les attaquants disposant de l'autorisation Overall/Read peuvent lire des fichiers entiers.
Les attaquants sans autorisation Overall/Read peuvent lire les premières lignes des fichiers. Le nombre de lignes pouvant être lues dépend des commandes CLI disponibles. À la date de publication de cet avis, l'équipe de sécurité Jenkins a trouvé des moyens de lire les trois premières lignes de fichiers dans les versions récentes de Jenkins sans qu'aucun plugin ne soit installé, et n'a identifié aucun plugin qui augmenterait ce nombre de lignes.
Description du correctif : Jenkins 2.442, LTS 2.426.3 désactive la fonctionnalité de l'analyseur de commandes qui remplace un caractère @ suivi d'un chemin de fichier dans un argument par le contenu du fichier pour les commandes CLI.
En cas de problèmes avec ce correctif, désactivez cette modification en définissant la propriété système Java hudson.cli.CLICommand.allowAtSyntax sur true. Cette action est fortement déconseillée sur tout réseau accessible par des utilisateurs qui ne sont pas des administrateurs Jenkins.
Solution de contournement : La désactivation de l'accès à la CLI devrait empêcher complètement l'exploitation. Cette mesure est fortement recommandée aux administrateurs qui ne peuvent pas mettre à jour immédiatement vers Jenkins 2.442, LTS 2.426.3. L'application de cette solution de contournement ne nécessite pas de redémarrage de Jenkins.
Plus d'informations sur : https://www.jenkins.io/security/advisory/2024-01-24/#SECURITY-3314
Commande à exécuter : python CVE-2024-23897 Jenkins.py -l list.txt -f /etc/passwd
La réponse de sortie VULN peut contenir plus que daemon ou bin, ajoutez à la ligne 28 si vous souhaitez en ajouter davantage.