
Отключает подсистему Jenkins CLI/Remoting в качестве меры защиты от неаутентифицированных уязвимостей удалённого выполнения кода SECURITY-218 и SECURITY-360, применяется во время выполнения или через init-скрипт.
Данная мера защиты устарела, начиная с Jenkins 2.54 и Jenkins LTS 2.46.2. Если вы установили версию Jenkins 2.54+/LTS 2.46.2+ заново, CLI на основе Remoting отключён из коробки. Если вы установили более старую версию Jenkins и обновились до 2.54+ или LTS 2.46.2+, административный монитор предложит вам перейти в Настройка глобальной безопасности и отключить CLI на основе Remoting. В любом случае следующие обходные пути не нужны.
Или, если вы используете Jenkins 2.32+ или 2.19.3+
(как упоминалось в совете по безопасности от 16 ноября 2016 г.),
но версию ниже 2.54, вы можете просто использовать параметр запуска: -Djenkins.CLI.disabled=true
ПРИМЕЧАНИЕ: Этот сценарий был изначально опубликован в ноябре 2015 года для исправления уязвимости нулевого дня SECURITY-218. Его также можно применить в качестве обходного пути для уязвимости нулевого дня SECURITY-360, опубликованной в ноябре 2016 года.
Этот сценарий можно использовать для отключения подсистемы CLI в Jenkins, чтобы защитить Jenkins от известной уязвимости.
При запуске из консоли сценариев Groovy (/script) он отключает подсистему CLI работающего Jenkins без необходимости перезапуска.
При размещении в $JENKINS_HOME/init.groovy.d/cli-shutdown.groovy он гарантирует, что защита сохранится после перезапуска master.
Чтобы проверить, успешно ли применена защита, попробуйте запустить java -jar cli.jar -s $JENKINS_URL с cli.jar и убедитесь, что вы получили EOFException, как показано ниже:
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
Он не означает ничего полезного. Поэтому, пожалуйста, игнорируйте вывод. См. выше, как проверить, что защита применена. Для надёжности, пожалуйста, ещё раз выполните проверку, если вы перезапускаете Jenkins.
Нет.
Изначально сценарий был разработан в ноябре 2015 года как обходной путь для устранения уязвимости нулевого дня SECURITY-218, позволявшей удалённое выполнение кода. Релизы с исправлением были опубликованы 11 ноября 2015 года.
11 ноября 2016 года другая уязвимость нулевого дня, позволявшая удалённое выполнение кода (SECURITY-360), использовала аналогичную технику, и этот обходной путь также оказался эффективным.