CVE-2017-1000353 – Nicht authentifizierte Remote Code Execution (RCE) – Jenkins

Jenkins ist ein weit verbreiteter Open-Source-Automatisierungsserver für Continuous Integration und Continuous Deployment (CI/CD)-Pipelines, der das Kompilieren, Testen und Bereitstellen von Software auf verschiedenen Plattformen unterstützt. Die im April 2017 veröffentlichte CVE-2017-1000353 ist eine kritische Deserialisierungsschwachstelle, die es Angreifern ermöglichte, ohne Authentifizierung beliebigen Code aus der Ferne auszuführen. Die Schwachstelle betrifft Main-Line-Releases von Jenkins bis einschließlich Version 2.56 sowie LTS-Releases von Jenkins bis einschließlich 2.46.1.

ProduktJenkins
Datum07.10.2025 12:41:25

Technische Zusammenfassung

Die Schwachstelle resultiert aus einer unsicheren Java-Deserialisierung in der Remoting-Funktionalität der Jenkins-CLI (Command Line Interface). Insbesondere liegt der Fehler in der Funktion readFrom innerhalb von Command.java, in der Jenkins vom Benutzer kontrollierte Daten deserialisiert, die von einer ObjectInputStream-Instanz stammen.

Das Hauptproblem besteht darin, dass Angreifer ein serialisiertes Java-Objekt vom Typ SignedObject an die Remoting-basierte Jenkins-CLI übertragen können, welches dann über einen neuen ObjectInputStream deserialisiert wird, wodurch der auf einer Blockliste basierende Schutzmechanismus umgangen wird.

Da die bestehende Blockliste in Jenkins SignedObject nicht enthielt, löste dessen Deserialisierung die Deserialisierung des gekapselten Inhalts aus.

Das Angriffsszenario sieht wie folgt aus: Angreifer senden zwei HTTP-Anfragen:

  • Die erste Anfrage etabliert eine gültige Jenkins-CLI-Sitzung mit zwei Kanälen (Upload/Download);
  • Die zweite Anfrage lädt ein SignedObject hoch, das ein bösartiges serialisiertes Java-Objekt enthält; Die Funktion readFrom deserialisiert das SignedObject; Der gekapselte Inhalt des SignedObject wird daraufhin deserialisiert, wobei die Blockliste umgangen wird; Bösartige Gadget-Ketten werden während der Deserialisierung aktiviert und führen beliebigen Code mit den Privilegien des Jenkins-Servers aus.

Empfehlungen

  1. Patch umgehend anwenden: Aktualisieren Sie alle Jenkins-Instanzen auf Version 2.57 (Weekly) oder 2.46.2 LTS.
  2. Remoting-basierte CLI deaktivieren: Nach dem Update sollten Benutzer die Remoting-basierte CLI deaktivieren und auf andere Modi (HTTP oder SSH) umsteigen.
  3. Suche und Überwachung: Implementieren Sie WAF-Regeln, um Signaturen von Java-Deserialisierungsangriffen zu erkennen, und überprüfen Sie die Jenkins-Zugriffsprotokolle auf verdächtige Muster bei der Erstellung von CLI-Sitzungen.

[Callforaction-THREAT-Footer]

Leave a Reply

Your email address will not be published. Required fields are marked *