Vercel

Reading time: 15 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Informazioni di base

In Vercel, un Team è l'intero ambiente che appartiene a un cliente e un progetto è un'applicazione.

Per una revisione di hardening di Vercel, è necessario richiedere un utente con permesso di ruolo Visualizzatore o almeno permesso di visualizzazione del progetto sui progetti da controllare (nel caso in cui sia necessario controllare solo i progetti e non anche la configurazione del Team).

Impostazioni del progetto

Generale

Scopo: Gestire le impostazioni fondamentali del progetto come nome del progetto, framework e configurazioni di build.

Configurazioni di sicurezza:

  • Trasferimento
  • Misconfigurazione: Consente di trasferire il progetto a un altro team
  • Rischio: Un attaccante potrebbe rubare il progetto
  • Elimina progetto
  • Misconfigurazione: Consente di eliminare il progetto
  • Rischio: Eliminare il progetto

Domini

Scopo: Gestire domini personalizzati, impostazioni DNS e configurazioni SSL.

Configurazioni di sicurezza:

  • Errori di configurazione DNS
  • Misconfigurazione: Record DNS errati (A, CNAME) che puntano a server malevoli.
  • Rischio: Hijacking del dominio, intercettazione del traffico e attacchi di phishing.
  • Gestione dei certificati SSL/TLS
  • Misconfigurazione: Utilizzo di certificati SSL/TLS deboli o scaduti.
  • Rischio: Vulnerabilità ad attacchi man-in-the-middle (MITM), compromettendo l'integrità e la riservatezza dei dati.
  • Implementazione di DNSSEC
  • Misconfigurazione: Mancata attivazione di DNSSEC o impostazioni DNSSEC errate.
  • Rischio: Maggiore suscettibilità a spoofing DNS e attacchi di cache poisoning.
  • Ambiente utilizzato per dominio
  • Misconfigurazione: Cambiare l'ambiente utilizzato dal dominio in produzione.
  • Rischio: Esporre potenziali segreti o funzionalità che non dovrebbero essere disponibili in produzione.

Ambienti

Scopo: Definire diversi ambienti (Sviluppo, Anteprima, Produzione) con impostazioni e variabili specifiche.

Configurazioni di sicurezza:

  • Isolamento dell'ambiente
  • Misconfigurazione: Condivisione di variabili ambientali tra ambienti.
  • Rischio: Perdita di segreti di produzione negli ambienti di sviluppo o anteprima, aumentando l'esposizione.
  • Accesso a ambienti sensibili
  • Misconfigurazione: Consentire un accesso ampio agli ambienti di produzione.
  • Rischio: Modifiche non autorizzate o accesso ad applicazioni live, portando a potenziali interruzioni o violazioni dei dati.

Variabili ambientali

Scopo: Gestire variabili e segreti specifici dell'ambiente utilizzati dall'applicazione.

Configurazioni di sicurezza:

  • Esposizione di variabili sensibili
  • Misconfigurazione: Prefissare variabili sensibili con NEXT_PUBLIC_, rendendole accessibili sul lato client.
  • Rischio: Esposizione di chiavi API, credenziali di database o altri dati sensibili al pubblico, portando a violazioni dei dati.
  • Sensibile disabilitato
  • Misconfigurazione: Se disabilitato (predefinito) è possibile leggere i valori dei segreti generati.
  • Rischio: Maggiore probabilità di esposizione accidentale o accesso non autorizzato a informazioni sensibili.
  • Variabili ambientali condivise
  • Misconfigurazione: Queste sono variabili ambientali impostate a livello di Team e potrebbero contenere anche informazioni sensibili.
  • Rischio: Maggiore probabilità di esposizione accidentale o accesso non autorizzato a informazioni sensibili.

Git

Scopo: Configurare integrazioni del repository Git, protezioni dei rami e trigger di distribuzione.

Configurazioni di sicurezza:

  • Passaggio di build ignorato (TODO)
  • Misconfigurazione: Sembra che questa opzione consenta di configurare uno script/ordini bash che verranno eseguiti quando un nuovo commit viene inviato in Github, il che potrebbe consentire RCE.
  • Rischio: TBD

Integrazioni

Scopo: Collegare servizi e strumenti di terze parti per migliorare le funzionalità del progetto.

