Vercel Security
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
在 Vercel 中,团队是属于客户的完整环境,而项目是一个应用程序。
对于Vercel的安全审查,您需要请求具有查看者角色权限的用户,或者至少需要项目查看者权限以检查项目(如果您只需要检查项目而不需要检查团队配置)。
目的: 管理基本项目设置,如项目名称、框架和构建配置。
转移
错误配置: 允许将项目转移到另一个团队
风险: 攻击者可能会窃取项目
删除项目
错误配置: 允许删除项目
风险: 删除项目
目的: 管理自定义域名、DNS 设置和 SSL 配置。
DNS 配置错误
错误配置: 指向恶意服务器的错误 DNS 记录(A、CNAME)。
风险: 域名劫持、流量拦截和网络钓鱼攻击。
SSL/TLS 证书管理
错误配置: 使用弱或过期的 SSL/TLS 证书。
风险: 易受中间人(MITM)攻击,危害数据完整性和机密性。
DNSSEC 实施
错误配置: 未能启用 DNSSEC 或 DNSSEC 设置不正确。
风险: 增加对 DNS 欺骗和缓存投毒攻击的易感性。
每个域名使用的环境
错误配置: 更改生产中域名使用的环境。
风险: 暴露潜在的秘密或不应在生产中可用的功能。
目的: 定义不同的环境(开发、预览、生产),并具有特定的设置和变量。
环境隔离
错误配置: 在不同环境之间共享环境变量。
风险: 生产秘密泄露到开发或预览环境中,增加暴露风险。
对敏感环境的访问
错误配置: 允许对生产环境的广泛访问。
风险: 未经授权的更改或访问实时应用程序,导致潜在的停机或数据泄露。
目的: 管理应用程序使用的特定于环境的变量和秘密。
暴露敏感变量
错误配置: 用 NEXT_PUBLIC_
前缀敏感变量,使其在客户端可访问。
风险: API 密钥、数据库凭据或其他敏感数据暴露给公众,导致数据泄露。
敏感禁用
错误配置: 如果禁用(默认),则可以读取生成的秘密的值。
风险: 意外暴露或未经授权访问敏感信息的可能性增加。
共享环境变量
错误配置: 这些是在团队级别设置的环境变量,可能也包含敏感信息。
风险: 意外暴露或未经授权访问敏感信息的可能性增加。
目的: 配置 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 的防御,但以可用性为代价。
风险: 潜在的用户体验问题。
错误配置: 允许解除/阻止流量。
风险: 潜在的 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 密钥、数据库凭据或其他敏感数据暴露给公众,导致数据泄露。
敏感禁用
错误配置: 如果禁用(默认),则可以读取生成的秘密的值。
风险: 意外暴露或未经授权访问敏感信息的可能性增加。
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)