
この軽減策は、Jenkins 2.54 および Jenkins LTS 2.46.2 以降では廃止されています。 新規に 2.54+/LTS 2.46.2+ の Jenkins をインストールした場合、Remoting ベースの CLI は初期状態で無効化されています。 旧バージョンの Jenkins をインストールして 2.54+ または LTS 2.46.2+ にアップグレードした場合は、 管理モニターが表示され、 Configure Global Security に移動して Remoting ベースの CLI を無効化するように求められます。 いずれの場合も、以下の回避策は不要です。
または、Jenkins 2.32+ または 2.19.3+ を使用しており(2016年11月16日のセキュリティ勧告で言及されています)、かつ 2.54 より前のバージョンであれば、起動スイッチ -Djenkins.CLI.disabled=true を使用するだけです。
注: このスクリプトは、SECURITY-218 ゼロデイ脆弱性を修正するために 2015年11月 に公開されました。また、2016年11月 に公開された SECURITY-360 ゼロデイ脆弱性の回避策としても適用できます。
このスクリプト を使用すると、Jenkins の CLI サブシステムをシャットダウンして、既知の脆弱性から Jenkins を保護できます。
Groovy スクリプトコンソール(/script)から実行すると、再起動せずに実行中の Jenkins の CLI サブシステムをシャットダウンします。
$JENKINS_HOME/init.groovy.d/cli-shutdown.groovy に配置すると、マスター再起動後も保護が維持されます。
軽減策が正常に適用されたかどうかを確認するには、cli.jar を使用して java -jar cli.jar -s $JENKINS_URL を実行し、次のような 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年11月に SECURITY-218 ゼロデイリモートコード実行脆弱性の回避策として開発されました。修正を含むリリースは2015年11月11日に公開されました。
2016年11月11日には、別のゼロデイリモートコード実行脆弱性(SECURITY-360)が同様の手法を使用しており、この回避策はここでも有効でした。