Vercel
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
基本信息
在 Vercel 中,团队是属于客户的完整 环境,而 项目 是一个 应用程序。
对于 Vercel 的加固审查,您需要请求具有 查看者角色权限 的用户,或者至少对项目具有 项目查看者权限 以进行检查(如果您只需要检查项目而不需要检查团队配置)。
项目设置
一般
目的: 管理基本项目设置,如项目名称、框架和构建配置。
安全配置:
- 转移
- 错误配置: 允许将项目转移到另一个团队
- 风险: 攻击者可能会窃取项目
- 删除项目
- 错误配置: 允许删除项目
- 风险: 删除项目
域名
目的: 管理自定义域名、DNS 设置和 SSL 配置。
安全配置:
- DNS 配置错误
- 错误配置: 指向恶意服务器的错误 DNS 记录(A、CNAME)。
- 风险: 域名劫持、流量拦截和网络钓鱼攻击。
- SSL/TLS 证书管理
- 错误配置: 使用弱或过期的 SSL/TLS 证书。
- 风险: 易受中间人(MITM)攻击,危及数据完整性和机密性。
- DNSSEC 实施
- 错误配置: 未能启用 DNSSEC 或 DNSSEC 设置不正确。
- 风险: 增加对 DNS 欺骗和缓存投毒攻击的易感性。
- 每个域名使用的环境
- 错误配置: 更改生产中域名使用的环境。
- 风险: 暴露潜在的秘密或不应在生产中可用的功能。
环境
目的: 定义不同的环境(开发、预览、生产),并具有特定的设置和变量。
安全配置:
- 环境隔离
- 错误配置: 在不同环境之间共享环境变量。
- 风险: 生产秘密泄露到开发或预览环境中,增加暴露风险。
- 对敏感环境的访问
- 错误配置: 允许对生产环境的广泛访问。
- 风险: 未经授权的更改或访问实时应用程序,导致潜在的停机或数据泄露。
环境变量
目的: 管理应用程序使用的特定于环境的变量和秘密。
安全配置:
- 暴露敏感变量
- 错误配置: 用
NEXT_PUBLIC_前缀敏感变量,使其在客户端可访问。 - 风险: API 密钥、数据库凭据或其他敏感数据暴露给公众,导致数据泄露。
- 敏感禁用
- 错误配置: 如果禁用(默认),则可以读取生成的秘密的值。
- 风险: 意外暴露或未经授权访问敏感信息的可能性增加。
- 共享环境变量
- 错误配置: 这些是在团队级别设置的环境变量,可能也包含敏感信息。
- 风险: 意外暴露或未经授权访问敏感信息的可能性增加。
Git
目的: 配置 Git 存储库集成、分支保护和部署触发器。
安全配置:
- 忽略构建步骤(TODO)
- 错误配置: 这个选项似乎允许配置一个 bash 脚本/命令,当在 Github 中推送新提交时执行,这可能允许 RCE。
- 风险: 待定
集成
目的: 连接第三方服务和工具以增强项目功能。
安全配置:
- 不安全的第三方集成
- 错误配置: 与不受信任或不安全的第三方服务集成。
- 风险: 通过被破坏的集成引入漏洞、数据泄露或后门。
- 过度授权的集成
- 错误配置: 授予集成服务过多的权限。
- 风险: 未经授权访问项目资源、数据操纵或服务中断。
- 缺乏集成监控
- 错误配置: 未能监控和审计第三方集成。
- 风险: 延迟检测被破坏的集成,增加安全漏洞的潜在影响。
部署保护
目的: 通过各种保护机制确保部署安全,控制谁可以访问和部署到您的环境。
安全配置:
Vercel 认证
- 错误配置: 禁用认证或未强制执行团队成员检查。
- 风险: 未经授权的用户可以访问部署,导致数据泄露或应用程序滥用。
自动化的保护绕过
- 错误配置: 公开暴露绕过秘密或使用弱秘密。
- 风险: 攻击者可以绕过部署保护,访问和操纵受保护的部署。
可共享链接
- 错误配置: 不加选择地共享链接或未能撤销过时链接。
- 风险: 未经授权访问受保护的部署,绕过身份验证和 IP 限制。
OPTIONS 允许列表
- 错误配置: 允许过于宽泛的路径或敏感端点。
- 风险: 攻击者可以利用未保护的路径执行未经授权的操作或绕过安全检查。
密码保护
- 错误配置: 使用弱密码或不安全地共享密码。
- 风险: 如果密码被猜测或泄露,可能导致未经授权访问部署。
- 注意: 在 Pro 计划中作为 高级部署保护 的一部分提供,额外收费 $150/月。
部署保护例外
- 错误配置: 不小心将生产或敏感域添加到例外列表。
- 风险: 关键部署暴露给公众,导致数据泄露或未经授权访问。
- 注意: 在 Pro 计划中作为 高级部署保护 的一部分提供,额外收费 $150/月。
受信任的 IP
- 错误配置: 不正确地指定 IP 地址或 CIDR 范围。
- 风险: 合法用户被阻止或未经授权的 IP 获得访问。
- 注意: 在 Enterprise 计划中提供。
函数
目的: 配置无服务器函数,包括运行时设置、内存分配和安全策略。
安全配置:
- 无
数据缓存
目的: 管理缓存策略和设置,以优化性能和控制数据存储。
安全配置:
- 清除缓存
- 错误配置: 允许删除所有缓存。
- 风险: 未经授权的用户删除缓存,导致潜在的 DoS。
定时任务
目的: 安排自动化任务和脚本在指定时间间隔运行。
安全配置:
- 禁用定时任务
- 错误配置: 允许禁用代码中声明的定时任务。
- 风险: 服务潜在中断(取决于定时任务的目的)
日志排水
目的: 配置外部日志服务以捕获和存储应用程序日志以进行监控和审计。
安全配置:
- 无(由团队设置管理)
安全
目的: 各种影响项目访问、源保护等的安全相关设置的中央中心。
安全配置:
构建日志和源保护
- 错误配置: 禁用保护或公开
/logs和/src路径。 - 风险: 未经授权访问构建日志和源代码,导致信息泄露和潜在漏洞利用。
Git Fork 保护
- 错误配置: 允许未经授权的拉取请求而没有适当的审查。
- 风险: 恶意代码可能被合并到代码库中,引入漏洞或后门。
使用 OIDC 联合身份验证的安全后端访问
- 错误配置: 错误设置 OIDC 参数或使用不安全的发行者 URL。
- 风险: 通过错误的身份验证流程未经授权访问后端服务。
部署保留策略
- 错误配置: 设置保留期限过短(丢失部署历史)或过长(不必要的数据保留)。
- 风险: 在需要时无法执行回滚,或由于旧部署增加数据暴露风险。
最近删除的部署
- 错误配置: 未监控已删除的部署或仅依赖自动删除。
- 风险: 丢失关键部署历史,妨碍审计和回滚。
高级
目的: 访问额外的项目设置,以微调配置和增强安全性。
安全配置:
目录列表
- 错误配置: 启用目录列表允许用户在没有索引文件的情况下查看目录内容。
- 风险: 暴露敏感文件、应用程序结构和潜在攻击入口。
项目防火墙
防火墙
安全配置:
启用攻击挑战模式
- 错误配置: 启用此功能提高了 Web 应用程序对 DoS 的防御,但以可用性为代价。
- 风险: 潜在的用户体验问题。
自定义规则和 IP 阻止
- 错误配置: 允许解除/阻止流量。
- 风险: 潜在的 DoS 允许恶意流量或阻止良性流量。
项目部署
源代码
- 错误配置: 允许访问读取应用程序的完整源代码。
- 风险: 潜在暴露敏感信息。
偏差保护
- 错误配置: 此保护确保客户端和服务器应用程序始终使用相同版本,以避免客户端使用与服务器不同的版本而导致的不同步。
- 风险: 禁用此功能(如果启用)可能导致未来新部署中的 DoS 问题。
团队设置
一般
安全配置:
- 转移
- 错误配置: 允许将所有项目转移到另一个团队。
- 风险: 攻击者可能会窃取项目。
- 删除项目
- 错误配置: 允许删除团队及其所有项目。
- 风险: 删除项目。
计费
安全配置:
- 速度洞察成本限制
- 错误配置: 攻击者可能会增加此数字。
- 风险: 成本增加。
成员
安全配置:
- 添加成员
- 错误配置: 攻击者可能会通过邀请他控制的帐户来维持持久性。
- 风险: 攻击者持久性。
- 角色
- 错误配置: 授予不需要的人员过多权限,增加 Vercel 配置的风险。检查所有可能的角色在 https://vercel.com/docs/accounts/team-members-and-roles/access-roles。
- 风险: 增加 Vercel 团队的暴露。
访问组
在 Vercel 中,访问组是一个项目和团队成员的集合,具有预定义的角色分配,能够在多个项目之间实现集中和简化的访问管理。
潜在错误配置:
- 过度授权成员: 分配的角色权限超过必要,导致未经授权的访问或操作。
- 不当角色分配: 错误分配与团队成员职责不符的角色,导致特权升级。
- 缺乏项目隔离: 未能分离敏感项目,允许比预期更广泛的访问。
- 组管理不足: 未定期审查或更新访问组,导致过时或不当的访问权限。
- 角色定义不一致: 在不同访问组中使用不一致或不清晰的角色定义,导致混淆和安全漏洞。
日志排水
安全配置:
- 向第三方的日志排水:
- 错误配置: 攻击者可能会配置日志排水以窃取日志。
- 风险: 部分持久性。
安全与隐私
安全配置:
- 团队电子邮件域: 配置后,此设置会自动邀请以指定域(例如
mydomain.com)结尾的 Vercel 个人帐户在注册时和仪表板上加入您的团队。 - 错误配置:
- 指定错误的电子邮件域或在团队电子邮件域设置中拼写错误的域。
- 使用常见电子邮件域(例如
gmail.com、hotmail.com)而不是公司特定域。 - 风险:
- 未经授权的访问: 来自意外域的用户可能会收到加入您团队的邀请。
- 数据暴露: 敏感项目信息可能暴露给未经授权的个人。
- 受保护的 Git 范围: 允许您为团队添加最多 5 个 Git 范围,以防止其他 Vercel 团队从受保护的范围中部署存储库。多个团队可以指定相同的范围,允许两个团队访问。
- 错误配置: 未将关键 Git 范围添加到受保护列表。
- 风险:
- 未经授权的部署: 其他团队可能未经授权从您组织的 Git 范围中部署存储库。
- 知识产权暴露: 专有代码可能被部署并在您的团队之外访问。
- 环境变量政策: 强制执行团队环境变量的创建和编辑政策。具体而言,您可以强制所有环境变量作为 敏感环境变量 创建,这只能由 Vercel 的部署系统解密。
- 错误配置: 保持对敏感环境变量的强制执行禁用。
- 风险:
- 秘密暴露: 环境变量可能被未经授权的团队成员查看或编辑。
- 数据泄露: 敏感信息如 API 密钥和凭据可能被泄露。
- 审计日志: 提供团队活动的导出,最长可达 90 天。审计日志有助于监控和跟踪团队成员执行的操作。
- 错误配置:
授予未经授权的团队成员访问审计日志的权限。 - 风险:
- 隐私侵犯: 敏感用户活动和数据的暴露。
- 篡改日志: 恶意行为者可能会更改或删除日志以掩盖其踪迹。
- SAML 单点登录: 允许自定义 SAML 身份验证和目录同步,以便与身份提供者(IdP)集成,实现集中身份验证和用户管理。
- 错误配置: 攻击者可能会通过设置 SAML 参数(如实体 ID、SSO URL 或证书指纹)来后门团队。
- 风险: 维持持久性。
- IP 地址可见性: 控制 IP 地址是否在监控查询和日志排水中显示,这在某些数据保护法律下可能被视为个人信息。
- 错误配置: 在没有必要的情况下保持 IP 地址可见性启用。
- 风险:
- 隐私侵犯: 不符合数据保护法规(如 GDPR)。
- 法律后果: 由于处理个人数据不当而可能面临罚款和处罚。
- IP 阻止: 允许配置 Vercel 应该阻止请求的 IP 地址和 CIDR 范围。被阻止的请求不会计入您的账单。
- 错误配置: 可能被攻击者滥用以允许恶意流量或阻止合法流量。
- 风险:
- 对合法用户的服务拒绝: 阻止有效用户或合作伙伴的访问。
- 操作中断: 某些地区或客户的服务可用性丧失。
安全计算
Vercel 安全计算 通过建立具有专用 IP 地址的隔离网络,启用 Vercel 函数与后端环境(例如数据库)之间的安全、私密连接。这消除了公开暴露后端服务的需要,增强了安全性、合规性和隐私。
潜在错误配置和风险
- 错误的 AWS 区域选择
- 错误配置: 为安全计算网络选择的 AWS 区域与后端服务的区域不匹配。
- 风险: 延迟增加、潜在的数据驻留合规性问题和性能下降。
- 重叠的 CIDR 块
- 错误配置: 选择与现有 VPC 或其他网络重叠的 CIDR 块。
- 风险: 网络冲突导致连接失败、未经授权访问或网络之间的数据泄露。
- 不当的 VPC 对等配置
- 错误配置: 错误设置 VPC 对等(例如,错误的 VPC ID、未完成的路由表更新)。
- 风险: 通过错误的身份验证流程未经授权访问后端基础设施、连接失败和潜在的数据泄露。
- 过多的项目分配
- 错误配置: 在没有适当隔离的情况下将多个项目分配给单个安全计算网络。
- 风险: 共享 IP 暴露增加攻击面,可能导致被破坏的项目影响其他项目。
- 不充分的 IP 地址管理
- 错误配置: 未能适当管理或轮换专用 IP 地址。
- 风险: IP 欺骗、跟踪漏洞和如果 IP 与恶意活动相关联则可能被列入黑名单。
- 不必要地包含构建容器
- 错误配置: 在构建期间不需要后端访问时将构建容器添加到安全计算网络。
- 风险: 扩大攻击面、增加配置延迟和不必要的网络资源消耗。
- 未能安全处理绕过秘密
- 错误配置: 暴露或错误处理用于绕过部署保护的秘密。
- 风险: 未经授权访问受保护的部署,允许攻击者操纵或部署恶意代码。
- 忽视区域故障转移配置
- 错误配置: 未设置被动故障转移区域或错误配置故障转移设置。
- 风险: 在主要区域故障期间服务停机,导致可用性降低和潜在的数据不一致。
- 超过 VPC 对等连接限制
- 错误配置: 尝试建立超过允许限制的 VPC 对等连接(例如,超过 50 个连接)。
- 风险: 无法安全连接必要的后端服务,导致部署失败和操作中断。
- 不安全的网络设置
- 错误配置: 弱防火墙规则、缺乏加密或安全计算网络内的不当网络分段。
- 风险: 数据拦截、未经授权访问后端服务和增加攻击的脆弱性。
环境变量
目的: 管理所有项目使用的特定于环境的变量和秘密。
安全配置:
- 暴露敏感变量
- 错误配置: 用
NEXT_PUBLIC_前缀敏感变量,使其在客户端可访问。 - 风险: API 密钥、数据库凭据或其他敏感数据暴露给公众,导致数据泄露。
- 敏感禁用
- 错误配置: 如果禁用(默认),则可以读取生成的秘密的值。
- 风险: 意外暴露或未经授权访问敏感信息的可能性增加。
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
HackTricks Cloud

