
Workaround zum Deaktivieren der CLI zur Abschwächung von SECURITY-3314/CVE-2024-23897 und SECURITY-3315/CVE-2024-23898
= SECURITY-3314/SECURITY-3315 Absicherung
Dieses Repository dokumentiert Absicherungen, die die Ausnutzung von SECURITY-3314 und SECURITY-3315 auf betroffenen Instanzen verhindern.
== Übersicht
Der Zugriff auf die CLI muss deaktiviert werden. Beide folgenden Schritte müssen durchgeführt werden:
== Anleitungen
=== CLI-Endpunkt deaktivieren
Wenn Jenkins derzeit läuft, führen Sie das bereitgestellte Skript disable-cli.groovy in der https://www.jenkins.io/doc/book/managing/script-console/[Script-Konsole] aus.
Dadurch wird der CLI-HTTP-Endpunkt entfernt, bis Jenkins neu gestartet wird.
Erstellen Sie ein Post-Initialisierungs-https://www.jenkins.io/doc/book/managing/groovy-hook-scripts/[Groovy-Hook-Skript] mit dem Inhalt von disable-cli.groovy, um sicherzustellen, dass das Skript bei jedem (Neu-)Start von Jenkins ausgeführt wird.
==== Bestätigung
Um zu bestätigen, dass das Skript funktioniert hat, navigieren Sie zu Manage Jenkins » Jenkins CLI.
Ohne angewendete Absicherung wird die allgemeine CLI-Dokumentation einschließlich einer Übersicht der verfügbaren CLI-Befehle angezeigt. Mit angewendeter Absicherung wird ein HTTP-404-Fehler (Nicht gefunden) angezeigt.
=== SSH-Port deaktivieren
Das https://plugins.jenkins.io/sshd/[SSH Server Plugin] ermöglicht den Zugriff auf die Jenkins-CLI über SSH. Dies ist ein Plugin, dessen Funktionalität früher Teil des Jenkins-Kerns war, daher kann es installiert sein, auch wenn Sie es nie explizit installiert haben.
Navigieren Sie zu Manage Jenkins » Security und stellen Sie sicher, dass die Einstellung SSHD-Port im Abschnitt SSH Server auf Deaktivieren gesetzt ist.
HINWEIS: Dies wird empfohlen, auch wenn Sie das Plugin deaktivieren oder deinstallieren, da die Plugin-Verwaltungsfunktion das Plugin möglicherweise neu installiert oder aktiviert, um die Plugin-Abhängigkeiten zu erfüllen.
Alternativ können Sie den folgenden Ausschnitt am Ende des Skripts disable-cli.groovy hinzufügen:
// Disable CLI access over SSH Server Plugin
if (j.getPlugin('sshd')) {
hudson.ExtensionList.lookupSingleton(org.jenkinsci.main.modules.sshd.SSHD.class).setPort(-1)
}
==== Bestätigung
Mit der unterstützten UI-Option zum Deaktivieren des SSH-Ports ist keine explizite Konfiguration erforderlich, aber Sie können versuchen, eine Verbindung zum zuvor konfigurierten SSH-CLI-Port herzustellen.
Das erwartete Ergebnis ist ein fehlgeschlagener Verbindungsaufbau.
Beachten Sie, dass keine nicht authentifizierte Nutzung der SSH-CLI möglich ist, daher ist nicht jeder Fehler ein Zeichen dafür, dass sie erfolgreich deaktiviert wurde.
Dies sind Beispiele für ein erwartetes (sicheres) Ergebnis (unter der Annahme, dass Port 2222 zuvor konfiguriert war):
$ 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