Verwundbares Gradle-Plugin-publish-Plugin legt vertrauliche Informationen offen
31. März 2020
0 Min. LesezeitErst vor wenigen Tagen, am 27. März, wurde eine Sicherheitslücke im plugin-publish-Plugin von Gradle offengelegt und veröffentlicht: CVE-2020-7599. Sie betrifft alle Versionen des Pakets vor 0.11.0. Danny Thomas, Developer Productivity bei Netflix, entdeckte die Sicherheitslücke am 4. März und meldete sie umgehend an Gradle.
Vertrauliche Informationen
Bei dem Problem in diesem Paket handelt es sich um eine sogenannte „Insertion of Sensitive Information“-Sicherheitslücke. In diesem konkreten Fall gibt das Paket vertrauliche Informationen in der Protokolldatei aus. Wenn ein Plugin-Autor ein Gradle-Plugin mit dem Gradle-Plugin com.gradle.plugin-publish veröffentlicht, wird eine vorab signierte AWS-URL an das Plugin übergeben. Wird der Gradle-Build mit --info oder einer niedrigeren Protokollebene ausgeführt, erscheint diese URL in der Protokolldatei. Ist dieses Build-Protokoll öffentlich einsehbar, wie es bei vielen öffentlichen CI-Systemen der Fall ist, kann die URL für einen böswilligen Angriff verwendet werden. Ein Beispiel für ein solches Datenleck zeigt dieser öffentliche CI-Build von Danny Thomas.
Möglicher Angriff
Die URL ist eine Stunde lang gültig und kann wiederverwendet werden. Ein Angreifer könnte diese URL also nutzen, um ein kürzlich hochgeladenes Plugin durch ein schädliches Paket zu ersetzen. Nach einer Untersuchung des Vorfalls erklärte Gradle, dass keine Artefakte ersetzt wurden. Wichtig ist auch: Standardmäßig wird die URL nicht in den Protokollen angezeigt, da die standardmäßige Protokollebene laut der Gradle-Dokumentation LIFECYCLE ist.
Behebung
Gradle veröffentlichte daraufhin eine neue Version des Publish-Plugins, in der die Protokollebene für die URL reduziert wurde. Es wird empfohlen, das plugin-publish-Plugin auf Version 0.11.0 zu aktualisieren. Achten Sie außerdem darauf, Gradle nicht mit der Protokollebene --debug auszuführen, da die URL dabei weiterhin offengelegt wird. Generell gilt es als sehr gefährlich, die Protokollebene zu senken, wenn die Protokolle öffentlich einsehbar sind. Neben der Veröffentlichung einer gepatchten Plugin-Version verkürzte Gradle auch die Gültigkeitsdauer der vorab signierten URL, um das Zeitfenster für einen Angriff zu verkleinern. Weitere Informationen finden Sie im Sicherheitsblog.
Starten Sie mit Capture-the-Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.



