# Vercel {{#include ../banners/hacktricks-training.md}} ## 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 avvelenamento della cache. - **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 degli ambienti** - **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 dal 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 di 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 di distribuzione, accedendo e manipolando distribuzioni protette. **Link condivisibili** - **Misconfigurazione:** Condivisione di link indiscriminatamente o mancata revoca di link obsoleti. - **Rischio:** Accesso non autorizzato a distribuzioni protette, bypassando autenticazione e 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:** Utilizzo di password deboli o condivisione non sicura. - **Rischio:** Accesso non autorizzato alle distribuzioni se le password vengono indovinate o trapelate. - **Nota:** Disponibile nel piano **Pro** come parte della **Protezione avanzata delle distribuzioni** per un costo aggiuntivo di $150/mese. **Eccezioni alla protezione della distribuzione** - **Misconfigurazione:** Aggiunta di 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 delle distribuzioni** 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 della 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 di sicurezza relative all'accesso al progetto, 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 federazione OIDC** - **Misconfigurazione:** Configurazione errata dei parametri OIDC o utilizzo di URL di emittenti non sicuri. - **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 sono 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](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:** Mancata separazione dei 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 di sicurezza. --- ### Log Drains #### Configurazioni di sicurezza: - **Log Drains a terzi:** - **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 impedire ad altri team Vercel di distribuire 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. --- ### Computazione sicura **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. 2. **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. 3. **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. 4. **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, potenzialmente consentendo a progetti compromessi di influenzare altri. 5. **Gestione inadeguata degli indirizzi IP** - **Misconfigurazione:** Mancata gestione o rotazione appropriata degli indirizzi IP dedicati. - **Rischio:** Spoofing IP, vulnerabilità di tracciamento e potenziale blacklist se gli IP sono associati ad attività malevole. 6. **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. 7. **Mancata gestione sicura dei segreti di bypass** - **Misconfigurazione:** Esporre o gestire in modo errato i segreti utilizzati per bypassare le protezioni di distribuzione. - **Rischio:** Accesso non autorizzato a distribuzioni protette, consentendo agli attaccanti di manipolare o distribuire codice malevolo. 8. **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. 9. **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. 10. **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à aumentata 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 dal 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. {{#include ../banners/hacktricks-training.md}}