IPBUF安全漏洞报告
English
CVE-2026-44479 CVSS 5.5 中危

CVE-2026-44479 Vercel CLI Token信息泄露漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-44479
漏洞类型
信息泄露
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Vercel CLI

相关标签

信息泄露凭证泄露VercelCLICI/CDCVE-2026-44479

漏洞概述

Vercel CLI在50.16.0至52.0.0版本中存在安全漏洞。当CLI运行在非交互模式(通过--non-interactive参数或自动检测AI代理环境)下时,如果执行的命令无法完全自动完成,系统会以JSON格式输出包含建议后续命令的负载。此时,若用户通过命令行参数(--token或-t)进行了身份认证,认证Token会以明文形式直接包含在该JSON建议中。这导致敏感Token可能被捕获并记录在CI/CD日志、Agent转录或其他自动化输出中,进而造成凭证泄露。

技术细节

该漏洞源于Vercel CLI在非交互模式下处理命令行参数时的逻辑缺陷。在非交互模式中,CLI预期通过JSON格式返回状态和建议,以便机器解析。然而,当命令需要用户干预(如确认操作)时,CLI构建的JSON响应中包含了重新运行命令的建议,并直接引用了用户在命令行中传入的所有参数。由于未对敏感参数(如--token)进行过滤或脱敏处理,Token值被原样嵌入JSON输出中。攻击者只需能够访问存储这些JSON输出的日志文件(例如公开的CI构建日志),即可提取高权限的API Token,从而接管受害者的Vercel账户资源。

攻击链分析

STEP 1
环境准备
攻击者确认目标在CI/CD流水线或自动化脚本中使用了Vercel CLI,且版本在受影响范围内(50.16.0 - 52.0.0)。
STEP 2
触发漏洞
脚本运行Vercel CLI命令,使用 --token 或 -t 参数传入认证Token,并处于非交互模式(如设置了 --non-interactive)。
STEP 3
生成日志
CLI执行过程中遇到需要交互的场景(例如项目未链接、需要确认部署区域等),输出包含明文Token的JSON错误信息或建议。
STEP 4
信息泄露
该JSON输出被CI/CD系统捕获并存储在构建日志中。如果日志访问控制不当,攻击者可读取日志。
STEP 5
利用凭证
攻击者从日志中提取Token,利用该Token访问Vercel API,进行恶意部署、代码注入或数据窃取。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Simulated PoC demonstrating the vulnerability behavior import json import sys def simulate_vulnerable_cli(command, token): print(f"[Simulated CLI] Executing: {command} with token {token[:4]}****") # Simulating a scenario where interaction is needed in non-interactive mode needs_interaction = True if needs_interaction: response_payload = { "status": "needs_action", "message": "Confirmation required", "suggested_command": f"{command} --token {token} --confirm" } # Outputting JSON with sensitive token print(json.dumps(response_payload, indent=2)) if __name__ == "__main__": # Example usage representing the leak simulate_vulnerable_cli("vercel deploy", "vcl_1234567890abcdef_secret_token_value")

影响范围

Vercel CLI >= 50.16.0, <= 52.0.0

防御指南

临时缓解措施
在无法立即升级CLI的情况下,应停止在非交互模式的命令(如CI/CD脚本)中使用 --token 参数。请将Token设置为环境变量(例如 VERCEL_TOKEN=your_token vercel --non-interactive),这通常不会在错误建议的JSON中回显环境变量值。同时,检查并清理现有的构建日志,防止已泄露的Token被滥用。

参考链接

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