Configurazioni di sicurezza:

  • Integrazioni di terze parti insicure
  • Misconfigurazione: Integrazione con servizi di terze parti non affidabili o insicuri.
  • Rischio: Introduzione di vulnerabilità, perdite di dati o backdoor attraverso integrazioni compromesse.
  • Integrazioni con permessi eccessivi
  • Misconfigurazione: Concessione di permessi eccessivi ai servizi integrati.
  • Rischio: Accesso non autorizzato alle risorse del progetto, manipolazione dei dati o interruzioni del servizio.
  • Mancanza di monitoraggio delle integrazioni
  • Misconfigurazione: Mancata monitorizzazione e audit delle integrazioni di terze parti.
  • Rischio: Rilevamento ritardato delle integrazioni compromesse, aumentando l'impatto potenziale delle violazioni della sicurezza.

Protezione della distribuzione

Scopo: Sicurezza delle distribuzioni attraverso vari meccanismi di protezione, controllando chi può accedere e distribuire nei tuoi ambienti.

Configurazioni di sicurezza:

Autenticazione Vercel

  • Misconfigurazione: Disabilitare l'autenticazione o non applicare controlli sui membri del team.
  • Rischio: Utenti non autorizzati possono accedere alle distribuzioni, portando a violazioni dei dati o uso improprio dell'applicazione.

Bypass della protezione per l'automazione

  • Misconfigurazione: Esporre il segreto di bypass pubblicamente o utilizzare segreti deboli.
  • Rischio: Gli attaccanti possono bypassare le protezioni della distribuzione, accedendo e manipolando distribuzioni protette.

Link condivisibili

  • Misconfigurazione: Condividere link indiscriminatamente o non revocare link obsoleti.
  • Rischio: Accesso non autorizzato a distribuzioni protette, bypassando l'autenticazione e le restrizioni IP.

OPTIONS Allowlist

  • Misconfigurazione: Consentire percorsi o endpoint sensibili eccessivamente ampi.
  • Rischio: Gli attaccanti possono sfruttare percorsi non protetti per eseguire azioni non autorizzate o bypassare controlli di sicurezza.

Protezione con password

  • Misconfigurazione: Utilizzare password deboli o condividerle in modo insicuro.
  • Rischio: Accesso non autorizzato alle distribuzioni se le password vengono indovinate o trapelate.
  • Nota: Disponibile nel piano Pro come parte della Protezione avanzata della distribuzione per un costo aggiuntivo di $150/mese.

Eccezioni alla protezione della distribuzione

  • Misconfigurazione: Aggiungere domini di produzione o sensibili all'elenco delle eccezioni inavvertitamente.
  • Rischio: Esposizione di distribuzioni critiche al pubblico, portando a perdite di dati o accesso non autorizzato.
  • Nota: Disponibile nel piano Pro come parte della Protezione avanzata della distribuzione per un costo aggiuntivo di $150/mese.

IP fidati

  • Misconfigurazione: Specificare in modo errato indirizzi IP o intervalli CIDR.
  • Rischio: Utenti legittimi bloccati o IP non autorizzati che ottengono accesso.
  • Nota: Disponibile nel piano Enterprise.

Funzioni

Scopo: Configurare funzioni serverless, comprese impostazioni di runtime, allocazione di memoria e politiche di sicurezza.

Configurazioni di sicurezza:

  • Niente

Cache dei dati

Scopo: Gestire strategie e impostazioni di caching per ottimizzare le prestazioni e controllare l'archiviazione dei dati.

Configurazioni di sicurezza:

  • Purge Cache
  • Misconfigurazione: Consente di eliminare tutta la cache.
  • Rischio: Utenti non autorizzati che eliminano la cache portando a un potenziale DoS.

Cron Jobs

Scopo: Pianificare attività e script automatizzati da eseguire a intervalli specificati.

Configurazioni di sicurezza:

  • Disabilita Cron Job
  • Misconfigurazione: Consente di disabilitare i cron job dichiarati nel codice
  • Rischio: Potenziale interruzione del servizio (a seconda di cosa erano destinati i cron job)

Log Drains

Scopo: Configurare servizi di logging esterni per catturare e archiviare i log dell'applicazione per monitoraggio e auditing.

Configurazioni di sicurezza:

  • Niente (gestito dalle impostazioni dei team)

Sicurezza

Scopo: Hub centrale per varie impostazioni relative alla sicurezza che influenzano l'accesso al progetto, la protezione del codice sorgente e altro.

Configurazioni di sicurezza:

Log di build e protezione del codice sorgente

  • Misconfigurazione: Disabilitare la protezione o esporre i percorsi /logs e /src pubblicamente.
  • Rischio: Accesso non autorizzato ai log di build e al codice sorgente, portando a perdite di informazioni e potenziale sfruttamento di vulnerabilità.

