mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-18 07:35:41 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Serverless.com Security
|
||||
# Seguridad de Serverless.com
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -96,7 +96,7 @@ WriteCapacityUnits: 1
|
||||
|
||||
<summary>Proveedor</summary>
|
||||
|
||||
El **Proveedor** objeto especifica el proveedor de servicios en la nube (por ejemplo, AWS, Azure, Google Cloud) y contiene configuraciones relevantes para ese proveedor.
|
||||
El objeto **Proveedor** especifica el proveedor de servicios en la nube (por ejemplo, AWS, Azure, Google Cloud) y contiene configuraciones relevantes para ese proveedor.
|
||||
|
||||
Incluye detalles como el tiempo de ejecución, la región, la etapa y las credenciales.
|
||||
```yaml
|
||||
@@ -112,7 +112,7 @@ stage: dev
|
||||
|
||||
<summary>Etapa y Región</summary>
|
||||
|
||||
La etapa representa diferentes entornos (por ejemplo, desarrollo, preproducción, producción) donde su servicio puede ser desplegado. Permite configuraciones y despliegues específicos del entorno.
|
||||
La etapa representa diferentes entornos (por ejemplo, desarrollo, preproducción, producción) donde tu servicio puede ser desplegado. Permite configuraciones y despliegues específicos del entorno.
|
||||
```yaml
|
||||
provider:
|
||||
stage: dev
|
||||
@@ -140,7 +140,7 @@ plugins:
|
||||
|
||||
<summary>Capas</summary>
|
||||
|
||||
**Capas** te permiten empaquetar y gestionar código compartido o dependencias por separado de tus funciones. Esto promueve la reutilización y reduce el tamaño de los paquetes de despliegue. Se definen en la sección `layers` y son referenciadas por las funciones.
|
||||
**Capas** te permiten empaquetar y gestionar código compartido o dependencias por separado de tus funciones. Esto promueve la reutilización y reduce el tamaño de los paquetes de implementación. Se definen en la sección `layers` y son referenciadas por las funciones.
|
||||
```yaml
|
||||
layers:
|
||||
commonLibs:
|
||||
@@ -183,7 +183,7 @@ stage: ${opt:stage, 'dev'}
|
||||
|
||||
<summary>Salidas</summary>
|
||||
|
||||
**Salidas** definen los valores que se devuelven después de que un servicio es implementado, como ARNs de recursos, puntos finales u otra información útil. Se especifican en la sección `outputs` y a menudo se utilizan para exponer información a otros servicios o para un acceso fácil después de la implementación.
|
||||
**Salidas** definen los valores que se devuelven después de que un servicio es implementado, como ARNs de recursos, puntos finales u otra información útil. Se especifican en la sección `outputs` y a menudo se utilizan para exponer información a otros servicios o para un fácil acceso después de la implementación.
|
||||
```yaml
|
||||
¡outputs:
|
||||
ApiEndpoint:
|
||||
@@ -243,7 +243,7 @@ TABLE_NAME: ${self:custom.tableName}
|
||||
|
||||
<summary>Dependencias</summary>
|
||||
|
||||
**Dependencias** gestionan las bibliotecas y módulos externos que requieren tus funciones. Normalmente se manejan a través de administradores de paquetes como npm o pip, y se empaquetan con tu paquete de despliegue utilizando herramientas o complementos como `serverless-webpack`.
|
||||
**Dependencias** gestionan las bibliotecas y módulos externos que requieren tus funciones. Generalmente se manejan a través de administradores de paquetes como npm o pip, y se empaquetan con tu paquete de despliegue utilizando herramientas o complementos como `serverless-webpack`.
|
||||
```yaml
|
||||
plugins:
|
||||
- serverless-webpack
|
||||
@@ -325,7 +325,7 @@ method: get
|
||||
|
||||
4. Crea un proveedor de AWS, yendo al **dashboard** en `https://app.serverless.com/<org name>/settings/providers?providerId=new&provider=aws`.
|
||||
1. Para dar acceso a `serverless.com` a AWS, pedirá ejecutar una pila de cloudformation usando este archivo de configuración (en el momento de escribir esto): [https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml](https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml)
|
||||
2. Esta plantilla genera un rol llamado **`SFRole-<ID>`** con **`arn:aws:iam::aws:policy/AdministratorAccess`** sobre la cuenta con una Identidad de Confianza que permite a la cuenta de AWS de `Serverless.com` acceder al rol.
|
||||
2. Esta plantilla genera un rol llamado **`SFRole-<ID>`** con **`arn:aws:iam::aws:policy/AdministratorAccess`** sobre la cuenta con una Identidad de Confianza que permite que la cuenta de AWS de `Serverless.com` acceda al rol.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -482,7 +482,7 @@ TableName: ${self:service}-customerTable-${sls:stage}
|
||||
{{#endtabs }}
|
||||
|
||||
6. Despliegue ejecutando **`serverless deploy`**
|
||||
1. El despliegue se realizará a través de una pila de CloudFormation
|
||||
1. El despliegue se realizará a través de un CloudFormation Stack
|
||||
2. Tenga en cuenta que las **lambdas están expuestas a través de API gateway** y no a través de URLs directas
|
||||
7. **Pruébelo**
|
||||
1. El paso anterior imprimirá las **URLs** donde se han desplegado las funciones lambda de sus puntos finales de API
|
||||
@@ -564,10 +564,10 @@ provider:
|
||||
environment:
|
||||
DB_PASSWORD: ${ssm:/aws/reference/secretsmanager/my-db-password~true}
|
||||
```
|
||||
And even if this prevents hardcoding the environment variable value in the **`serverless.yml`** file, the value will be obtained at deployment time and will be **added in clear text inside the lambda environment variable**.
|
||||
Y incluso si esto previene la codificación dura del valor de la variable de entorno en el **`serverless.yml`**, el valor se obtendrá en el momento de la implementación y se **agregará en texto claro dentro de la variable de entorno de lambda**.
|
||||
|
||||
> [!TIP]
|
||||
> La forma recomendada de almacenar variables de entorno usando serveless.com sería **almacenarla en un secreto de AWS** y solo almacenar el nombre del secreto en la variable de entorno y el **código lambda debería recogerlo**.
|
||||
> La forma recomendada de almacenar variables de entorno usando serveless.com sería **almacenarla en un secreto de AWS** y solo almacenar el nombre del secreto en la variable de entorno y el **código de lambda debería recogerlo**.
|
||||
|
||||
#### **Estrategias de Mitigación**
|
||||
|
||||
@@ -592,7 +592,7 @@ plugins:
|
||||
```
|
||||
|
||||
- **Validación de Entradas:** Implementar una validación y sanitización estrictas de todas las entradas.
|
||||
- **Revisiones de Código:** Realizar revisiones exhaustivas para identificar fallos de seguridad.
|
||||
- **Revisiones de Código:** Realizar revisiones exhaustivas para identificar fallas de seguridad.
|
||||
- **Análisis Estático:** Utilizar herramientas para detectar vulnerabilidades en la base de código.
|
||||
|
||||
---
|
||||
@@ -665,7 +665,7 @@ headers:
|
||||
|
||||
---
|
||||
|
||||
### **Aislamiento de Funciones Insuficiente**
|
||||
### **Aislamiento Insuficiente de Funciones**
|
||||
|
||||
Recursos compartidos y un aislamiento inadecuado pueden llevar a escalaciones de privilegios o interacciones no deseadas entre funciones.
|
||||
|
||||
@@ -759,7 +759,7 @@ Usar plugins de terceros no verificados o maliciosos puede introducir vulnerabil
|
||||
|
||||
#### **Estrategias de Mitigación**
|
||||
|
||||
- **Evaluar Plugins a Fondo:** Evaluar la seguridad de los plugins antes de la integración, favoreciendo aquellos de fuentes reputables.
|
||||
- **Evaluar Plugins a Fondo:** Evaluar la seguridad de los plugins antes de la integración, favoreciendo aquellos de fuentes reputadas.
|
||||
- **Limitar el Uso de Plugins:** Usar solo los plugins necesarios para minimizar la superficie de ataque.
|
||||
- **Monitorear Actualizaciones de Plugins:** Mantener los plugins actualizados para beneficiarse de parches de seguridad.
|
||||
- **Aislar Entornos de Plugins:** Ejecutar plugins en entornos aislados para contener posibles compromisos.
|
||||
@@ -774,14 +774,14 @@ Funciones accesibles públicamente o APIs sin restricciones pueden ser explotada
|
||||
|
||||
- **Restringir el Acceso a Funciones:** Usar VPCs, grupos de seguridad y reglas de firewall para limitar el acceso a fuentes confiables.
|
||||
- **Implementar Autenticación Robusta:** Asegurarse de que todos los puntos finales expuestos requieran autenticación y autorización adecuadas.
|
||||
- **Usar API Gateways de Forma Segura:** Configurar API Gateways para hacer cumplir políticas de seguridad, incluyendo validación de entradas y limitación de tasas.
|
||||
- **Usar API Gateways de Forma Segura:** Configurar API Gateways para hacer cumplir políticas de seguridad, incluyendo validación de entradas y limitación de tasa.
|
||||
- **Deshabilitar Puntos Finales No Utilizados:** Revisar regularmente y deshabilitar cualquier punto final que ya no esté en uso.
|
||||
|
||||
---
|
||||
|
||||
### **Permisos Excesivos para Miembros del Equipo y Colaboradores Externos**
|
||||
|
||||
Conceder permisos excesivos a miembros del equipo y colaboradores externos puede llevar a acceso no autorizado, brechas de datos y uso indebido de recursos. Este riesgo se incrementa en entornos donde múltiples individuos tienen diferentes niveles de acceso, aumentando la superficie de ataque y el potencial de amenazas internas.
|
||||
Conceder permisos excesivos a miembros del equipo y colaboradores externos puede llevar a acceso no autorizado, brechas de datos y uso indebido de recursos. Este riesgo se agrava en entornos donde múltiples individuos tienen diferentes niveles de acceso, aumentando la superficie de ataque y el potencial de amenazas internas.
|
||||
|
||||
#### **Estrategias de Mitigación**
|
||||
|
||||
@@ -791,17 +791,17 @@ Conceder permisos excesivos a miembros del equipo y colaboradores externos puede
|
||||
|
||||
### **Seguridad de Claves de Acceso y Claves de Licencia**
|
||||
|
||||
**Claves de Acceso** y **Claves de Licencia** son credenciales críticas utilizadas para autenticar y autorizar interacciones con la CLI de Serverless Framework.
|
||||
**Claves de Acceso** y **Claves de Licencia** son credenciales críticas utilizadas para autenticar y autorizar interacciones con el CLI de Serverless Framework.
|
||||
|
||||
- **Claves de Licencia:** Son identificadores únicos requeridos para autenticar el acceso a Serverless Framework Versión 4 que permite iniciar sesión a través de la CLI.
|
||||
- **Claves de Acceso:** Credenciales que permiten a la CLI de Serverless Framework autenticarse con el Dashboard de Serverless Framework. Al iniciar sesión con la CLI `serverless`, se generará y almacenará una clave de acceso en la **computadora portátil**. También puede configurarse como una variable de entorno llamada `SERVERLESS_ACCESS_KEY`.
|
||||
- **Claves de Licencia:** Son identificadores únicos requeridos para autenticar el acceso a Serverless Framework Versión 4 que permite iniciar sesión a través del CLI.
|
||||
- **Claves de Acceso:** Credenciales que permiten al CLI de Serverless Framework autenticarse con el Dashboard de Serverless Framework. Al iniciar sesión con el cli `serverless`, se generará y almacenará una clave de acceso en la **computadora portátil**. También puede configurarse como una variable de entorno llamada `SERVERLESS_ACCESS_KEY`.
|
||||
|
||||
#### **Riesgos de Seguridad**
|
||||
|
||||
1. **Exposición a Través de Repositorios de Código:**
|
||||
- Codificar o comprometer accidentalmente Claves de Acceso y Claves de Licencia en sistemas de control de versiones puede llevar a acceso no autorizado.
|
||||
2. **Almacenamiento Inseguro:**
|
||||
- Almacenar claves en texto plano dentro de variables de entorno o archivos de configuración sin la encriptación adecuada aumenta la probabilidad de filtraciones.
|
||||
- Almacenar claves en texto claro dentro de variables de entorno o archivos de configuración sin la encriptación adecuada aumenta la probabilidad de filtraciones.
|
||||
3. **Distribución Inadecuada:**
|
||||
- Compartir claves a través de canales no seguros (por ejemplo, correo electrónico, chat) puede resultar en la interceptación por actores maliciosos.
|
||||
4. **Falta de Rotación:**
|
||||
|
||||
Reference in New Issue
Block a user