23 KiB
Vercel
{{#include ../banners/hacktricks-training.md}}
Información Básica
En Vercel, un Equipo es el entorno completo que pertenece a un cliente y un proyecto es una aplicación.
Para una revisión de endurecimiento de Vercel, necesitas solicitar un usuario con permiso de rol de Visualizador o al menos permiso de visualizador de proyecto sobre los proyectos para verificar (en caso de que solo necesites revisar los proyectos y no la configuración del Equipo también).
Configuraciones del Proyecto
General
Propósito: Administrar configuraciones fundamentales del proyecto, como el nombre del proyecto, el marco y las configuraciones de construcción.
Configuraciones de Seguridad:
- Transferencia
- Mala Configuración: Permite transferir el proyecto a otro equipo
- Riesgo: Un atacante podría robar el proyecto
- Eliminar Proyecto
- Mala Configuración: Permite eliminar el proyecto
- Riesgo: Eliminar el proyecto
Dominios
Propósito: Administrar dominios personalizados, configuraciones de DNS y configuraciones de SSL.
Configuraciones de Seguridad:
- Errores de Configuración de DNS
- Mala Configuración: Registros DNS incorrectos (A, CNAME) apuntando a servidores maliciosos.
- Riesgo: Secuestro de dominio, interceptación de tráfico y ataques de phishing.
- Gestión de Certificados SSL/TLS
- Mala Configuración: Uso de certificados SSL/TLS débiles o caducados.
- Riesgo: Vulnerable a ataques de hombre en el medio (MITM), comprometiendo la integridad y confidencialidad de los datos.
- Implementación de DNSSEC
- Mala Configuración: No habilitar DNSSEC o configuraciones incorrectas de DNSSEC.
- Riesgo: Aumento de la susceptibilidad a ataques de suplantación de DNS y envenenamiento de caché.
- Entorno utilizado por dominio
- Mala Configuración: Cambiar el entorno utilizado por el dominio en producción.
- Riesgo: Exponer secretos o funcionalidades potenciales que no deberían estar disponibles en producción.
Entornos
Propósito: Definir diferentes entornos (Desarrollo, Vista previa, Producción) con configuraciones y variables específicas.
Configuraciones de Seguridad:
- Aislamiento de Entorno
- Mala Configuración: Compartir variables de entorno entre entornos.
- Riesgo: Filtración de secretos de producción en entornos de desarrollo o vista previa, aumentando la exposición.
- Acceso a Entornos Sensibles
- Mala Configuración: Permitir un acceso amplio a entornos de producción.
- Riesgo: Cambios no autorizados o acceso a aplicaciones en vivo, lo que puede llevar a tiempos de inactividad o filtraciones de datos.
Variables de Entorno
Propósito: Administrar variables y secretos específicos del entorno utilizados por la aplicación.
Configuraciones de Seguridad:
- Exposición de Variables Sensibles
- Mala Configuración: Prefijar variables sensibles con
NEXT_PUBLIC_, haciéndolas accesibles en el lado del cliente. - Riesgo: Exposición de claves API, credenciales de base de datos u otros datos sensibles al público, lo que lleva a filtraciones de datos.
- Sensibles deshabilitados
- Mala Configuración: Si está deshabilitado (por defecto), es posible leer los valores de los secretos generados.
- Riesgo: Aumento de la probabilidad de exposición accidental o acceso no autorizado a información sensible.
- Variables de Entorno Compartidas
- Mala Configuración: Estas son variables de entorno establecidas a nivel de Equipo y también podrían contener información sensible.
- Riesgo: Aumento de la probabilidad de exposición accidental o acceso no autorizado a información sensible.
Git
Propósito: Configurar integraciones de repositorios de Git, protecciones de ramas y desencadenadores de implementación.
Configuraciones de Seguridad:
- Paso de Construcción Ignorado (TODO)
- Mala Configuración: Parece que esta opción permite configurar un script/commandos bash que se ejecutará cuando se empuje un nuevo commit en Github, lo que podría permitir RCE.
- Riesgo: TBD
Integraciones
Propósito: Conectar servicios y herramientas de terceros para mejorar las funcionalidades del proyecto.
Configuraciones de Seguridad:
- Integraciones de Terceros Inseguras
- Mala Configuración: Integrarse con servicios de terceros no confiables o inseguros.
- Riesgo: Introducción de vulnerabilidades, filtraciones de datos o puertas traseras a través de integraciones comprometidas.
- Integraciones con Permisos Excesivos
- Mala Configuración: Conceder permisos excesivos a servicios integrados.
- Riesgo: Acceso no autorizado a recursos del proyecto, manipulación de datos o interrupciones del servicio.
- Falta de Monitoreo de Integraciones
- Mala Configuración: No monitorear ni auditar integraciones de terceros.
- Riesgo: Detección tardía de integraciones comprometidas, aumentando el impacto potencial de las brechas de seguridad.
Protección de Implementación
Propósito: Asegurar implementaciones a través de varios mecanismos de protección, controlando quién puede acceder y desplegar en tus entornos.
Configuraciones de Seguridad:
Autenticación de Vercel
- Mala Configuración: Deshabilitar la autenticación o no hacer cumplir las verificaciones de miembros del equipo.
- Riesgo: Usuarios no autorizados pueden acceder a implementaciones, lo que lleva a filtraciones de datos o mal uso de la aplicación.
Bypass de Protección para Automatización
- Mala Configuración: Exponer el secreto de bypass públicamente o usar secretos débiles.
- Riesgo: Los atacantes pueden eludir las protecciones de implementación, accediendo y manipulando implementaciones protegidas.
Enlaces Compartibles
- Mala Configuración: Compartir enlaces indiscriminadamente o no revocar enlaces obsoletos.
- Riesgo: Acceso no autorizado a implementaciones protegidas, eludiendo autenticación y restricciones de IP.
Opciones de Lista Blanca
- Mala Configuración: Permitir rutas demasiado amplias o puntos finales sensibles.
- Riesgo: Los atacantes pueden explotar rutas no protegidas para realizar acciones no autorizadas o eludir verificaciones de seguridad.
Protección por Contraseña
- Mala Configuración: Usar contraseñas débiles o compartirlas de manera insegura.
- Riesgo: Acceso no autorizado a implementaciones si las contraseñas son adivinadas o filtradas.
- Nota: Disponible en el plan Pro como parte de Protección Avanzada de Implementación por un adicional de $150/mes.
Excepciones de Protección de Implementación
- Mala Configuración: Agregar dominios de producción o sensibles a la lista de excepciones inadvertidamente.
- Riesgo: Exposición de implementaciones críticas al público, lo que lleva a filtraciones de datos o acceso no autorizado.
- Nota: Disponible en el plan Pro como parte de Protección Avanzada de Implementación por un adicional de $150/mes.
IPs de Confianza
- Mala Configuración: Especificar incorrectamente direcciones IP o rangos CIDR.
- Riesgo: Usuarios legítimos siendo bloqueados o IPs no autorizadas ganando acceso.
- Nota: Disponible en el plan Enterprise.
Funciones
Propósito: Configurar funciones sin servidor, incluyendo configuraciones de tiempo de ejecución, asignación de memoria y políticas de seguridad.
Configuraciones de Seguridad:
- Nada
Caché de Datos
Propósito: Administrar estrategias y configuraciones de caché para optimizar el rendimiento y controlar el almacenamiento de datos.
Configuraciones de Seguridad:
- Purgar Caché
- Mala Configuración: Permite eliminar toda la caché.
- Riesgo: Usuarios no autorizados eliminando la caché, lo que lleva a un posible DoS.
Trabajos Cron
Propósito: Programar tareas y scripts automatizados para que se ejecuten en intervalos específicos.
Configuraciones de Seguridad:
- Deshabilitar Trabajo Cron
- Mala Configuración: Permite deshabilitar trabajos cron declarados dentro del código
- Riesgo: Posible interrupción del servicio (dependiendo de para qué estaban destinados los trabajos cron)
Drenajes de Registro
Propósito: Configurar servicios de registro externos para capturar y almacenar registros de aplicaciones para monitoreo y auditoría.
Configuraciones de Seguridad:
- Nada (gestionado desde la configuración de equipos)
Seguridad
Propósito: Centro central para varias configuraciones relacionadas con la seguridad que afectan el acceso al proyecto, la protección de la fuente y más.
Configuraciones de Seguridad:
Registros de Construcción y Protección de Fuente
- Mala Configuración: Deshabilitar la protección o exponer públicamente las rutas
/logsy/src. - Riesgo: Acceso no autorizado a registros de construcción y código fuente, lo que lleva a filtraciones de información y posible explotación de vulnerabilidades.
Protección de Fork de Git
- Mala Configuración: Permitir solicitudes de extracción no autorizadas sin revisiones adecuadas.
- Riesgo: Código malicioso puede ser fusionado en la base de código, introduciendo vulnerabilidades o puertas traseras.
Acceso Seguro al Backend con Federación OIDC
- Mala Configuración: Configurar incorrectamente los parámetros de OIDC o usar URLs de emisor inseguras.
- Riesgo: Acceso no autorizado a servicios de backend a través de flujos de autenticación defectuosos.
Política de Retención de Implementaciones
- Mala Configuración: Establecer períodos de retención demasiado cortos (perdiendo el historial de implementaciones) o demasiado largos (retención innecesaria de datos).
- Riesgo: Incapacidad para realizar retrocesos cuando sea necesario o aumento del riesgo de exposición de datos de implementaciones antiguas.
Implementaciones Recientemente Eliminadas
- Mala Configuración: No monitorear implementaciones eliminadas o depender únicamente de eliminaciones automatizadas.
- Riesgo: Pérdida de historial crítico de implementaciones, dificultando auditorías y retrocesos.
Avanzado
Propósito: Acceso a configuraciones adicionales del proyecto para ajustar configuraciones y mejorar la seguridad.
Configuraciones de Seguridad:
Listado de Directorios
- Mala Configuración: Habilitar el listado de directorios permite a los usuarios ver el contenido del directorio sin un archivo de índice.
- Riesgo: Exposición de archivos sensibles, estructura de la aplicación y posibles puntos de entrada para ataques.
Cortafuegos del Proyecto
Cortafuegos
Configuraciones de Seguridad:
Habilitar Modo de Desafío de Ataque
- Mala Configuración: Habilitar esto mejora las defensas de la aplicación web contra DoS, pero a costa de la usabilidad
- Riesgo: Problemas potenciales de experiencia del usuario.
Reglas Personalizadas y Bloqueo de IP
- Mala Configuración: Permite desbloquear/bloquear tráfico
- Riesgo: Potencial DoS permitiendo tráfico malicioso o bloqueando tráfico benigno
Implementación del Proyecto
Fuente
- Mala Configuración: Permite acceso para leer el código fuente completo de la aplicación
- Riesgo: Exposición potencial de información sensible
Protección contra Desviaciones
- Mala Configuración: Esta protección asegura que la aplicación del cliente y del servidor siempre estén usando la misma versión, por lo que no hay desincronizaciones donde el cliente usa una versión diferente de la del servidor y, por lo tanto, no se entienden entre sí.
- Riesgo: Deshabilitar esto (si está habilitado) podría causar problemas de DoS en nuevas implementaciones en el futuro
Configuraciones del Equipo
General
Configuraciones de Seguridad:
- Transferencia
- Mala Configuración: Permite transferir todos los proyectos a otro equipo
- Riesgo: Un atacante podría robar los proyectos
- Eliminar Proyecto
- Mala Configuración: Permite eliminar el equipo con todos los proyectos
- Riesgo: Eliminar los proyectos
Facturación
Configuraciones de Seguridad:
- Límite de Costo de Speed Insights
- Mala Configuración: Un atacante podría aumentar este número
- Riesgo: Aumento de costos
Miembros
Configuraciones de Seguridad:
- Agregar miembros
- Mala Configuración: Un atacante podría mantener persistencia invitando a una cuenta que controla
- Riesgo: Persistencia del atacante
- Roles
- Mala Configuración: Conceder demasiados permisos a personas que no los necesitan aumenta el riesgo de la configuración de Vercel. Verifica todos los roles posibles en https://vercel.com/docs/accounts/team-members-and-roles/access-roles
- Riesgo: Aumentar la exposición del Equipo de Vercel
Grupos de Acceso
Un Grupo de Acceso en Vercel es una colección de proyectos y miembros del equipo con asignaciones de roles predefinidas, lo que permite una gestión de acceso centralizada y simplificada a través de múltiples proyectos.
Posibles Mala Configuraciones:
- Sobre-Permisos a Miembros: Asignar roles con más permisos de los necesarios, lo que lleva a acceso o acciones no autorizadas.
- Asignaciones de Rol Incorrectas: Asignar incorrectamente roles que no se alinean con las responsabilidades de los miembros del equipo, causando escalada de privilegios.
- Falta de Segregación de Proyectos: No separar proyectos sensibles, permitiendo un acceso más amplio del que se pretendía.
- Gestión Insuficiente de Grupos: No revisar o actualizar regularmente los Grupos de Acceso, resultando en permisos de acceso obsoletos o inapropiados.
- Definiciones de Rol Inconsistentes: Usar definiciones de rol inconsistentes o poco claras en diferentes Grupos de Acceso, llevando a confusión y brechas de seguridad.
Drenajes de Registro
Configuraciones de Seguridad:
- Drenajes de Registro a terceros:
- Mala Configuración: Un atacante podría configurar un Drenaje de Registro para robar los registros
- Riesgo: Persistencia parcial
Seguridad y Privacidad
Configuraciones de Seguridad:
- Dominio de Correo Electrónico del Equipo: Cuando se configura, esta configuración invita automáticamente a Cuentas Personales de Vercel con direcciones de correo electrónico que terminan en el dominio especificado (por ejemplo,
mydomain.com) a unirse a tu equipo al registrarse y en el panel de control. - Mala Configuración:
- Especificar el dominio de correo electrónico incorrecto o un dominio mal escrito en la configuración del Dominio de Correo Electrónico del Equipo.
- Usar un dominio de correo electrónico común (por ejemplo,
gmail.com,hotmail.com) en lugar de un dominio específico de la empresa. - Riesgos:
- Acceso No Autorizado: Usuarios con direcciones de correo electrónico de dominios no deseados pueden recibir invitaciones para unirse a tu equipo.
- Exposición de Datos: Exposición potencial de información sensible del proyecto a individuos no autorizados.
- Ámbitos de Git Protegidos: Te permite agregar hasta 5 ámbitos de Git a tu equipo para evitar que otros equipos de Vercel implementen repositorios del ámbito protegido. Múltiples equipos pueden especificar el mismo ámbito, permitiendo el acceso a ambos equipos.
- Mala Configuración: No agregar ámbitos críticos de Git a la lista protegida.
- Riesgos:
- Implementaciones No Autorizadas: Otros equipos pueden implementar repositorios de los ámbitos de Git de tu organización sin autorización.
- Exposición de Propiedad Intelectual: Código propietario podría ser implementado y accesado fuera de tu equipo.
- Políticas de Variables de Entorno: Hace cumplir políticas para la creación y edición de las variables de entorno del equipo. Específicamente, puedes hacer cumplir que todas las variables de entorno se creen como Variables de Entorno Sensibles, que solo pueden ser desencriptadas por el sistema de implementación de Vercel.
- Mala Configuración: Mantener la aplicación de variables de entorno sensibles deshabilitada.
- Riesgos:
- Exposición de Secretos: Las variables de entorno pueden ser vistas o editadas por miembros no autorizados del equipo.
- Filtración de Datos: Información sensible como claves API y credenciales podría ser filtrada.
- Registro de Auditoría: Proporciona una exportación de la actividad del equipo por hasta los últimos 90 días. Los registros de auditoría ayudan a monitorear y rastrear acciones realizadas por los miembros del equipo.
- Mala Configuración:
Conceder acceso a registros de auditoría a miembros no autorizados del equipo. - Riesgos:
- Violaciones de Privacidad: Exposición de actividades y datos sensibles de usuarios.
- Manipulación de Registros: Actores maliciosos podrían alterar o eliminar registros para cubrir sus huellas.
- SAML Single Sign-On: Permite la personalización de la autenticación SAML y la sincronización de directorios para tu equipo, habilitando la integración con un Proveedor de Identidad (IdP) para autenticación y gestión de usuarios centralizadas.
- Mala Configuración: Un atacante podría crear una puerta trasera en la configuración del Equipo estableciendo parámetros SAML como ID de Entidad, URL de SSO o huellas digitales de certificados.
- Riesgo: Mantener persistencia
- Visibilidad de Direcciones IP: Controla si las direcciones IP, que pueden considerarse información personal bajo ciertas leyes de protección de datos, se muestran en consultas de Monitoreo y Drenajes de Registro.
- Mala Configuración: Dejar habilitada la visibilidad de direcciones IP sin necesidad.
- Riesgos:
- Violaciones de Privacidad: No cumplimiento con regulaciones de protección de datos como GDPR.
- Repercusiones Legales: Posibles multas y sanciones por manejo inadecuado de datos personales.
- Bloqueo de IP: Permite la configuración de direcciones IP y rangos CIDR que Vercel debería bloquear en las solicitudes. Las solicitudes bloqueadas no contribuyen a tu facturación.
- Mala Configuración: Podría ser abusada por un atacante para permitir tráfico malicioso o bloquear tráfico legítimo.
- Riesgos:
- Denegación de Servicio a Usuarios Legítimos: Bloqueo de acceso para usuarios o socios válidos.
- Interrupciones Operativas: Pérdida de disponibilidad del servicio para ciertas regiones o clientes.
Cómputo Seguro
Vercel Secure Compute permite conexiones seguras y privadas entre Funciones de Vercel y entornos de backend (por ejemplo, bases de datos) estableciendo redes aisladas con direcciones IP dedicadas. Esto elimina la necesidad de exponer servicios de backend públicamente, mejorando la seguridad, el cumplimiento y la privacidad.
Posibles Mala Configuraciones y Riesgos
- Selección Incorrecta de Región de AWS
- Mala Configuración: Elegir una región de AWS para la red de Cómputo Seguro que no coincida con la región de los servicios de backend.
- Riesgo: Aumento de latencia, posibles problemas de cumplimiento de residencia de datos y degradación del rendimiento.
- Bloques CIDR Superpuestos
- Mala Configuración: Seleccionar bloques CIDR que se superpongan con VPC existentes u otras redes.
- Riesgo: Conflictos de red que llevan a conexiones fallidas, acceso no autorizado o filtración de datos entre redes.
- Configuración Incorrecta de Peering de VPC
- Mala Configuración: Configurar incorrectamente el peering de VPC (por ejemplo, IDs de VPC incorrectos, actualizaciones incompletas de la tabla de rutas).
- Riesgo: Acceso no autorizado a la infraestructura de backend, conexiones seguras fallidas y posibles filtraciones de datos.
- Asignaciones Excesivas de Proyectos
- Mala Configuración: Asignar múltiples proyectos a una sola red de Cómputo Seguro sin el aislamiento adecuado.
- Riesgo: La exposición compartida de IP aumenta la superficie de ataque, permitiendo que proyectos comprometidos afecten a otros.
- Gestión Inadecuada de Direcciones IP
- Mala Configuración: No gestionar o rotar adecuadamente las direcciones IP dedicadas.
- Riesgo: Suplantación de IP, vulnerabilidades de seguimiento y posible inclusión en listas negras si las IP están asociadas con actividades maliciosas.
- Incluir Contenedores de Construcción Innecesariamente
- Mala Configuración: Agregar contenedores de construcción a la red de Cómputo Seguro cuando no se requiere acceso de backend durante las construcciones.
- Riesgo: Superficie de ataque expandida, retrasos en la provisión y consumo innecesario de recursos de red.
- Falta de Manejo Seguro de Secretos de Bypass
- Mala Configuración: Exponer o manejar incorrectamente secretos utilizados para eludir protecciones de implementación.
- Riesgo: Acceso no autorizado a implementaciones protegidas, permitiendo a los atacantes manipular o implementar código malicioso.
- Ignorar Configuraciones de Failover de Región
- Mala Configuración: No configurar regiones de failover pasivas o configurar incorrectamente las configuraciones de failover.
- Riesgo: Tiempo de inactividad del servicio durante interrupciones en la región principal, llevando a una disponibilidad reducida y posible inconsistencia de datos.
- Exceder Límites de Conexión de Peering de VPC
- Mala Configuración: Intentar establecer más conexiones de peering de VPC de las permitidas (por ejemplo, exceder 50 conexiones).
- Riesgo: Incapacidad para conectar de manera segura los servicios de backend necesarios, causando fallos en las implementaciones y interrupciones operativas.
- Configuraciones de Red Inseguras
- Mala Configuración: Reglas de firewall débiles, falta de cifrado o segmentación de red inadecuada dentro de la red de Cómputo Seguro.
- Riesgo: Intercepción de datos, acceso no autorizado a servicios de backend y mayor vulnerabilidad a ataques.
Variables de Entorno
Propósito: Administrar variables y secretos específicos del entorno utilizados por todos los proyectos.
Configuraciones de Seguridad:
- Exposición de Variables Sensibles
- Mala Configuración: Prefijar variables sensibles con
NEXT_PUBLIC_, haciéndolas accesibles en el lado del cliente. - Riesgo: Exposición de claves API, credenciales de base de datos u otros datos sensibles al público, lo que lleva a filtraciones de datos.
- Sensibles deshabilitados
- Mala Configuración: Si está deshabilitado (por defecto), es posible leer los valores de los secretos generados.
- Riesgo: Aumento de la probabilidad de exposición accidental o acceso no autorizado a información sensible.
{{#include ../banners/hacktricks-training.md}}