
Solução alternativa para desabilitar a CLI para mitigar SECURITY-3314/CVE-2024-23897 e SECURITY-3315/CVE-2024-23898
= Mitigação de SECURITY-3314/SECURITY-3315
Este repositório documenta mitigações que impedem a exploração de SECURITY-3314 e SECURITY-3315 em instâncias afetadas.
== Visão Geral
O acesso à CLI precisa ser desabilitado. Ambas as etapas a seguir devem ser realizadas:
== Instruções
=== Desabilitar o endpoint da CLI
Se o Jenkins estiver em execução, execute o script fornecido disable-cli.groovy no https://www.jenkins.io/doc/book/managing/script-console/[Script Console].
Isso removerá o endpoint HTTP da CLI até que o Jenkins seja reiniciado.
Crie um Post-Initialization https://www.jenkins.io/doc/book/managing/groovy-hook-scripts/[Groovy Hook Script] com o conteúdo de disable-cli.groovy para garantir que o script seja executado sempre que o Jenkins for (re)iniciado.
==== Confirmação
Para confirmar que o script funcionou, navegue até Manage Jenkins » Jenkins CLI.
Sem a mitigação aplicada, a documentação geral da CLI, incluindo uma visão geral dos comandos disponíveis da CLI, é exibida. Com a mitigação aplicada, um erro HTTP 404 Not Found é exibido.
=== Desabilitar a Porta SSH
O https://plugins.jenkins.io/sshd/[SSH Server Plugin] fornece acesso à CLI do Jenkins via SSH. Este é um plugin cuja funcionalidade costumava fazer parte do núcleo do Jenkins, portanto, pode estar instalado mesmo que você nunca o tenha instalado explicitamente.
Navegue até Manage Jenkins » Security e certifique-se de que a configuração SSHD Port na seção SSH Server esteja definida como Disable.
NOTE: Fazer isso é recomendado mesmo se você optar por desabilitar ou desinstalar o plugin, pois a funcionalidade de gerenciamento de plugins pode reinstalar ou reabilitar o plugin para garantir que as dependências do plugin sejam satisfeitas.
Alternativamente, você pode adicionar o seguinte trecho ao final do 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)
}
==== Confirmação
Nenhuma configuração explícita é necessária com a opção de interface suportada para desabilitar a Porta SSH, mas você pode tentar conectar-se à porta SSH CLI previamente configurada.
O resultado esperado é uma falha ao estabelecer uma conexão.
Observe que nenhum uso não autenticado da CLI SSH é possível, portanto, nem todo erro é uma indicação de que ela foi desabilitada com sucesso.
Estes são exemplos de um resultado esperado (seguro) (assumindo que a porta 2222 foi previamente configurada):
$ 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