Protezione del fork di Git

  • Misconfigurazione: Consentire pull request non autorizzate senza revisioni adeguate.
  • Rischio: Codice malevolo può essere fuso nel codice sorgente, introducendo vulnerabilità o backdoor.

Accesso sicuro al backend con OIDC Federation

  • Misconfigurazione: Configurazione errata dei parametri OIDC o utilizzo di URL di emittenti insicuri.
  • Rischio: Accesso non autorizzato ai servizi backend attraverso flussi di autenticazione difettosi.

Politica di retention delle distribuzioni

  • Misconfigurazione: Impostare periodi di retention troppo brevi (perdendo la cronologia delle distribuzioni) o troppo lunghi (retention di dati non necessaria).
  • Rischio: Impossibilità di eseguire rollback quando necessario o aumento del rischio di esposizione dei dati da distribuzioni vecchie.

Distribuzioni recentemente eliminate

  • Misconfigurazione: Non monitorare le distribuzioni eliminate o fare affidamento esclusivamente su eliminazioni automatiche.
  • Rischio: Perdita di cronologia critica delle distribuzioni, ostacolando audit e rollback.

Avanzato

Scopo: Accesso a impostazioni aggiuntive del progetto per ottimizzare le configurazioni e migliorare la sicurezza.

Configurazioni di sicurezza:

Elenco delle directory

  • Misconfigurazione: Abilitare l'elenco delle directory consente agli utenti di visualizzare i contenuti delle directory senza un file indice.
  • Rischio: Esposizione di file sensibili, struttura dell'applicazione e potenziali punti di ingresso per attacchi.

Firewall del progetto

Firewall

Configurazioni di sicurezza:

Abilita la modalità di sfida agli attacchi

  • Misconfigurazione: Abilitare questo migliora le difese dell'applicazione web contro DoS ma a scapito dell'usabilità
  • Rischio: Potenziali problemi di esperienza utente.

Regole personalizzate e blocco IP

  • Misconfigurazione: Consente di sbloccare/bloccare il traffico
  • Rischio: Potenziale DoS consentendo traffico malevolo o bloccando traffico benigno

Distribuzione del progetto

Sorgente

  • Misconfigurazione: Consente l'accesso per leggere l'intero codice sorgente dell'applicazione
  • Rischio: Potenziale esposizione di informazioni sensibili

Protezione dallo skew

  • Misconfigurazione: Questa protezione garantisce che l'applicazione client e server stiano sempre utilizzando la stessa versione, quindi non ci siano desincronizzazioni in cui il client utilizza una versione diversa dal server e quindi non si comprendono a vicenda.
  • Rischio: Disabilitare questo (se abilitato) potrebbe causare problemi di DoS in nuove distribuzioni in futuro

Impostazioni del team

Generale

Configurazioni di sicurezza:

  • Trasferimento
  • Misconfigurazione: Consente di trasferire tutti i progetti a un altro team
  • Rischio: Un attaccante potrebbe rubare i progetti
  • Elimina progetto
  • Misconfigurazione: Consente di eliminare il team con tutti i progetti
  • Rischio: Eliminare i progetti

Fatturazione

Configurazioni di sicurezza:

  • Limite di costo Speed Insights
  • Misconfigurazione: Un attaccante potrebbe aumentare questo numero
  • Rischio: Aumento dei costi

Membri

Configurazioni di sicurezza:

  • Aggiungi membri
  • Misconfigurazione: Un attaccante potrebbe mantenere persistenza invitando un account che controlla
  • Rischio: Persistenza dell'attaccante
  • Ruoli
  • Misconfigurazione: Concedere troppi permessi a persone che non ne hanno bisogno aumenta il rischio della configurazione di Vercel. Controlla tutti i ruoli possibili in https://vercel.com/docs/accounts/team-members-and-roles/access-roles
  • Rischio: Aumentare l'esposizione del Team Vercel

Gruppi di accesso

Un Gruppo di accesso in Vercel è una raccolta di progetti e membri del team con assegnazioni di ruolo predefinite, che consente una gestione centralizzata e semplificata dell'accesso attraverso più progetti.

Potenziali misconfigurazioni:

  • Over-Permissioning dei membri: Assegnare ruoli con più permessi del necessario, portando a accesso o azioni non autorizzate.
  • Assegnazioni di ruolo improprie: Assegnare in modo errato ruoli che non si allineano con le responsabilità dei membri del team, causando escalation dei privilegi.
  • Mancanza di segregazione dei progetti: Non separare i progetti sensibili, consentendo un accesso più ampio del previsto.
  • Gestione insufficiente dei gruppi: Non rivedere o aggiornare regolarmente i Gruppi di accesso, risultando in permessi di accesso obsoleti o inappropriati.
  • Definizioni di ruolo incoerenti: Utilizzare definizioni di ruolo incoerenti o poco chiare tra diversi Gruppi di accesso, portando a confusione e lacune nella sicurezza.

