Vercel
Reading time: 15 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
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).
Configurações do Projeto
Geral
Propósito: Gerenciar configurações fundamentais do projeto, como nome do projeto, framework e configurações de build.
Configurações de Segurança:
- 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
Domínios
Propósito: Gerenciar domínios personalizados, configurações de DNS e configurações de SSL.
Configurações de Segurança:
- 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.
Ambientes
Propósito: Definir diferentes ambientes (Desenvolvimento, Pré-visualização, Produção) com configurações e variáveis específicas.
Configurações de Segurança:
- 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.
Variáveis de Ambiente
Propósito: Gerenciar variáveis e segredos específicos do ambiente usados pela aplicação.
Configurações de Segurança:
- 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.
Git
Propósito: Configurar integrações de repositórios Git, proteções de branch e gatilhos de implantação.
Configurações de Segurança:
- Etapa de Build Ignorada (TODO)
- Má configuração: Parece que esta opção permite configurar um script/commands bash que será executado quando um novo commit for enviado ao Github, o que poderia permitir RCE.
- Risco: TBD
Integrações
Propósito: Conectar serviços e ferramentas de terceiros para aprimorar as funcionalidades do projeto.
Configurações de Segurança:
- 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.
Proteção de Implantação
Propósito: Proteger implantações através de vários mecanismos de proteção, controlando quem pode acessar e implantar em seus ambientes.
Configurações de Segurança:
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.
Lista de Permissões OPTIONS
- Má configuração: Permitir caminhos ou endpoints sensíveis excessivamente amplos.
- 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.
Funções
Propósito: Configurar funções serverless, incluindo configurações de runtime, alocação de memória e políticas de segurança.
Configurações de Segurança:
- Nada
Cache de Dados
Propósito: Gerenciar estratégias e configurações de cache para otimizar o desempenho e controlar o armazenamento de dados.
Configurações de Segurança:
- Limpar Cache
- Má configuração: Permite excluir todo o cache.
- Risco: Usuários não autorizados excluindo o cache, levando a um potencial DoS.
Cron Jobs
Propósito: Agendar tarefas e scripts automatizados para serem executados em intervalos especificados.
Configurações de Segurança:
- Desativar Cron Job
- Má configuração: Permite desativar cron jobs declarados dentro do código
- Risco: Interrupção potencial do serviço (dependendo do que os cron jobs eram destinados)
Log Drains
Propósito: Configurar serviços de logging externos para capturar e armazenar logs de aplicação para monitoramento e auditoria.
Configurações de Segurança:
- Nada (gerenciado a partir das configurações da equipe)
Segurança
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.
Configurações de Segurança:
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-fonte, 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.
Avançado
Propósito: Acesso a configurações adicionais do projeto para ajuste fino de configurações e aprimoramento da segurança.
Configurações de 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.
Firewall do Projeto
Firewall
Configurações de Segurança:
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.
Regras Personalizadas & Bloqueio de IP
- Má configuração: Permite desbloquear/bloquear tráfego
- Risco: Potencial DoS permitindo tráfego malicioso ou bloqueando tráfego benigno
Implantação do Projeto
Fonte
- Má configuração: Permite acesso para ler o código-fonte completo da aplicação
- Risco: Exposição potencial de informações sensíveis
Proteção contra Desvio
- 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
Configurações da Equipe
Geral
Configurações de Segurança:
- 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
Faturamento
Configurações de Segurança:
- Limite de Custo do Speed Insights
- Má configuração: Um atacante pode aumentar esse número
- Risco: Aumento de custos
Membros
Configurações de Segurança:
- 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 permissões excessivas a pessoas que não precisam aumenta o risco da configuração do Vercel. Verifique todos os papéis possíveis em https://vercel.com/docs/accounts/team-members-and-roles/access-roles
- Risco: Aumentar a exposição da Equipe Vercel
Grupos de Acesso
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:
- Permissões Excessivas para Membros: 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
Configurações 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
Segurança & Privacidade
Configurações de Segurança:
- 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,
mydomain.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 do 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 personalização da autenticação SAML e 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 de 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 abusada 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.
Computação Segura
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.
Possíveis Má Configurações e Riscos
- 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 VPC
- Má configuração: Configuração incorreta do peering 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 compartilhada de IP aumenta a superfície de ataque, 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 é 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 VPC
- Má configuração: Tentar estabelecer mais conexões de peering 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.
Variáveis de Ambiente
Propósito: Gerenciar variáveis e segredos específicos do ambiente usados por todos os projetos.
Configurações de Segurança:
- 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.
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.