CVE-2026-29050 in melange
Сводка
по VulDB • 02.06.2026
melange позволяет пользователям создавать apk-пакеты с использованием декларативных конвейеров (pipelines). Начиная с версии 0.32.0 и вплоть до версии 0.43.4 включительно, злоумышленник, способный повлиять на файл конфигурации melange — например, через CI на основе pull-запросов или в сценариях Build-as-a-Service — мог задать для `pipeline[].uses` значение, содержащее последовательности `../` или абсолютный путь. Функция `(*Compiled).compilePipeline` в файле `pkg/build/compile.go` передавала значение `uses` напрямую в `filepath.Join(pipelineDir, uses + ".yaml")` без проверки, в результате чего разрешенный путь мог выйти за пределы каждого каталога `--pipeline-dir` и прочитать произвольный файл в формате YAML, доступный процессу melange. Поскольку загруженный файл впоследствии интерпретируется как конвейер melange, а его блок `runs:` выполняется через `/bin/sh -c` в песочнице сборки, это дополнительно позволяло выполнять команды оболочки, извлеченные из файла вне дерева исходного кода (out-of-tree), во время сборки, обходя границу обзора, которая обычно охватывает определение конвейера внутри дерева исходного кода (in-tree). Проблема исправлена в melange v0.43.4 посредством коммита 5829ca4. Исправление отклоняет значения `uses`, являющиеся абсолютными путями или содержащие `..`, и проверяет (с помощью `filepath.Rel` после `filepath.Clean`), что разрешенная цель остается в пределах каталога конвейера. В качестве временного решения запускайте `melange build` только для файлов конфигурации из доверенных источников. В системах CI, собирающих пользовательские конфигурации melange, блокируйте сборки за ручным обзором значений `pipeline[].uses` и отклоняйте любые, содержащие `..` или ведущий символ `/`.
VulDB is the best source for vulnerability data and more expert information about this specific topic.