
Soluzione alternativa per disabilitare la CLI per mitigare SECURITY-3314/CVE-2024-23897 e SECURITY-3315/CVE-2024-23898
= Mitigazione SECURITY-3314/SECURITY-3315
Questo repository documenta le mitigazioni che impediscono lo sfruttamento di SECURITY-3314 e SECURITY-3315 sulle istanze interessate.
== Panoramica
L'accesso alla CLI deve essere disabilitato. Entrambi i seguenti passaggi devono essere eseguiti:
== Istruzioni
=== Disabilitare l'endpoint CLI
Se Jenkins è in esecuzione, esegui lo script fornito disable-cli.groovy nella https://www.jenkins.io/doc/book/managing/script-console/[Console Script].
In questo modo verrà rimosso l'endpoint HTTP della CLI fino al riavvio di Jenkins.
Crea uno https://www.jenkins.io/doc/book/managing/groovy-hook-scripts/[Script Hook Groovy] di Post-Initialization con il contenuto di disable-cli.groovy per garantire che lo script venga eseguito ogni volta che Jenkins viene (ri)avviato.
==== Conferma
Per confermare che lo script ha funzionato, vai su Gestisci Jenkins » Jenkins CLI.
Senza la mitigazione applicata, viene mostrata la documentazione generale della CLI, inclusa una panoramica dei comandi CLI disponibili. Con la mitigazione applicata, viene mostrato un errore HTTP 404 Non Trovato.
=== Disabilitare la porta SSH
Il https://plugins.jenkins.io/sshd/[Plugin SSH Server] fornisce l'accesso alla CLI di Jenkins tramite SSH. Questo è un plugin le cui funzionalità facevano parte del core di Jenkins, quindi potrebbe essere installato anche se non lo hai mai installato esplicitamente.
Vai su Gestisci Jenkins » Sicurezza e assicurati che l'impostazione Porta SSHD nella sezione Server SSH sia impostata su Disabilita.
NOTA: Si consiglia di farlo anche se si sceglie di disabilitare o disinstallare il plugin, poiché la funzionalità di gestione dei plugin potrebbe reinstallare o riabilitare il plugin per garantire la soddisfazione delle dipendenze dei plugin.
In alternativa, puoi aggiungere il seguente snippet alla fine dello 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)
}
==== Conferma
Non è necessaria alcuna configurazione esplicita con l'opzione UI supportata per disabilitare la porta SSH, ma puoi provare a connetterti alla porta CLI SSH precedentemente configurata.
Il risultato previsto è un fallimento nella creazione della connessione.
Nota che non è possibile alcun utilizzo non autenticato della CLI SSH, quindi non tutti gli errori sono un'indicazione di una corretta disabilitazione.
Questi sono esempi di un risultato previsto (sicuro) (supponendo che la porta 2222 fosse stata precedentemente configurata):
$ 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