Slide 1

Slide 1 text

Seguridad en arquitecturas serverless y entornos cloud José Manuel Ortega

Slide 2

Slide 2 text

Agenda ● Introducción a las arquitecturas serverless ● Seguridad en arquitecturas serverless ● OWASP Serverless Top 10 ● Pentesting sobre aplicaciones cloud ● Mejores prácticas de seguridad al trabajar en entornos cloud

Slide 3

Slide 3 text

Introducción a las arquitecturas serverless ● AWS: AWS Lambda a. https://aws.amazon.com/lambda ● Microsoft Azure: Azure Functions a. https://azure.microsoft.com/en-us/services/functions ● Google Cloud: Cloud Functions a. https://cloud.google.com/functions

Slide 4

Slide 4 text

Introducción a las arquitecturas serverless https://aws.amazon.com/es/compliance/shared-responsibility-model

Slide 5

Slide 5 text

Introducción a las arquitecturas serverless ● Flexibilidad, administración y escalado de los recursos necesarios por parte del proveedor. ● Suministro ágil de los recursos en tiempo real, incluso en caso de picos de carga imprevisibles o un crecimiento desproporcionado. ● Solo se cobran los gastos por recursos que realmente se han usado. ● Tolerancia a fallos gracias a la infraestructura flexible de hardware en los centros de cálculo del proveedor.

Slide 6

Slide 6 text

Introducción a las arquitecturas serverless Ventajas Inconvenientes Escalado y administración de los recursos necesarios por parte del proveedor Se restringe el acceso a máquinas virtuales y sistemas operativos. Suministro ágil de los recursos en tiempo real, incluso en caso de picos de carga imprevisibles o un crecimiento desproporcionado Gran dependencia del proveedor (“efecto Lock-in”): en caso de cambiar de operador, por ejemplo, suele ser necesario escribir nuevamente todas las funciones basadas en eventos. Solo se cobran gastos por recursos que realmente se han usado Procesos de monitorización y depuración de errores relativamente complejos, ya que, por norma general, no es posible realizar análisis profundos de errores y rendimiento. Gran tolerancia a errores gracias a la infraestructura flexible de hardware en los centros de cálculo del proveedor.

Slide 7

Slide 7 text

Introducción a las arquitecturas serverless ● FaaS (Function as a Service) ● Arquitectura basadas en eventos (EDA) ● Funciones sin estado ● Los flujos de trabajo y la ejecución de funciones se activan mediante eventos ● Los desencadenantes pueden iniciarse por acciones como entradas de usuario o cambios en una base de datos.

Slide 8

Slide 8 text

Introducción a las arquitecturas serverless

Slide 9

Slide 9 text

Introducción a las arquitecturas serverless ● Composición de varias funciones sin estado ● Gráfico acíclico dirigido (DAG)

Slide 10

Slide 10 text

Introducción a las arquitecturas serverless

Slide 11

Slide 11 text

Introducción a las arquitecturas serverless Disparadores/Eventos Dependiendo del proveedor: ▸ Cambios en bases de datos (Firebase, Dynamo) ▸ Cambios en un almacenamiento (S3, GS, FireStore) ▸ Cambios en la infraestructura ▸ Eventos en colas (SQS, PubSub) ▸ Acciones en Alexa, Google Home

Slide 12

Slide 12 text

Introducción a las arquitecturas serverless

Slide 13

Slide 13 text

Introducción a las arquitecturas serverless https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html

Slide 14

Slide 14 text

Introducción a las arquitecturas serverless

Slide 15

Slide 15 text

Seguridad en arquitecturas serverless ● Inyección de datos de eventos ● Mayor superficie de ataque ● Manipulación de la ejecución del flujo de funciones serverless ● Denegación de servicio y agotamiento de recursos financieros ● Manejo inadecuado de excepciones y mensajes de error

Slide 16

Slide 16 text

Ataques De Inyección ● SQL ● Cross site scripting(XSS) ● De comandos

Slide 17

Slide 17 text

Ataques que se minimizan ● Fuerza bruta ● Ataques DDoS

Slide 18

Slide 18 text

Ataques DDoS ● En Serverless, una función no puede recibir más de una invocación concurrente, por lo que nuevas llamadas levantarán nuevas instancias de funciones. ● En esta situación un ataque DDoS podría provocar que se levantaran miles de instancias de una función agotando así todos los recursos de la infraestructura, pudiendo afectar incluso a otras funciones que no se puedan levantar debido a esto. ● Es necesario por tanto que nuestro proveedor serverless nos permita definir el número máximo de peticiones concurrentes (o instancias en este caso) tanto de toda la plataforma como de cada una de las funciones.

Slide 19

Slide 19 text

