
Solution de contournement pour désactiver l'interface en ligne de commande (CLI) afin d'atténuer SECURITY-3314/CVE-2024-23897 et SECURITY-3315/CVE-2024-23898
= Atténuation de SECURITY-3314/SECURITY-3315
Ce dépôt documente les atténuations empêchant l'exploitation de SECURITY-3314 et SECURITY-3315 sur les instances concernées.
== Aperçu
L'accès à la CLI doit être désactivé. Les deux étapes suivantes doivent être effectuées :
== Instructions
=== Désactiver le point de terminaison CLI
Si Jenkins est en cours d'exécution, exécutez le script fourni disable-cli.groovy dans la https://www.jenkins.io/doc/book/managing/script-console/[Console de scripts].
Cela supprimera le point de terminaison HTTP de la CLI jusqu'au redémarrage de Jenkins.
Créez un https://www.jenkins.io/doc/book/managing/groovy-hook-scripts/[Script de hook Groovy] post-initialisation avec le contenu de disable-cli.groovy pour garantir que le script est exécuté à chaque (re)démarrage de Jenkins.
==== Confirmation
Pour confirmer que le script a fonctionné, accédez à Manage Jenkins » Jenkins CLI.
Sans l'atténuation appliquée, la documentation générale de la CLI, y compris un aperçu des commandes CLI disponibles, est affichée. Avec l'atténuation appliquée, une erreur HTTP 404 Not Found est affichée.
=== Désactiver le port SSH
Le https://plugins.jenkins.io/sshd/[Plugin SSH Server] fournit un accès à la CLI Jenkins via SSH. Il s'agit d'un plugin dont les fonctionnalités faisaient auparavant partie du cœur de Jenkins, il peut donc être installé même si vous ne l'avez jamais explicitement installé.
Accédez à Manage Jenkins » Security et assurez-vous que le paramètre Port SSHD dans la section Serveur SSH est défini sur Désactiver.
NOTE : Ceci est recommandé même si vous choisissez de désactiver ou désinstaller le plugin, car la fonctionnalité de gestion des plugins peut réinstaller ou réactiver le plugin pour garantir la satisfaction des dépendances du plugin.
Alternativement, vous pouvez ajouter l'extrait suivant à la fin du script disable-cli.groovy :
// Disable CLI access over SSH Server Plugin
if (j.getPlugin('sshd')) {
hudson.ExtensionList.lookupSingleton(org.jenkinsci.main.modules.sshd.SSHD.class).setPort(-1)
}
==== Confirmation
Aucune configuration explicite n'est nécessaire avec l'option d'interface utilisateur prise en charge pour désactiver le port SSH, mais vous pouvez tenter de vous connecter au port SSH CLI précédemment configuré.
Le résultat attendu est un échec de l'établissement de la connexion.
Notez qu'aucune utilisation non authentifiée de la CLI SSH n'est possible, donc toute erreur n'indique pas nécessairement qu'elle a été désactivée avec succès.
Voici des exemples d'un résultat attendu (sûr) (en supposant que le port 2222 était précédemment configuré) :
$ ssh -p 2222 jenkins.example.org
ssh: connect to host jenkins.example.org port 2222: Connection refused
$ ssh -p 2222 jenkins.example.org
kex_exchange_identification: read: Connection reset by peer
Connection reset by … port 2222