Log Drains

Configurazioni di sicurezza:

  • Log Drains a terze parti:
  • Misconfigurazione: Un attaccante potrebbe configurare un Log Drain per rubare i log
  • Rischio: Persistenza parziale

Sicurezza e privacy

Configurazioni di sicurezza:

  • Dominio email del team: Quando configurato, questa impostazione invita automaticamente gli account personali Vercel con indirizzi email che terminano nel dominio specificato (ad es., mydomain.com) a unirsi al tuo team al momento della registrazione e nel dashboard.
  • Misconfigurazione:
  • Specificare il dominio email errato o un dominio scritto male nell'impostazione del dominio email del team.
  • Utilizzare un dominio email comune (ad es., gmail.com, hotmail.com) invece di un dominio specifico dell'azienda.
  • Rischi:
  • Accesso non autorizzato: Gli utenti con indirizzi email di domini non previsti potrebbero ricevere inviti a unirsi al tuo team.
  • Esposizione dei dati: Potenziale esposizione di informazioni sensibili del progetto a individui non autorizzati.
  • Ambiti Git protetti: Ti consente di aggiungere fino a 5 ambiti Git al tuo team per prevenire che altri team Vercel distribuiscano repository dall'ambito protetto. Più team possono specificare lo stesso ambito, consentendo l'accesso a entrambi i team.
  • Misconfigurazione: Non aggiungere ambiti Git critici all'elenco protetto.
  • Rischi:
  • Distribuzioni non autorizzate: Altri team potrebbero distribuire repository dagli ambiti Git della tua organizzazione senza autorizzazione.
  • Esposizione della proprietà intellettuale: Codice proprietario potrebbe essere distribuito e accessibile al di fuori del tuo team.
  • Politiche delle variabili ambientali: Impone politiche per la creazione e la modifica delle variabili ambientali del team. In particolare, puoi imporre che tutte le variabili ambientali siano create come Variabili ambientali sensibili, che possono essere decrittografate solo dal sistema di distribuzione di Vercel.
  • Misconfigurazione: Mantenere disabilitata l'applicazione delle variabili ambientali sensibili.
  • Rischi:
  • Esposizione dei segreti: Le variabili ambientali potrebbero essere visualizzate o modificate da membri del team non autorizzati.
  • Violazione dei dati: Informazioni sensibili come chiavi API e credenziali potrebbero essere trapelate.
  • Audit Log: Fornisce un'esportazione dell'attività del team per un massimo di 90 giorni. I log di audit aiutano a monitorare e tracciare le azioni eseguite dai membri del team.
  • Misconfigurazione:
    Concedere accesso ai log di audit a membri del team non autorizzati.
  • Rischi:
  • Violazioni della privacy: Esposizione di attività e dati sensibili degli utenti.
  • Manomissione dei log: Attori malevoli potrebbero alterare o eliminare i log per coprire le proprie tracce.
  • SAML Single Sign-On: Consente la personalizzazione dell'autenticazione SAML e della sincronizzazione della directory per il tuo team, abilitando l'integrazione con un fornitore di identità (IdP) per l'autenticazione centralizzata e la gestione degli utenti.
  • Misconfigurazione: Un attaccante potrebbe inserire un backdoor nel Team impostando parametri SAML come Entity ID, SSO URL o impronte digitali del certificato.
  • Rischio: Mantenere persistenza
  • Visibilità degli indirizzi IP: Controlla se gli indirizzi IP, che potrebbero essere considerati informazioni personali ai sensi di alcune leggi sulla protezione dei dati, sono visualizzati nelle query di monitoraggio e nei Log Drains.
  • Misconfigurazione: Lasciare abilitata la visibilità degli indirizzi IP senza necessità.
  • Rischi:
  • Violazioni della privacy: Non conformità alle normative sulla protezione dei dati come il GDPR.
  • Ripercussioni legali: Potenziali multe e sanzioni per gestione impropria dei dati personali.
  • Blocco IP: Consente la configurazione di indirizzi IP e intervalli CIDR da cui Vercel dovrebbe bloccare le richieste. Le richieste bloccate non contribuiscono alla tua fatturazione.
  • Misconfigurazione: Potrebbe essere abusata da un attaccante per consentire traffico malevolo o bloccare traffico legittimo.
  • Rischi:
  • Negazione del servizio agli utenti legittimi: Blocco dell'accesso per utenti o partner validi.
  • Interruzioni operative: Perdita di disponibilità del servizio per determinate regioni o clienti.

