
Desactiva el subsistema CLI/Remoting de Jenkins como mitigación contra las vulnerabilidades de ejecución remota de código no autenticada SECURITY-218 y SECURITY-360, aplicado en tiempo de ejecución o mediante un script de init.
Esta mitigación está obsoleta a partir de Jenkins 2.54 y Jenkins LTS 2.46.2. Si ha instalado una versión 2.54+/LTS 2.46.2+ de Jenkins desde cero, la CLI basada en Remoting está deshabilitada de forma predeterminada. Si instaló una versión anterior de Jenkins y actualizó a 2.54+ o LTS 2.46.2+, un monitor administrativo le pedirá que vaya a Configurar seguridad global y deshabilite la CLI basada en Remoting. En cualquier caso, las siguientes soluciones alternativas no son necesarias.
O bien, si está usando Jenkins 2.32+ o 2.19.3+
(como se menciona en el aviso de seguridad del 16 de noviembre de 2016),
pero anterior a 2.54, puede simplemente usar el interruptor de inicio: -Djenkins.CLI.disabled=true
NOTA: Este script se publicó originalmente en noviembre de 2015 para corregir la vulnerabilidad de día cero SECURITY-218. También se puede aplicar como solución alternativa para la vulnerabilidad de día cero SECURITY-360 publicada en noviembre de 2016.
Este script se puede usar para apagar el subsistema CLI de Jenkins y así proteger a Jenkins de una vulnerabilidad conocida.
Cuando se ejecuta desde la consola de scripts de Groovy (/script), esto apaga el subsistema CLI de una instancia de Jenkins en ejecución sin necesidad de reiniciar.
Cuando se coloca en $JENKINS_HOME/init.groovy.d/cli-shutdown.groovy, asegura que la protección permanezca activa después del reinicio del maestro.
Para comprobar si la mitigación se aplicó correctamente, intente ejecutar java -jar cli.jar -s $JENKINS_URL con cli.jar y asegúrese de obtener EOFException como el siguiente:
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readUTF(DataInputStream.java:609)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at hudson.cli.CLI.connectViaCliPort(CLI.java:232)
at hudson.cli.CLI.<init>(CLI.java:128)
at hudson.cli.CLIConnectionFactory.connect(CLIConnectionFactory.java:72)
at hudson.cli.CLI._main(CLI.java:479)
at hudson.cli.CLI.main(CLI.java:390)
Suppressed: java.io.IOException: https://ci.jenkins-ci.org/cli doesn't look like Jenkins
at hudson.cli.FullDuplexHttpStream.<init>(FullDuplexHttpStream.java:81)
at hudson.cli.CLI.connectViaHttp(CLI.java:158)
at hudson.cli.CLI.<init>(CLI.java:132)
... 3 more
No significa nada útil. Así que ignore la salida. Vea arriba cómo verificar que la mitigación se llevó a cabo. Para estar seguro, realice también la verificación nuevamente si reinicia Jenkins.
No.
Originalmente se desarrolló en noviembre de 2015 como solución alternativa para la vulnerabilidad de día cero de ejecución remota de código SECURITY-218. Las versiones con la corrección se publicaron el 11 de noviembre de 2015.
El 11 de noviembre de 2016, otra vulnerabilidad de día cero de ejecución remota de código (SECURITY-360) usó una técnica similar, y esta solución alternativa también fue efectiva aquí.