Ataques DDoS ● Concurrencia ● Número de transacciones por segundo

Slide 20

Slide 20 text

Ataques DDoS

Slide 21

Slide 21 text

Ataques DDoS

Slide 22

Slide 22 text

Ataques DoW(Denial of Wallet) ● Agotamiento de los recursos contratados ● Funciones con alto nivel de concurrencia ● Escalado automático en el uso de memoria y CPU

Slide 23

Slide 23 text

Ataques DoW(Denial of Wallet) ● Limitar el número de llamadas a funciones ● Limitar el acceso a los recursos ● Definir límite de presupuesto ● Usar herramientas como AWS Shield a. https://aws.amazon.com/es/shield

Slide 24

Slide 24 text

Ataques DoW(Denial of Wallet) https://aws.amazon.com/es/blogs/mt/introducing-service-quotas-view-and-manage-your-quotas-for-aws-ser vices-from-one-central-location

Slide 25

Slide 25 text

Ataques DoW(Denial of Wallet)

Slide 26

Slide 26 text

OWASP Serverless Top 10 ● SAS-1: Function Event Data Injection ● SAS-2: Broken Authentication ● SAS-3: Insecure Serverless Deployment Configuration ● SAS-4: Over-Privileged Function Permissions and Roles ● SAS-5: Inadequate Function Monitoring and Logging ● SAS-6: Insecure 3rd Party Dependencies ● SAS-7: Insecure Application Secrets Storage ● SAS-8: Denial of Service and Financial Resource Exhaustion ● SAS-9: Serverless Function Execution Flow Manipulation ● SAS-10: Improper Exception Handling and Verbose Error Messages https://owasp.org/www-pdf-archive/OWASP-Top-10-Serverless-Interpretation-en.pdf

Slide 27

Slide 27 text

Seguridad en arquitecturas serverless Risk/Attack vector Cloud applications (IaaS, PaaS) Serverless Applications (FaaS) Data Injection Impact level:3 Impact:4, increases the level of impact as it increases the attack surface. Broken Authentication and Access Control Impact:4 Impact:3, it is more difficult for an attacker to exploit a serverless function in isolation. Security Misconfiguration and insecure Serverless Deployment Configuration Impact:3 Impact:3, same impact level

Slide 28

Slide 28 text

Seguridad en arquitecturas serverless Risk/Attack vector Cloud applications (IaaS, PaaS) Serverless Applications (FaaS) Security Misconfiguration and Over-Privileged Function Permissions and Roles Impact level:3 Impact:3, same impact level Security Logging and Monitoring Failures Impact:2 Impact:3, higher impact level Vulnerable and Outdated Components Impact:3 Impact:3, same impact level

Slide 29

Slide 29 text

Seguridad en arquitecturas serverless Risk/Attack vector Cloud applications (IaaS, PaaS) Serverless Applications (FaaS) Software and Data Integrity Failures. 3rd Party Dependencies Impact level:4 Impact:3, the impact is reduced since the functions have finite execution time. Denial of Service & Financial Resource Exhaustion Impact:3 Impact:4, higher impact level due to the presence of the Denial of Wallet Serverless Functions Execution Flow Manipulation Impact:1 Impact:3, greater impact level since it is a new problem in serverless architectures

Slide 30

Slide 30 text

OWASP Serverless Top 10 ● SAS-1: Function Event Data Injection a. Inyección de código en funciones b. Inyección de comandos del sistema operativo c. Manipulación de mensajes en sistemas Publish/Subscribe d. Inyección NoSQL

Slide 31

Slide 31 text

OWASP Serverless Top 10

Slide 32

Slide 32 text

OWASP Serverless Top 10 ● SAS-4: Over-Privileged Function Permissions and Roles

Slide 33

Slide 33 text

OWASP Serverless Top 10 ● SAS-4: Over-Privileged Function Permissions and Roles dynamodb_client.put_item(TableName=TABLE_NAME, Item={"email": {"S": parser['From']}, "subject": {"S": parser['Subject']}, "received": {"S": str(datetime.utcnow()).split('.')[0]}, "filename": {"S": file_name}, "requestid": {'S': context.aws_request_id}, "content": {'S': pdf_content.decode("utf-8")}}) - Effect: Allow Action: - 'dynamodb:*' Resource: - 'arn:aws:dynamodb:us-east-1:****************:table/TABLE_NAME'

Slide 34

Slide 34 text

OWASP Serverless Top 10 ● SAS-4: Over-Privileged Function Permissions and Roles https://github.com/functionalone/serverless-iam-roles-per-function functions: func1: handler: handler.get iamRoleStatementsName: my-custom-role-name #optional custom role name setting instead of the default generated one iamRoleStatements: - Effect: "Allow" Action: - dynamodb:GetItem Resource: "arn:aws:dynamodb:${self:provider.region}:*:table/mytable"

