= SECURITY-3314/SECURITY-3315 緩和策
このリポジトリは、影響を受けるインスタンスにおけるSECURITY-3314およびSECURITY-3315の悪用を防ぐための緩和策を文書化しています。
== 概要
CLIへのアクセスを無効にする必要があります。 以下の両方の手順を実行する必要があります。
== 手順
=== CLIエンドポイントを無効にする
Jenkinsが現在実行中の場合は、提供されているスクリプト disable-cli.groovy を https://www.jenkins.io/doc/book/managing/script-console/[Script Console] で実行してください。
これにより、Jenkinsが再起動されるまでCLI HTTPエンドポイントが削除されます。
Jenkinsが(再)起動されるたびにスクリプトが実行されるように、disable-cli.groovy の内容を含む https://www.jenkins.io/doc/book/managing/groovy-hook-scripts/[Groovy Hook Script] のPost-Initializationを作成してください。
==== 確認
スクリプトが機能したことを確認するには、Manage Jenkins » Jenkins CLI に移動します。 緩和策が適用されていない場合、利用可能なCLIコマンドの概要を含む一般的なCLIドキュメントが表示されます。 緩和策が適用された場合、HTTP 404 Not Foundエラーが表示されます。
=== SSHポートを無効にする
https://plugins.jenkins.io/sshd/[SSH Server Plugin] は、SSHを介したJenkins CLIへのアクセスを提供します。 これは、その機能がかつてJenkinsコアの一部であったプラグインであり、明示的にインストールしたことがなくてもインストールされている可能性があります。
Manage Jenkins » Security に移動し、SSH Server セクションの SSHD Port 設定が Disable に設定されていることを確認してください。
注:プラグインの依存関係を満たすためにプラグイン管理機能がプラグインを再インストールまたは再有効化する可能性があるため、プラグインを無効にするかアンインストールする場合でも、この設定を行うことをお勧めします。
または、以下のスニペットを 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)
}
==== 確認
サポートされているUIオプションでSSHポートを無効にする場合、明示的な設定は不要ですが、以前に構成したSSH CLIポートに接続を試みることができます。
期待される結果は、接続の確立に失敗することです。
認証されていないSSH CLIの使用は不可能であるため、すべてのエラーが正常に無効化されたことを示すわけではないことに注意してください。
以下は、期待される(安全な)結果の例です(ポート 2222 が以前に構成されていた場合)。
$ 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