IPBUF安全漏洞报告
English
CVE-2026-29050 CVSS 6.1 中危

CVE-2026-29050 melange路径遍历漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-29050
漏洞类型
路径遍历/任意文件读取
CVSS评分
6.1 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
melange

相关标签

路径遍历任意文件读取melange命令执行

漏洞概述

melange是一个允许用户使用声明式管道构建apk包的工具。在0.32.0至0.43.4版本之间存在一个路径遍历漏洞,攻击者可以通过影响melange配置文件,将`pipeline[].uses`设置为包含`../`序列或绝对路径的值,从而读取对melange进程可见的任意可YAML解析的文件,并可能导致命令执行。该漏洞绕过了通常覆盖树内管道定义的审查边界,对系统机密性和完整性构成威胁。

技术细节

该漏洞的核心在于`pkg/build/compile.go`中的`(*Compiled).compilePipeline`函数将`pipeline[].uses`值直接传递给`filepath.Join(pipelineDir, uses + ".yaml")`,而没有验证该值。这允许攻击者通过构造包含`../`序列或绝对路径的`uses`值,使解析的路径转义`--pipeline-dir`限制,从而读取对melange进程可见的任意可YAML解析的文件。由于加载的文件随后被解释为melange管道,并且其`runs:`块通过构建沙箱中的`/bin/sh -c`执行,这还允许在构建期间运行来自树外文件的shell命令,绕过了通常覆盖树内管道定义的审查边界。

攻击链分析

STEP 1
步骤1
攻击者通过影响melange配置文件(例如通过PR驱动的CI或构建即服务场景)
STEP 2
步骤2
攻击者将`pipeline[].uses`设置为包含`../`序列或绝对路径的值
STEP 3
步骤3
melange的`(*Compiled).compilePipeline`函数将`uses`值直接传递给`filepath.Join(pipelineDir, uses + ".yaml")`
STEP 4
步骤4
解析的路径转义`--pipeline-dir`限制,读取对melange进程可见的任意可YAML解析的文件
STEP 5
步骤5
加载的文件被解释为melange管道,其`runs:`块通过构建沙箱中的`/bin/sh -c`执行
STEP 6
步骤6
攻击者成功执行来自树外文件的shell命令,绕过审查边界

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Malicious melange configuration file package: name: exploit version: 1.0 pipeline: - uses: ../../../etc/passwd # Path traversal attempt runs: | cat /etc/passwd # Note: This PoC is for demonstration purposes only. Actual exploitation requires adjustment based on the specific environment and melange configuration.

影响范围

melange 0.32.0 至 0.43.4 之前

防御指南

临时缓解措施
临时缓解措施包括仅对来自受信任源的配置文件运行`melange build`,以及在CI系统中,通过手动审查`pipeline[].uses`值来限制构建,并拒绝任何包含`..`或以`/`开头的值。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表