Vercel Security
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
No Vercel, uma Equipe é o ambiente completo que pertence a um cliente e um projeto é uma aplicação.
Para uma revisão de hardening do Vercel, você precisa solicitar um usuário com permissão de função Visualizador ou pelo menos permissão de visualizador de projeto sobre os projetos para verificar (caso você só precise verificar os projetos e não a configuração da Equipe também).
Propósito: Gerenciar configurações fundamentais do projeto, como nome do projeto, framework e configurações de build.
Transferência
Má configuração: Permite transferir o projeto para outra equipe
Risco: Um atacante pode roubar o projeto
Excluir Projeto
Má configuração: Permite excluir o projeto
Risco: Excluir o projeto
Propósito: Gerenciar domínios personalizados, configurações de DNS e configurações de SSL.
Erros de Configuração de DNS
Má configuração: Registros DNS incorretos (A, CNAME) apontando para servidores maliciosos.
Risco: Sequestro de domínio, interceptação de tráfego e ataques de phishing.
Gerenciamento de Certificados SSL/TLS
Má configuração: Uso de certificados SSL/TLS fracos ou expirados.
Risco: Vulnerável a ataques man-in-the-middle (MITM), comprometendo a integridade e confidencialidade dos dados.
Implementação de DNSSEC
Má configuração: Falha em habilitar DNSSEC ou configurações DNSSEC incorretas.
Risco: Aumento da suscetibilidade a ataques de spoofing de DNS e envenenamento de cache.
Ambiente usado por domínio
Má configuração: Alterar o ambiente usado pelo domínio em produção.
Risco: Expor segredos ou funcionalidades potenciais que não deveriam estar disponíveis em produção.
Propósito: Definir diferentes ambientes (Desenvolvimento, Pré-visualização, Produção) com configurações e variáveis específicas.
Isolamento de Ambiente
Má configuração: Compartilhamento de variáveis de ambiente entre ambientes.
Risco: Vazamento de segredos de produção em ambientes de desenvolvimento ou pré-visualização, aumentando a exposição.
Acesso a Ambientes Sensíveis
Má configuração: Permitir amplo acesso a ambientes de produção.
Risco: Alterações não autorizadas ou acesso a aplicações em produção, levando a possíveis interrupções ou vazamentos de dados.
Propósito: Gerenciar variáveis e segredos específicos do ambiente usados pela aplicação.
Expondo Variáveis Sensíveis
Má configuração: Prefixar variáveis sensíveis com NEXT_PUBLIC_
, tornando-as acessíveis no lado do cliente.
Risco: Exposição de chaves de API, credenciais de banco de dados ou outros dados sensíveis ao público, levando a vazamentos de dados.
Sensível desativado
Má configuração: Se desativado (padrão), é possível ler os valores dos segredos gerados.
Risco: Aumento da probabilidade de exposição acidental ou acesso não autorizado a informações sensíveis.
Variáveis de Ambiente Compartilhadas
Má configuração: Estas são variáveis de ambiente definidas no nível da Equipe e também podem conter informações sensíveis.
Risco: Aumento da probabilidade de exposição acidental ou acesso não autorizado a informações sensíveis.
Propósito: Configurar integrações de repositório Git, proteções de branch e gatilhos de implantação.
Etapa de Build Ignorada (TODO)
Má configuração: Parece que esta opção permite configurar um script/ comandos bash que serão executados quando um novo commit for enviado ao Github, o que poderia permitir RCE.
Risco: TBD
Propósito: Conectar serviços e ferramentas de terceiros para aprimorar as funcionalidades do projeto.
Integrações de Terceiros Inseguras
Má configuração: Integrar com serviços de terceiros não confiáveis ou inseguros.
Risco: Introdução de vulnerabilidades, vazamentos de dados ou backdoors através de integrações comprometidas.
Integrações com Permissões Excessivas
Má configuração: Conceder permissões excessivas a serviços integrados.
Risco: Acesso não autorizado a recursos do projeto, manipulação de dados ou interrupções de serviço.
Falta de Monitoramento de Integrações
Má configuração: Falha em monitorar e auditar integrações de terceiros.
Risco: Detecção atrasada de integrações comprometidas, aumentando o impacto potencial de violações de segurança.
Propósito: Proteger implantações através de vários mecanismos de proteção, controlando quem pode acessar e implantar em seus ambientes.
Autenticação Vercel
Má configuração: Desabilitar a autenticação ou não impor verificações de membros da equipe.
Risco: Usuários não autorizados podem acessar implantações, levando a vazamentos de dados ou uso indevido da aplicação.
Bypass de Proteção para Automação
Má configuração: Expor o segredo de bypass publicamente ou usar segredos fracos.
Risco: Atacantes podem contornar as proteções de implantação, acessando e manipulando implantações protegidas.
Links Compartilháveis
Má configuração: Compartilhar links indiscriminadamente ou falhar em revogar links desatualizados.
Risco: Acesso não autorizado a implantações protegidas, contornando autenticação e restrições de IP.
OPTIONS Allowlist
Má configuração: Allowlisting de caminhos excessivamente amplos ou endpoints sensíveis.
Risco: Atacantes podem explorar caminhos desprotegidos para realizar ações não autorizadas ou contornar verificações de segurança.
Proteção por Senha
Má configuração: Usar senhas fracas ou compartilhá-las de forma insegura.
Risco: Acesso não autorizado a implantações se as senhas forem adivinhadas ou vazadas.
Nota: Disponível no plano Pro como parte da Proteção Avançada de Implantação por um adicional de $150/mês.
Exceções de Proteção de Implantação
Má configuração: Adicionar domínios de produção ou sensíveis à lista de exceções inadvertidamente.
Risco: Exposição de implantações críticas ao público, levando a vazamentos de dados ou acesso não autorizado.
Nota: Disponível no plano Pro como parte da Proteção Avançada de Implantação por um adicional de $150/mês.
IPs Confiáveis
Má configuração: Especificar incorretamente endereços IP ou intervalos CIDR.
Risco: Usuários legítimos sendo bloqueados ou IPs não autorizados ganhando acesso.
Nota: Disponível no plano Enterprise.
Propósito: Configurar funções serverless, incluindo configurações de runtime, alocação de memória e políticas de segurança.
Nada
Propósito: Gerenciar estratégias e configurações de cache para otimizar o desempenho e controlar o armazenamento de dados.
Limpar Cache
Má configuração: Permite excluir todo o cache.
Risco: Usuários não autorizados excluindo o cache, levando a um potencial DoS.
Propósito: Agendar tarefas e scripts automatizados para serem executados em intervalos especificados.
Desabilitar Cron Job
Má configuração: Permite desabilitar cron jobs declarados dentro do código.
Risco: Interrupção potencial do serviço (dependendo do que os cron jobs eram destinados).
Propósito: Configurar serviços de logging externos para capturar e armazenar logs da aplicação para monitoramento e auditoria.
Nada (gerenciado a partir das configurações da equipe)
Propósito: Hub central para várias configurações relacionadas à segurança que afetam o acesso ao projeto, proteção de código-fonte e mais.
Logs de Build e Proteção de Código-Fonte
Má configuração: Desabilitar proteção ou expor caminhos /logs
e /src
publicamente.
Risco: Acesso não autorizado a logs de build e código-fonte, levando a vazamentos de informações e potencial exploração de vulnerabilidades.
Proteção de Fork do Git
Má configuração: Permitir pull requests não autorizados sem revisões adequadas.
Risco: Código malicioso pode ser mesclado ao código-base, introduzindo vulnerabilidades ou backdoors.
Acesso Seguro ao Backend com OIDC Federation
Má configuração: Configuração incorreta dos parâmetros OIDC ou uso de URLs de emissor inseguras.
Risco: Acesso não autorizado a serviços de backend através de fluxos de autenticação falhos.
Política de Retenção de Implantação
Má configuração: Definir períodos de retenção muito curtos (perdendo o histórico de implantações) ou muito longos (retenção desnecessária de dados).
Risco: Incapacidade de realizar rollbacks quando necessário ou aumento do risco de exposição de dados de implantações antigas.
Implantações Recentemente Excluídas
Má configuração: Não monitorar implantações excluídas ou confiar apenas em exclusões automatizadas.
Risco: Perda de histórico crítico de implantações, dificultando auditorias e rollbacks.
Propósito: Acesso a configurações adicionais do projeto para ajustar configurações e aprimorar a segurança.
Listagem de Diretório
Má configuração: Habilitar a listagem de diretório permite que os usuários vejam o conteúdo do diretório sem um arquivo de índice.
Risco: Exposição de arquivos sensíveis, estrutura da aplicação e potenciais pontos de entrada para ataques.
Habilitar Modo de Desafio de Ataque
Má configuração: Habilitar isso melhora as defesas da aplicação web contra DoS, mas à custa da usabilidade.
Risco: Potenciais problemas de experiência do usuário.
Má configuração: Permite desbloquear/bloquear tráfego.
Risco: Potencial DoS permitindo tráfego malicioso ou bloqueando tráfego benigno.
Má configuração: Permite acesso para ler o código-fonte completo da aplicação.
Risco: Exposição potencial de informações sensíveis.
Má configuração: Esta proteção garante que a aplicação do cliente e do servidor estejam sempre usando a mesma versão, para que não haja desincronizações onde o cliente usa uma versão diferente do servidor e, portanto, não se entendem.
Risco: Desabilitar isso (se habilitado) pode causar problemas de DoS em novas implantações no futuro.
Transferência
Má configuração: Permite transferir todos os projetos para outra equipe.
Risco: Um atacante pode roubar os projetos.
Excluir Projeto
Má configuração: Permite excluir a equipe com todos os projetos.
Risco: Excluir os projetos.
Limite de Custo do Speed Insights
Má configuração: Um atacante pode aumentar esse número.
Risco: Aumento de custos.
Adicionar membros
Má configuração: Um atacante pode manter persistência convidando uma conta que ele controla.
Risco: Persistência do atacante.
Funções
Má configuração: Conceder muitas permissões a pessoas que não precisam aumenta o risco da configuração do Vercel. Verifique todas as funções possíveis em https://vercel.com/docs/accounts/team-members-and-roles/access-roles.
Risco: Aumentar a exposição da Equipe Vercel.
Um Grupo de Acesso no Vercel é uma coleção de projetos e membros da equipe com atribuições de função predefinidas, permitindo gerenciamento de acesso centralizado e simplificado em vários projetos.
Possíveis Má Configurações:
Membros com Permissões Excessivas: Atribuir funções com mais permissões do que o necessário, levando a acesso ou ações não autorizadas.
Atribuições de Função Improprias: Atribuir incorretamente funções que não se alinham com as responsabilidades dos membros da equipe, causando escalonamento de privilégios.
Falta de Segregação de Projetos: Falha em separar projetos sensíveis, permitindo acesso mais amplo do que o pretendido.
Gerenciamento Insuficiente de Grupos: Não revisar ou atualizar regularmente os Grupos de Acesso, resultando em permissões de acesso desatualizadas ou inadequadas.
Definições de Função Inconsistentes: Usar definições de função inconsistentes ou pouco claras em diferentes Grupos de Acesso, levando a confusão e lacunas de segurança.
Log Drains para terceiros:
Má configuração: Um atacante pode configurar um Log Drain para roubar os logs.
Risco: Persistência parcial.
Domínio de Email da Equipe: Quando configurado, esta configuração convida automaticamente Contas Pessoais do Vercel com endereços de email terminando no domínio especificado (por exemplo, meudominio.com
) a se juntarem à sua equipe ao se inscreverem e no painel.
Má configuração:
Especificar o domínio de email errado ou um domínio com erro de ortografia na configuração do Domínio de Email da Equipe.
Usar um domínio de email comum (por exemplo, gmail.com
, hotmail.com
) em vez de um domínio específico da empresa.
Riscos:
Acesso Não Autorizado: Usuários com endereços de email de domínios não intencionais podem receber convites para se juntar à sua equipe.
Exposição de Dados: Exposição potencial de informações sensíveis do projeto a indivíduos não autorizados.
Escopos Git Protegidos: Permite adicionar até 5 escopos Git à sua equipe para impedir que outras equipes Vercel implantem repositórios do escopo protegido. Várias equipes podem especificar o mesmo escopo, permitindo acesso a ambas as equipes.
Má configuração: Não adicionar escopos Git críticos à lista protegida.
Riscos:
Implantações Não Autorizadas: Outras equipes podem implantar repositórios dos escopos Git da sua organização sem autorização.
Exposição de Propriedade Intelectual: Código proprietário pode ser implantado e acessado fora da sua equipe.
Políticas de Variáveis de Ambiente: Impõe políticas para a criação e edição das variáveis de ambiente da equipe. Especificamente, você pode impor que todas as variáveis de ambiente sejam criadas como Variáveis de Ambiente Sensíveis, que só podem ser descriptografadas pelo sistema de implantação do Vercel.
Má configuração: Manter a imposição de variáveis de ambiente sensíveis desativada.
Riscos:
Exposição de Segredos: Variáveis de ambiente podem ser visualizadas ou editadas por membros não autorizados da equipe.
Vazamento de Dados: Informações sensíveis como chaves de API e credenciais podem ser vazadas.
Registro de Auditoria: Fornece uma exportação da atividade da equipe por até os últimos 90 dias. Registros de auditoria ajudam a monitorar e rastrear ações realizadas pelos membros da equipe.
Má configuração: Conceder acesso aos registros de auditoria a membros não autorizados da equipe.
Riscos:
Violação de Privacidade: Exposição de atividades e dados sensíveis dos usuários.
Manipulação de Registros: Atores maliciosos podem alterar ou excluir registros para encobrir suas trilhas.
SAML Single Sign-On: Permite personalizar a autenticação SAML e a sincronização de diretórios para sua equipe, permitindo integração com um Provedor de Identidade (IdP) para autenticação e gerenciamento de usuários centralizados.
Má configuração: Um atacante pode backdoor a configuração da Equipe configurando parâmetros SAML como Entity ID, SSO URL ou impressões digitais de certificado.
Risco: Manter persistência.
Visibilidade do Endereço IP: Controla se os endereços IP, que podem ser considerados informações pessoais sob certas leis de proteção de dados, são exibidos em consultas de Monitoramento e Log Drains.
Má configuração: Deixar a visibilidade do endereço IP habilitada sem necessidade.
Riscos:
Violação de Privacidade: Não conformidade com regulamentos de proteção de dados como o GDPR.
Repercussões Legais: Multas e penalidades potenciais por manuseio inadequado de dados pessoais.
Bloqueio de IP: Permite a configuração de endereços IP e intervalos CIDR que o Vercel deve bloquear solicitações. Solicitações bloqueadas não contribuem para sua cobrança.
Má configuração: Poderia ser abusado por um atacante para permitir tráfego malicioso ou bloquear tráfego legítimo.
Riscos:
Negação de Serviço a Usuários Legítimos: Bloqueio de acesso para usuários ou parceiros válidos.
Interrupções Operacionais: Perda de disponibilidade de serviço para certas regiões ou clientes.
Vercel Secure Compute permite conexões seguras e privadas entre Funções Vercel e ambientes de backend (por exemplo, bancos de dados) estabelecendo redes isoladas com endereços IP dedicados. Isso elimina a necessidade de expor serviços de backend publicamente, melhorando a segurança, conformidade e privacidade.
Seleção Incorreta da Região AWS
Má configuração: Escolher uma região AWS para a rede Secure Compute que não corresponda à região dos serviços de backend.
Risco: Aumento da latência, potenciais problemas de conformidade de residência de dados e desempenho degradado.
Blocos CIDR Sobrepostos
Má configuração: Selecionar blocos CIDR que se sobrepõem a VPCs existentes ou outras redes.
Risco: Conflitos de rede levando a conexões falhadas, acesso não autorizado ou vazamento de dados entre redes.
Configuração Incorreta de Peering de VPC
Má configuração: Configuração incorreta do peering de VPC (por exemplo, IDs de VPC errados, atualizações incompletas da tabela de rotas).
Risco: Acesso não autorizado à infraestrutura de backend, conexões seguras falhadas e potenciais vazamentos de dados.
Atribuições Excessivas de Projetos
Má configuração: Atribuir vários projetos a uma única rede Secure Compute sem o devido isolamento.
Risco: Exposição de IP compartilhado aumenta a superfície de ataque, potencialmente permitindo que projetos comprometidos afetem outros.
Gerenciamento Inadequado de Endereços IP
Má configuração: Falha em gerenciar ou rotacionar endereços IP dedicados adequadamente.
Risco: Spoofing de IP, vulnerabilidades de rastreamento e potencial blacklist se os IPs estiverem associados a atividades maliciosas.
Inclusão Desnecessária de Contêineres de Build
Má configuração: Adicionar contêineres de build à rede Secure Compute quando o acesso ao backend não for necessário durante as builds.
Risco: Superfície de ataque expandida, atrasos aumentados na provisão e consumo desnecessário de recursos de rede.
Falha em Lidar com Segredos de Bypass de Forma Segura
Má configuração: Expor ou manusear incorretamente segredos usados para contornar proteções de implantação.
Risco: Acesso não autorizado a implantações protegidas, permitindo que atacantes manipulem ou implantem código malicioso.
Ignorando Configurações de Failover de Região
Má configuração: Não configurar regiões de failover passivas ou configurar incorretamente as configurações de failover.
Risco: Tempo de inatividade do serviço durante interrupções na região primária, levando a disponibilidade reduzida e potencial inconsistência de dados.
Excedendo Limites de Conexão de Peering de VPC
Má configuração: Tentar estabelecer mais conexões de peering de VPC do que o limite permitido (por exemplo, excedendo 50 conexões).
Risco: Incapacidade de conectar serviços de backend necessários de forma segura, causando falhas de implantação e interrupções operacionais.
Configurações de Rede Inseguras
Má configuração: Regras de firewall fracas, falta de criptografia ou segmentação inadequada da rede dentro da rede Secure Compute.
Risco: Interceptação de dados, acesso não autorizado a serviços de backend e aumento da vulnerabilidade a ataques.
Propósito: Gerenciar variáveis e segredos específicos do ambiente usados por todos os projetos.
Expondo Variáveis Sensíveis
Má configuração: Prefixar variáveis sensíveis com NEXT_PUBLIC_
, tornando-as acessíveis no lado do cliente.
Risco: Exposição de chaves de API, credenciais de banco de dados ou outros dados sensíveis ao público, levando a vazamentos de dados.
Sensível desativado
Má configuração: Se desativado (padrão), é possível ler os valores dos segredos gerados.
Risco: Aumento da probabilidade de exposição acidental ou acesso não autorizado a informações sensíveis.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)