Slide 35

Slide 35 text

OWASP Serverless Top 10 ● SAS-9: Functions Execution Flow Manipulation

Slide 36

Slide 36 text

Mitigaciones/contramedidas ● Tener un mayor control de los recursos ● Controlar el número de eventos que pueden desencadenar la ejecución de una función ● Desarrollar pequeñas funciones que realicen una tarea específica con una lógica de negocio mínima ● Uso de patrones de diseño para aplicaciones serverless

Slide 37

Slide 37 text

Serverless framework ● Especificar múltiples tiempos de ejecución (nodejs, go, python, etc) y proveedores (aws, azure). ● Desplegar desde línea de comandos en diferentes entornos (staging, producción). ● Controlar los recursos que se crearán, como tablas de DynamoDB, buckets de S3. ● Crear nuestra API con endpoints y funciones que se ejecutarán para cada método HTTP. ● Cambiar los parámetros de las funciones, el uso de memoria o el tiempo de ejecución de las funciones. https://www.serverless.com

Slide 38

Slide 38 text

Serverless vulnerable app https://github.com/ine-labs/AWSGoat https://github.com/OWASP/DVSA

Slide 39

Slide 39 text

Serverless vulnerable app

Slide 40

Slide 40 text

Serverless vulnerable app

Slide 41

Slide 41 text

Serverless vulnerable app

Slide 42

Slide 42 text

Serverless vulnerable app

Slide 43

Slide 43 text

Serverless vulnerable app

Slide 44

Slide 44 text

Serverless vulnerable app

Slide 45

Slide 45 text

Serverless vulnerable app https://github.com/OWASP/DVSA/blob/master/backend/src/functions/processing/send_receipt_email.py

Slide 46

Slide 46 text

Serverless vulnerable app https://github.com/OWASP/DVSA/blob/master/template.yml

Slide 47

Slide 47 text

Serverless vulnerable app https://github.com/OWASP/DVSA/blob/master/template.yml

Slide 48

Slide 48 text

Estrategias de seguridad entornos cloud

Slide 49

Slide 49 text

Pentesting sobre aplicaciones cloud https://cloudcustodian.io

Slide 50

Slide 50 text

Pentesting sobre aplicaciones cloud https://cloudcustodian.io

Slide 51

Slide 51 text

Pentesting sobre aplicaciones cloud https://github.com/prowler-cloud/prowler ● Prowler es una herramienta de seguridad de código abierto para realizar evaluaciones de las mejores prácticas de seguridad de AWS y Azure ● Permite realizar auditorías, respuesta a incidentes, monitorización continua, hardening y gestionar la revocación de secretos.

Slide 52

Slide 52 text

Pentesting sobre aplicaciones cloud

Slide 53

Slide 53 text

Pentesting sobre aplicaciones cloud aws configure export AWS_ACCESS_KEY_ID="ASXXXXXXX" export AWS_SECRET_ACCESS_KEY="XXXXXXXXX" export AWS_SESSION_TOKEN="XXXXXXXXX" arn:aws:iam::aws:policy/SecurityAudit arn:aws:iam::aws:policy/job-function/ViewOnlyAccess

Slide 54

Slide 54 text

Pentesting sobre aplicaciones cloud

Slide 55

Slide 55 text

Pentesting sobre aplicaciones cloud

Slide 56

Slide 56 text

Principales servicios de seguridad en AWS

Slide 57

Slide 57 text

Principales servicios de seguridad en AWS

Slide 58

Slide 58 text

Principales servicios de seguridad en AWS https://maturitymodel.security.aws.dev/es

Slide 59

Slide 59 text

Conclusiones ● https://github.com/puresec/sas-top-10 ● La mayoría de los riesgos de seguridad siguen presentes en serverless, presentados de forma diferente. ● Las aplicaciones sin servidor podrían aumentar en complejidad. ● Se reduce el impacto de los ataques de denegación de servicio (DoS), pero aparecen nuevos riesgos como la denegación de cartera (Denial of Wallet).

Slide 60

Slide 60 text

Conclusiones ● DoW adquiere mayor relevancia al conectar aplicaciones serverless con dispositivos IoT. ● Ataque DOW debido a la pérdida de control de la generación de eventos por peticiones realizadas desde dispositivos IoT. ● Control de la generación de eventos en aplicaciones. ● Sigue las mejores prácticas de diseño https://12factor.net/es/ y desarrollo de software seguro.

Slide 61

Slide 61 text

¡Gracias! @jmortegac https://www.linkedin.com /in/jmortega1 https://jmortega.github.io ¿Preguntas?