Les responsables du logiciel d’automatisation open source d’intégration continue/de livraison et de déploiement continus (CI/CD) Jenkins ont résolu neuf failles de sécurité, dont un bug critique qui, s’il était exploité avec succès, pourrait entraîner l’exécution de code à distance (RCE).
Le problème, attribué à l’identifiant CVE CVE-2024-23897a été décrit comme une vulnérabilité de lecture de fichier arbitraire via l’interface de ligne de commande intégrée (CLI)
« 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 », expliquent les responsables. dit dans un avis de mercredi.
« Cet analyseur de commandes a une fonctionnalité qui remplace un caractère @ suivi d’un chemin de fichier dans un argument avec 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. « .
Un acteur malveillant pourrait exploiter cette bizarrerie pour lire des fichiers arbitraires sur le système de fichiers du contrôleur Jenkins en utilisant le codage de caractères par défaut du processus du contrôleur Jenkins.
Alors que les attaquants disposant de l’autorisation « Global/Lecture » peuvent lire des fichiers entiers, ceux qui n’en disposent pas peuvent lire les trois premières lignes des fichiers en fonction des commandes CLI.
De plus, cette lacune pourrait être utilisée pour lire des fichiers binaires contenant des clés cryptographiques, mais avec certaines restrictions. À condition que les secrets binaires puissent être extraits, Jenkins affirme que cela pourrait ouvrir la porte à diverses attaques :
- Exécution de code à distance via les URL racine des ressources
- Exécution de code à distance via le cookie « Se souvenir de moi »
- Exécution de code à distance via des attaques XSS (cross-site scripting) stockées via des journaux de build
- Exécution de code à distance via le contournement de la protection CSRF
- Décrypter les secrets stockés dans Jenkins
- Supprimer n’importe quel élément dans Jenkins
- Télécharger un vidage du tas Java
« Bien que les fichiers contenant des données binaires puissent être lus, la fonctionnalité concernée tente de les lire sous forme de chaînes en utilisant le codage de caractères par défaut du processus du contrôleur », a déclaré Jenkins.
« Il est probable que certains octets ne soient pas lus correctement et soient remplacés par une valeur d’espace réservé. Les octets qui peuvent ou non être lus dépendent de ce codage de caractères. »
Le chercheur en sécurité Yaniv Nizry a été reconnu pour avoir découvert et signalé la faille, qui a été corrigée dans Jenkins 2.442, LTS 2.426.3 en désactivant la fonction d’analyseur de commandes.
Comme solution de contournement à court terme jusqu’à ce que le correctif puisse être appliqué, il est recommandé de désactiver l’accès à la CLI.
Ce développement intervient près d’un an après que Jenkins a corrigé deux graves vulnérabilités de sécurité baptisées CorePlague (CVE-2023-27898 et CVE-2023-27905) qui pourraient conduire à l’exécution de code sur des systèmes ciblés.