Compute sicuro

Vercel Secure Compute consente connessioni sicure e private tra le Funzioni Vercel e gli ambienti backend (ad es., database) stabilendo reti isolate con indirizzi IP dedicati. Questo elimina la necessità di esporre pubblicamente i servizi backend, migliorando la sicurezza, la conformità e la privacy.

Potenziali misconfigurazioni e rischi

  1. Selezione errata della regione AWS
  • Misconfigurazione: Scegliere una regione AWS per la rete Secure Compute che non corrisponde alla regione dei servizi backend.
  • Rischio: Maggiore latenza, potenziali problemi di conformità alla residenza dei dati e prestazioni degradate.
  1. Blocchi CIDR sovrapposti
  • Misconfigurazione: Selezionare blocchi CIDR che si sovrappongono a VPC esistenti o altre reti.
  • Rischio: Conflitti di rete che portano a connessioni non riuscite, accesso non autorizzato o perdita di dati tra le reti.
  1. Configurazione errata del peering VPC
  • Misconfigurazione: Configurazione errata del peering VPC (ad es., ID VPC errati, aggiornamenti incompleti della tabella di routing).
  • Rischio: Accesso non autorizzato all'infrastruttura backend, connessioni sicure non riuscite e potenziali violazioni dei dati.
  1. Assegnazioni eccessive di progetti
  • Misconfigurazione: Assegnare più progetti a una singola rete Secure Compute senza adeguata isolamento.
  • Rischio: L'esposizione IP condivisa aumenta la superficie di attacco, consentendo potenzialmente a progetti compromessi di influenzare altri.
  1. Gestione inadeguata degli indirizzi IP
  • Misconfigurazione: Mancata gestione o rotazione appropriata degli indirizzi IP dedicati.
  • Rischio: Spoofing IP, vulnerabilità di tracciamento e potenziale blacklisting se gli IP sono associati ad attività malevole.
  1. Inclusione non necessaria di contenitori di build
  • Misconfigurazione: Aggiungere contenitori di build alla rete Secure Compute quando l'accesso backend non è richiesto durante le build.
  • Rischio: Superficie di attacco espansa, ritardi di provisioning aumentati e consumo non necessario delle risorse di rete.
  1. Mancata gestione sicura dei segreti di bypass
  • Misconfigurazione: Esporre o gestire in modo errato i segreti utilizzati per bypassare le protezioni della distribuzione.
  • Rischio: Accesso non autorizzato alle distribuzioni protette, consentendo agli attaccanti di manipolare o distribuire codice malevolo.
  1. Ignorare le configurazioni di failover della regione
  • Misconfigurazione: Non impostare regioni di failover passive o configurazioni di failover errate.
  • Rischio: Interruzione del servizio durante le interruzioni della regione primaria, portando a disponibilità ridotta e potenziale incoerenza dei dati.
  1. Superamento dei limiti di connessione del peering VPC
  • Misconfigurazione: Tentare di stabilire più connessioni di peering VPC del limite consentito (ad es., superando 50 connessioni).
  • Rischio: Impossibilità di connettere in modo sicuro i servizi backend necessari, causando fallimenti nelle distribuzioni e interruzioni operative.
  1. Impostazioni di rete insicure
  • Misconfigurazione: Regole del firewall deboli, mancanza di crittografia o segmentazione di rete impropria all'interno della rete Secure Compute.
  • Rischio: Intercettazione dei dati, accesso non autorizzato ai servizi backend e vulnerabilità aumentate agli attacchi.

Variabili ambientali

Scopo: Gestire variabili e segreti specifici dell'ambiente utilizzati da tutti i progetti.

Configurazioni di sicurezza:

  • Esposizione di variabili sensibili
  • Misconfigurazione: Prefissare variabili sensibili con NEXT_PUBLIC_, rendendole accessibili sul lato client.
  • Rischio: Esposizione di chiavi API, credenziali di database o altri dati sensibili al pubblico, portando a violazioni dei dati.
  • Sensibile disabilitato
  • Misconfigurazione: Se disabilitato (predefinito) è possibile leggere i valori dei segreti generati.
  • Rischio: Maggiore probabilità di esposizione accidentale o accesso non autorizzato a informazioni sensibili.

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks