# Vercel

{{#include ../banners/hacktricks-training.md}}

## Informations de base

Dans Vercel, une **équipe** est l'**environnement** complet qui appartient à un client et un **projet** est une **application**.

Pour un examen de durcissement de **Vercel**, vous devez demander un utilisateur avec la **permission de rôle de visualiseur** ou au moins **permission de visualiseur de projet sur les projets** à vérifier (au cas où vous n'auriez besoin de vérifier que les projets et non la configuration de l'équipe également).

## Paramètres du projet

### Général

**Objectif :** Gérer les paramètres fondamentaux du projet tels que le nom du projet, le framework et les configurations de build.

#### Configurations de sécurité :

- **Transfert**
- **Mauvaise configuration :** Permet de transférer le projet à une autre équipe
- **Risque :** Un attaquant pourrait voler le projet
- **Supprimer le projet**
- **Mauvaise configuration :** Permet de supprimer le projet&#x20;
- **Risque :** Supprimer le projet

---

### Domaines

**Objectif :** Gérer les domaines personnalisés, les paramètres DNS et les configurations SSL.

#### Configurations de sécurité :

- **Erreurs de configuration DNS**
- **Mauvaise configuration :** Enregistrements DNS incorrects (A, CNAME) pointant vers des serveurs malveillants.
- **Risque :** Détournement de domaine, interception de trafic et attaques de phishing.
- **Gestion des certificats SSL/TLS**
- **Mauvaise configuration :** Utilisation de certificats SSL/TLS faibles ou expirés.
- **Risque :** Vulnérabilité aux attaques de type homme du milieu (MITM), compromettant l'intégrité et la confidentialité des données.
- **Mise en œuvre de DNSSEC**
- **Mauvaise configuration :** Échec de l'activation de DNSSEC ou paramètres DNSSEC incorrects.
- **Risque :** Sensibilité accrue au spoofing DNS et aux attaques de poisoning de cache.
- **Environnement utilisé par domaine**
- **Mauvaise configuration :** Changer l'environnement utilisé par le domaine en production.
- **Risque :** Exposer des secrets ou des fonctionnalités potentielles qui ne devraient pas être disponibles en production.

---

### Environnements

**Objectif :** Définir différents environnements (Développement, Prévisualisation, Production) avec des paramètres et des variables spécifiques.

#### Configurations de sécurité :

- **Isolation des environnements**
- **Mauvaise configuration :** Partage des variables d'environnement entre les environnements.
- **Risque :** Fuite de secrets de production dans les environnements de développement ou de prévisualisation, augmentant l'exposition.
- **Accès aux environnements sensibles**
- **Mauvaise configuration :** Autoriser un accès large aux environnements de production.
- **Risque :** Changements non autorisés ou accès à des applications en direct, entraînant des temps d'arrêt potentiels ou des violations de données.

---

### Variables d'environnement

**Objectif :** Gérer les variables et secrets spécifiques à l'environnement utilisés par l'application.

#### Configurations de sécurité :

- **Exposition de variables sensibles**
- **Mauvaise configuration :** Préfixer les variables sensibles avec `NEXT_PUBLIC_`, les rendant accessibles côté client.
- **Risque :** Exposition de clés API, d'identifiants de base de données ou d'autres données sensibles au public, entraînant des violations de données.
- **Sensibles désactivés**
- **Mauvaise configuration :** Si désactivé (par défaut), il est possible de lire les valeurs des secrets générés.
- **Risque :** Augmentation de la probabilité d'exposition accidentelle ou d'accès non autorisé à des informations sensibles.
- **Variables d'environnement partagées**
- **Mauvaise configuration :** Ce sont des variables d'environnement définies au niveau de l'équipe et pourraient également contenir des informations sensibles.
- **Risque :** Augmentation de la probabilité d'exposition accidentelle ou d'accès non autorisé à des informations sensibles.

---

### Git

**Objectif :** Configurer les intégrations de dépôt Git, les protections de branche et les déclencheurs de déploiement.

#### Configurations de sécurité :

- **Étape de build ignorée (TODO)**
- **Mauvaise configuration :** Il semble que cette option permette de configurer un script/commandes bash qui seront exécutés lorsqu'un nouveau commit est poussé sur Github, ce qui pourrait permettre RCE.
- **Risque :** À déterminer

---

### Intégrations

**Objectif :** Connecter des services et outils tiers pour améliorer les fonctionnalités du projet.

#### Configurations de sécurité :

- **Intégrations tierces non sécurisées**
- **Mauvaise configuration :** Intégration avec des services tiers non fiables ou non sécurisés.
- **Risque :** Introduction de vulnérabilités, fuites de données ou portes dérobées via des intégrations compromises.
- **Intégrations sur-autorisation**
- **Mauvaise configuration :** Accorder des permissions excessives aux services intégrés.
- **Risque :** Accès non autorisé aux ressources du projet, manipulation de données ou interruptions de service.
- **Manque de surveillance des intégrations**
- **Mauvaise configuration :** Échec de la surveillance et de l'audit des intégrations tierces.
- **Risque :** Détection retardée des intégrations compromises, augmentant l'impact potentiel des violations de sécurité.

---

### Protection des déploiements

**Objectif :** Sécuriser les déploiements grâce à divers mécanismes de protection, contrôlant qui peut accéder et déployer dans vos environnements.

#### Configurations de sécurité :

**Authentification Vercel**

- **Mauvaise configuration :** Désactiver l'authentification ou ne pas appliquer de vérifications des membres de l'équipe.
- **Risque :** Des utilisateurs non autorisés peuvent accéder aux déploiements, entraînant des violations de données ou un usage abusif de l'application.

**Contournement de protection pour l'automatisation**

- **Mauvaise configuration :** Exposer le secret de contournement publiquement ou utiliser des secrets faibles.
- **Risque :** Les attaquants peuvent contourner les protections de déploiement, accédant et manipulant des déploiements protégés.

**Liens partageables**

- **Mauvaise configuration :** Partager des liens sans discernement ou ne pas révoquer les liens obsolètes.
- **Risque :** Accès non autorisé aux déploiements protégés, contournant l'authentification et les restrictions IP.

**OPTIONS Liste blanche**

- **Mauvaise configuration :** Autoriser des chemins ou des points de terminaison sensibles trop larges.
- **Risque :** Les attaquants peuvent exploiter des chemins non protégés pour effectuer des actions non autorisées ou contourner les vérifications de sécurité.

**Protection par mot de passe**

- **Mauvaise configuration :** Utiliser des mots de passe faibles ou les partager de manière non sécurisée.
- **Risque :** Accès non autorisé aux déploiements si les mots de passe sont devinés ou divulgués.
- **Remarque :** Disponible dans le plan **Pro** dans le cadre de la **Protection avancée des déploiements** pour un coût supplémentaire de 150 $/mois.

**Exceptions de protection des déploiements**

- **Mauvaise configuration :** Ajouter des domaines de production ou sensibles à la liste des exceptions par inadvertance.
- **Risque :** Exposition de déploiements critiques au public, entraînant des fuites de données ou un accès non autorisé.
- **Remarque :** Disponible dans le plan **Pro** dans le cadre de la **Protection avancée des déploiements** pour un coût supplémentaire de 150 $/mois.

**IPs de confiance**

- **Mauvaise configuration :** Spécification incorrecte des adresses IP ou des plages CIDR.
- **Risque :** Utilisateurs légitimes étant bloqués ou IP non autorisées accédant.
- **Remarque :** Disponible dans le plan **Enterprise**.

---

### Fonctions

**Objectif :** Configurer des fonctions sans serveur, y compris les paramètres d'exécution, l'allocation de mémoire et les politiques de sécurité.

#### Configurations de sécurité :

- **Rien**

---

### Cache de données

**Objectif :** Gérer les stratégies et paramètres de mise en cache pour optimiser les performances et contrôler le stockage des données.

#### Configurations de sécurité :

- **Purger le cache**
- **Mauvaise configuration :** Cela permet de supprimer tout le cache.
- **Risque :** Utilisateurs non autorisés supprimant le cache, entraînant un potentiel DoS.

---

### Tâches Cron

**Objectif :** Planifier des tâches et scripts automatisés à exécuter à des intervalles spécifiés.

#### Configurations de sécurité :

- **Désactiver la tâche Cron**
- **Mauvaise configuration :** Cela permet de désactiver les tâches cron déclarées dans le code
- **Risque :** Interruption potentielle du service (selon ce que les tâches cron étaient censées faire)

---

### Drains de journal

**Objectif :** Configurer des services de journalisation externes pour capturer et stocker les journaux d'application pour la surveillance et l'audit.

#### Configurations de sécurité :

- Rien (géré depuis les paramètres d'équipe)

---

### Sécurité

**Objectif :** Hub central pour divers paramètres liés à la sécurité affectant l'accès au projet, la protection des sources, et plus encore.

#### Configurations de sécurité :

**Journaux de build et protection des sources**

- **Mauvaise configuration :** Désactiver la protection ou exposer les chemins `/logs` et `/src` publiquement.
- **Risque :** Accès non autorisé aux journaux de build et au code source, entraînant des fuites d'informations et une exploitation potentielle des vulnérabilités.

**Protection des forks Git**

- **Mauvaise configuration :** Autoriser des demandes de tirage non autorisées sans examens appropriés.
- **Risque :** Du code malveillant peut être fusionné dans la base de code, introduisant des vulnérabilités ou des portes dérobées.

**Accès sécurisé au backend avec fédération OIDC**

- **Mauvaise configuration :** Configuration incorrecte des paramètres OIDC ou utilisation d'URL d'émetteur non sécurisées.
- **Risque :** Accès non autorisé aux services backend via des flux d'authentification défectueux.

**Politique de conservation des déploiements**

- **Mauvaise configuration :** Définir des périodes de conservation trop courtes (perte de l'historique des déploiements) ou trop longues (conservation de données inutiles).
- **Risque :** Incapacité à effectuer des rollbacks lorsque nécessaire ou risque accru d'exposition des données provenant d'anciens déploiements.

**Déploiements récemment supprimés**

- **Mauvaise configuration :** Ne pas surveiller les déploiements supprimés ou se fier uniquement aux suppressions automatisées.
- **Risque :** Perte de l'historique critique des déploiements, entravant les audits et les rollbacks.

---

### Avancé

**Objectif :** Accès à des paramètres de projet supplémentaires pour affiner les configurations et améliorer la sécurité.

#### Configurations de sécurité :

**Liste des répertoires**

- **Mauvaise configuration :** Activer la liste des répertoires permet aux utilisateurs de voir le contenu des répertoires sans fichier d'index.
- **Risque :** Exposition de fichiers sensibles, de la structure de l'application et de points d'entrée potentiels pour des attaques.

---

## Pare-feu du projet

### Pare-feu

#### Configurations de sécurité :

**Activer le mode défi d'attaque**

- **Mauvaise configuration :** Activer cela améliore les défenses de l'application web contre les DoS mais au détriment de l'utilisabilité
- **Risque :** Problèmes potentiels d'expérience utilisateur.

### Règles personnalisées et blocage IP

- **Mauvaise configuration :** Permet de débloquer/bloquer le trafic
- **Risque :** Potentiel DoS permettant un trafic malveillant ou bloquant un trafic bénin

---

## Déploiement du projet

### Source

- **Mauvaise configuration :** Permet d'accéder à la lecture du code source complet de l'application
- **Risque :** Exposition potentielle d'informations sensibles

### Protection contre le déséquilibre

- **Mauvaise configuration :** Cette protection garantit que l'application client et serveur utilise toujours la même version afin qu'il n'y ait pas de désynchronisations où le client utilise une version différente de celle du serveur et donc ils ne se comprennent pas.
- **Risque :** Désactiver cela (si activé) pourrait causer des problèmes de DoS dans de nouveaux déploiements à l'avenir

---

## Paramètres de l'équipe

### Général

#### Configurations de sécurité :

- **Transfert**
- **Mauvaise configuration :** Permet de transférer tous les projets à une autre équipe
- **Risque :** Un attaquant pourrait voler les projets
- **Supprimer le projet**
- **Mauvaise configuration :** Permet de supprimer l'équipe avec tous les projets&#x20;
- **Risque :** Supprimer les projets

---

### Facturation

#### Configurations de sécurité :

- **Limite de coût des Speed Insights**
- **Mauvaise configuration :** Un attaquant pourrait augmenter ce nombre
- **Risque :** Coûts accrus

---

### Membres

#### Configurations de sécurité :

- **Ajouter des membres**
- **Mauvaise configuration :** Un attaquant pourrait maintenir sa persistance en invitant un compte qu'il contrôle
- **Risque :** Persistance de l'attaquant
- **Rôles**
- **Mauvaise configuration :** Accorder trop de permissions à des personnes qui n'en ont pas besoin augmente le risque de la configuration de Vercel. Vérifiez tous les rôles possibles dans [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles)
- **Risque :** Augmente l'exposition de l'équipe Vercel

---

### Groupes d'accès

Un **Groupe d'accès** dans Vercel est une collection de projets et de membres d'équipe avec des attributions de rôles prédéfinies, permettant une gestion d'accès centralisée et rationalisée à travers plusieurs projets.

**Mauvaises configurations potentielles :**

- **Sur-autorisation des membres :** Attribuer des rôles avec plus de permissions que nécessaire, entraînant un accès ou des actions non autorisées.
- **Attributions de rôles incorrectes :** Attribuer incorrectement des rôles qui ne correspondent pas aux responsabilités des membres de l'équipe, provoquant une élévation de privilèges.
- **Manque de séparation des projets :** Échec de la séparation des projets sensibles, permettant un accès plus large que prévu.
- **Gestion de groupe insuffisante :** Ne pas examiner ou mettre à jour régulièrement les groupes d'accès, entraînant des permissions d'accès obsolètes ou inappropriées.
- **Définitions de rôles incohérentes :** Utilisation de définitions de rôles incohérentes ou peu claires à travers différents groupes d'accès, entraînant confusion et lacunes de sécurité.

---

### Drains de journal

#### Configurations de sécurité :

- **Drains de journal vers des tiers :**
- **Mauvaise configuration :** Un attaquant pourrait configurer un Drain de journal pour voler les journaux
- **Risque :** Persistance partielle

---

### Sécurité et confidentialité

#### Configurations de sécurité :

- **Domaine d'email de l'équipe :** Lorsqu'il est configuré, ce paramètre invite automatiquement les comptes personnels Vercel avec des adresses email se terminant par le domaine spécifié (par exemple, `mydomain.com`) à rejoindre votre équipe lors de l'inscription et sur le tableau de bord.
- **Mauvaise configuration :**&#x20;
- Spécifier le mauvais domaine email ou un domaine mal orthographié dans le paramètre de domaine d'email de l'équipe.
- Utiliser un domaine email commun (par exemple, `gmail.com`, `hotmail.com`) au lieu d'un domaine spécifique à l'entreprise.
- **Risques :**
- **Accès non autorisé :** Des utilisateurs avec des adresses email de domaines non prévus peuvent recevoir des invitations à rejoindre votre équipe.
- **Exposition des données :** Exposition potentielle d'informations sensibles du projet à des individus non autorisés.
- **Scopes Git protégés :** Vous permet d'ajouter jusqu'à 5 scopes Git à votre équipe pour empêcher d'autres équipes Vercel de déployer des dépôts à partir du scope protégé. Plusieurs équipes peuvent spécifier le même scope, permettant aux deux équipes d'accéder.
- **Mauvaise configuration :** Ne pas ajouter de scopes Git critiques à la liste protégée.
- **Risques :**
- **Déploiements non autorisés :** D'autres équipes peuvent déployer des dépôts à partir des scopes Git de votre organisation sans autorisation.
- **Exposition de propriété intellectuelle :** Du code propriétaire pourrait être déployé et accessible en dehors de votre équipe.
- **Politiques de variables d'environnement :** Applique des politiques pour la création et l'édition des variables d'environnement de l'équipe. En particulier, vous pouvez imposer que toutes les variables d'environnement soient créées en tant que **Variables d'environnement sensibles**, qui ne peuvent être décryptées que par le système de déploiement de Vercel.
- **Mauvaise configuration :** Garder la mise en application des variables d'environnement sensibles désactivée.
- **Risques :**
- **Exposition des secrets :** Les variables d'environnement peuvent être vues ou éditées par des membres d'équipe non autorisés.
- **Violation de données :** Des informations sensibles comme des clés API et des identifiants pourraient être divulguées.
- **Journal d'audit :** Fournit une exportation de l'activité de l'équipe pour les 90 derniers jours. Les journaux d'audit aident à surveiller et à suivre les actions effectuées par les membres de l'équipe.
- **Mauvaise configuration :**\
Accorder l'accès aux journaux d'audit à des membres d'équipe non autorisés.
- **Risques :**
- **Violations de la vie privée :** Exposition d'activités et de données utilisateur sensibles.
- **Altération des journaux :** Des acteurs malveillants pourraient modifier ou supprimer des journaux pour couvrir leurs traces.
- **SAML Single Sign-On :** Permet la personnalisation de l'authentification SAML et de la synchronisation des annuaires pour votre équipe, permettant l'intégration avec un fournisseur d'identité (IdP) pour une authentification et une gestion des utilisateurs centralisées.
- **Mauvaise configuration :** Un attaquant pourrait créer une porte dérobée dans les paramètres de l'équipe en configurant des paramètres SAML tels que l'ID d'entité, l'URL SSO ou les empreintes de certificat.
- **Risque :** Maintenir la persistance
- **Visibilité des adresses IP :** Contrôle si les adresses IP, qui peuvent être considérées comme des informations personnelles en vertu de certaines lois sur la protection des données, sont affichées dans les requêtes de surveillance et les drains de journal.
- **Mauvaise configuration :** Laisser la visibilité des adresses IP activée sans nécessité.
- **Risques :**
- **Violations de la vie privée :** Non-conformité aux réglementations sur la protection des données comme le RGPD.
- **Répercussions légales :** Amendes et pénalités potentielles pour mauvaise gestion des données personnelles.
- **Blocage IP :** Permet la configuration des adresses IP et des plages CIDR que Vercel doit bloquer. Les requêtes bloquées ne contribuent pas à votre facturation.
- **Mauvaise configuration :** Pourrait être abusé par un attaquant pour permettre un trafic malveillant ou bloquer un trafic légitime.
- **Risques :**
- **Refus de service aux utilisateurs légitimes :** Blocage d'accès pour des utilisateurs ou partenaires valides.
- **Perturbations opérationnelles :** Perte de disponibilité de service pour certaines régions ou clients.

---

### Calcul sécurisé

**Vercel Secure Compute** permet des connexions sécurisées et privées entre les fonctions Vercel et les environnements backend (par exemple, bases de données) en établissant des réseaux isolés avec des adresses IP dédiées. Cela élimine le besoin d'exposer les services backend publiquement, améliorant la sécurité, la conformité et la confidentialité.

#### **Mauvaises configurations et risques potentiels**

1. **Sélection incorrecte de la région AWS**
- **Mauvaise configuration :** Choisir une région AWS pour le réseau Secure Compute qui ne correspond pas à la région des services backend.
- **Risque :** Latence accrue, problèmes potentiels de conformité en matière de résidence des données et dégradation des performances.
2. **Blocs CIDR qui se chevauchent**
- **Mauvaise configuration :** Sélectionner des blocs CIDR qui se chevauchent avec des VPC existants ou d'autres réseaux.
- **Risque :** Conflits de réseau entraînant des connexions échouées, un accès non autorisé ou des fuites de données entre les réseaux.
3. **Configuration incorrecte du peering VPC**
- **Mauvaise configuration :** Configuration incorrecte du peering VPC (par exemple, mauvais ID de VPC, mises à jour incomplètes de la table de routage).
- **Risque :** Accès non autorisé à l'infrastructure backend, connexions sécurisées échouées et violations potentielles de données.
4. **Attributions de projet excessives**
- **Mauvaise configuration :** Attribuer plusieurs projets à un seul réseau Secure Compute sans isolation appropriée.
- **Risque :** L'exposition IP partagée augmente la surface d'attaque, permettant potentiellement à des projets compromis d'affecter d'autres.
5. **Gestion inadéquate des adresses IP**
- **Mauvaise configuration :** Échec de la gestion ou de la rotation appropriée des adresses IP dédiées.
- **Risque :** Spoofing IP, vulnérabilités de suivi et potentiel de mise sur liste noire si les IP sont associées à des activités malveillantes.
6. **Inclusion inutile de conteneurs de build**
- **Mauvaise configuration :** Ajouter des conteneurs de build au réseau Secure Compute lorsque l'accès backend n'est pas requis pendant les builds.
- **Risque :** Surface d'attaque élargie, délais de provisionnement accrus et consommation inutile des ressources réseau.
7. **Échec de la gestion sécurisée des secrets de contournement**
- **Mauvaise configuration :** Exposer ou mal gérer les secrets utilisés pour contourner les protections de déploiement.
- **Risque :** Accès non autorisé aux déploiements protégés, permettant aux attaquants de manipuler ou de déployer du code malveillant.
8. **Ignorer les configurations de basculement de région**
- **Mauvaise configuration :** Ne pas configurer de régions de basculement passives ou configurer incorrectement les paramètres de basculement.
- **Risque :** Temps d'arrêt du service lors des pannes de la région principale, entraînant une disponibilité réduite et une incohérence potentielle des données.
9. **Dépassement des limites de connexion de peering VPC**
- **Mauvaise configuration :** Tenter d'établir plus de connexions de peering VPC que la limite autorisée (par exemple, dépasser 50 connexions).
- **Risque :** Incapacité à connecter en toute sécurité les services backend nécessaires, provoquant des échecs de déploiement et des perturbations opérationnelles.
10. **Paramètres réseau non sécurisés**
- **Mauvaise configuration :** Règles de pare-feu faibles, absence de cryptage ou segmentation réseau inappropriée au sein du réseau Secure Compute.
- **Risque :** Interception de données, accès non autorisé aux services backend et vulnérabilité accrue aux attaques.

---

### Variables d'environnement

**Objectif :** Gérer les variables et secrets spécifiques à l'environnement utilisés par tous les projets.

#### Configurations de sécurité :

- **Exposition de variables sensibles**
- **Mauvaise configuration :** Préfixer les variables sensibles avec `NEXT_PUBLIC_`, les rendant accessibles côté client.
- **Risque :** Exposition de clés API, d'identifiants de base de données ou d'autres données sensibles au public, entraînant des violations de données.
- **Sensibles désactivés**
- **Mauvaise configuration :** Si désactivé (par défaut), il est possible de lire les valeurs des secrets générés.
- **Risque :** Augmentation de la probabilité d'exposition accidentelle ou d'accès non autorisé à des informations sensibles.

{{#include ../banners/hacktricks-training.md}}
