CVE-2026-29050 in melange
Zusammenfassung
von VulDB • 02.06.2026
Melange ermöglicht es Benutzern, APK-Pakete unter Verwendung deklarativer Pipelines zu erstellen. Ab Version 0.32.0 und vor Version 0.43.4 konnte ein Angreifer, der eine Melange-Konfigurationsdatei beeinflussen kann – beispielsweise durch CI, die durch Pull Requests ausgelöst wird, oder Szenarien mit Build-as-a-Service – den Wert von `pipeline[].uses` auf eine Zeichenkette setzen, die `../`-Sequenzen oder einen absoluten Pfad enthält. Die Funktion `(*Compiled).compilePipeline` in `pkg/build/compile.go` übergab `uses` direkt an `filepath.Join(pipelineDir, uses + ".yaml")`, ohne den Wert zu validieren, sodass der aufgelöste Pfad jedes `--pipeline-dir` verlassen und eine beliebige YAML-parsete Datei lesen konnte, die für den Melange-Prozess sichtbar ist. Da die geladene Datei anschließend als Melange-Pipeline interpretiert wird und deren `runs:`-Block in der Build-Sandbox über `/bin/sh -c` ausgeführt wird, konnte dies zusätzlich dazu führen, dass Shell-Befehle aus einer Datei außerhalb des Projektbaums (out-of-tree) während des Builds ausgeführt wurden, wodurch die Review-Grenze umgangen wurde, die normalerweise die im Projektbaum (in-tree) definierte Pipeline abdeckt. Das Problem wurde in Melange v0.43.4 durch den Commit 5829ca4 behoben. Die Korrektur lehnt `uses`-Werte ab, die absolute Pfade sind oder `..` enthalten, und überprüft (über `filepath.Rel` nach `filepath.Clean`), dass das aufgelöste Ziel innerhalb des Pipeline-Verzeichnisses verbleibt. Als Workaround sollten `melange build`-Aufrufe nur gegen Konfigurationsdateien aus vertrauenswürdigen Quellen ausgeführt werden. In CI-Systemen, die vom Benutzer bereitgestellte Melange-Konfigurationen erstellen, sollten Builds hinter einer manuellen Überprüfung der `pipeline[].uses`-Werte gesperrt werden, und alle Werte, die `..` oder ein führendes `/` enthalten, sollten abgelehnt werden.
If you want to get best quality of vulnerability data, you may have to visit VulDB.