Slide 1

Slide 1 text

Seguridad de APIs en Drupal: herramientas, mejores prácticas y estrategias para asegurar las APIs José Manuel Ortega [email protected]

Slide 2

Slide 2 text

Agenda ● Introducir el concepto de seguridad en las APIs ● OWASP Top 10 y su importancia para la seguridad en APIs ● Herramientas para evaluar y mejorar la seguridad ● Módulos y herramientas de seguridad en Drupal ● Estrategias y mejores prácticas para garantizar la seguridad de tus APIs.

Slide 3

Slide 3 text

Introducir el concepto de seguridad en las APIs ● Amenazas comunes a la seguridad de las API ○ Ataques de inyección ○ Ataques man-in-the-middle (MITM) ○ Ataques denegación de servicio distribuida (DDoS) ○ Ataques de control de acceso a las aplicaciones

Slide 4

Slide 4 text

hps://owasp.org/API -Security/editions/20 23/en/0x00-header

Slide 5

Slide 5 text

OWASP Top 10 y su importancia para la seguridad en APIs

Slide 6

Slide 6 text

Actualización del OWASP Top 10 security en 2023

Slide 7

Slide 7 text

1.Broken Object Level Authorization – Autorización a nivel de objeto rota

Slide 8

Slide 8 text

1.Broken Object Level Authorization – Autorización a nivel de objeto rota

Slide 9

Slide 9 text

1.Broken Object Level Authorization – Autorización a nivel de objeto rota

Slide 10

Slide 10 text

2.Broken Authentication – Autenticación rota POST /graphql { "query":"mutation { login (username:\"\",password:\"\") { token } }" }

Slide 11

Slide 11 text

2.Broken Authentication – Autenticación rota https://api.example.com/v1.1/users/payment/show?user_id=12&access _token=360f91d065e56a15a0d9a0b4e170967b

Slide 12

Slide 12 text

2.Broken Authentication – Autenticación rota

Slide 13

Slide 13 text

3.Broken Object Property Level Authorization – Autorización de nivel de propiedad de objeto rota https://api.example.com/v1.1/users/show?user_id=12 { "id": 6253282, "username": "vickieli7", "screen_name": "Vickie", "location": "San Francisco, CA", "bio": "Infosec nerd. Hacks and secures. Creates god awful infographics.", "api_token": "8a48c14b04d94d81ca484e8f32daf6dc", "phone_number": "123-456-7890", "address": "1 Main St, San Francisco, CA, USA" }

Slide 14

Slide 14 text

5.Broken Function Level Authorization – Autorización rota a nivel de función

Slide 15

Slide 15 text

7.Server Side Request Forgery – Falsificación de peticiones del lado del servidor

Slide 16

Slide 16 text

7.Server Side Request Forgery – Falsificación de peticiones del lado del servidor ● Validación de entrada de usuario ● Listas blancas de direcciones y recursos permitidos ● Limitar permisos y aplicar el principio de mínimo privilegio.

Slide 17

Slide 17 text

Herramientas para evaluar y mejorar la seguridad

Slide 18

Slide 18 text

Herramientas para evaluar y mejorar la seguridad

Slide 19

Slide 19 text

Herramientas para evaluar y mejorar la seguridad

Slide 20

Slide 20 text

Herramientas para evaluar y mejorar la seguridad

Slide 21

Slide 21 text

Herramientas para evaluar y mejorar la seguridad

Slide 22

Slide 22 text

Herramientas para evaluar y mejorar la seguridad

Slide 23

Slide 23 text

Herramientas para evaluar y mejorar la seguridad

Slide 24

Slide 24 text

Herramientas para evaluar y mejorar la seguridad

Slide 25

Slide 25 text

Herramientas para evaluar y mejorar la seguridad

Slide 26

Slide 26 text

Herramientas para evaluar y mejorar la seguridad

Slide 27

Slide 27 text

Seguridad en Drupal ● Control de acceso basado en roles (RBAC) ● Cifrado de la base de datos ● Detección de ataques por fuerza bruta ○ Bloqueo dirección IP ○ Bloqueo cuenta de usuario

Slide 28

Slide 28 text

Seguridad en Drupal ● Two-Factor Authentication (2FA) ○ https://www.drupal.org/project/tfa ● Password Policy ○ https://www.drupal.org/project/password_policy ● Automated Logout ○ https://www.drupal.org/project/autologout

Slide 29

Slide 29 text

Seguridad en Drupal ○ https://www.drupal.org/project/seckit

Slide 30

Slide 30 text

Seguridad en Drupal

Slide 31

Slide 31 text

Seguridad en Drupal ● Username Enumeration Prevention ○ https://www.drupal.org/project/username_enum eration_prevention ○ Convierte las respuestas 403 Acceso denegado en 404 Usuario no encontrado

Slide 32

Slide 32 text

Drupal REST & JSON API Authentication module ● Múltiples métodos de autenticación: ○ Token-based authentication (JWT, OAuth2, API keys) ○ Basic Authentication (usuario y contraseña en el encabezado) ○ Cookie-based authentication (útil en contextos donde se usa sesión de usuario) ● Compatibilidad con las APIs estándar de Drupal: ○ JSON API: Un estándar que permite interactuar con los recursos de Drupal en formato JSON. ○ REST API: Permite acceso a los recursos con control granular sobre qué entidades se exponen y cómo se gestionan. ● Integración con roles y permisos: Controla qué usuarios o roles pueden acceder a ciertas rutas API, limitando el acceso a recursos sensibles. https://www.drupal.org/project/rest_api_authentication

Slide 33

Slide 33 text

Drupal REST & JSON API Authentication module https://plugins.miniorange.com/drupal-api- authentication#jwt-authentication

Slide 34

Slide 34 text

Drupal REST & JSON API Authentication module

Slide 35

Slide 35 text

JWT module https://git.drupalcode.org/project/jwt

Slide 36

Slide 36 text

Simple OAuth (OAuth2) & OpenID Connect https://git.drupalcode.org/project/simple_oauth ● OAuth2 es un protocolo de autorización que permite que aplicaciones externas accedan a recursos en un servidor de manera segura sin compartir las credenciales del usuario directamente. ● Tokens de acceso personalizados:Proporciona tokens Bearer que las aplicaciones clientes pueden usar para acceder a recursos de Drupal. ● Autorización sin sesión: Permite acceder a los recursos mediante tokens sin necesidad de mantener una sesión activa de usuario. ● Compatibilidad con roles y permisos: Los permisos para acceder a recursos vía API se asignan de acuerdo al rol del usuario autenticado con el token.

Slide 37

Slide 37 text

OAuth vs JWT OAuth JWT Propósito Protocolo de autorización Formato de token para transmisión segura Usado para Delegar permisos a una aplicación para acceder a recursos Transmitir datos de autenticación o autorización Autenticación OAuth por sí mismo no autentica al usuario, se usa para autorización Utilizado para autenticación (y también autorización) Control sobre recursos Permite un control más granular sobre los permisos de acceso Solo transmite información, no tiene control sobre recursos Revocación de tokens Los tokens pueden ser revocados No hay un mecanismo fácil para revocar un JWT una vez emitido

Slide 38

Slide 38 text

Estrategias y mejores prácticas para garantizar la seguridad de tus APIs ● Implementar comprobaciones de autorización a nivel de objeto y considerar la posibilidad de utilizar ID de objetos generados aleatoriamente. ● Asignar y aplicar privilegios en funciones que requieran confidencialidad. ● Establecer límites al tamaño de las peticiones, las frecuencias y a qué pueden acceder los usuarios. ● Imponer restricciones a los flujos de llamadas que podrían ser el origen de un ataque si se usan en exceso. ● Evitar configuraciones inseguras cuando sea posible. ● Documentar los servicios y actualizar estos catálogos periódicamente.

Slide 39

Slide 39 text

Estrategias y mejores prácticas para garantizar la seguridad de tus APIs ● Mejorar la gobernanza de las APIs ● Utilizar herramientas de descubrimiento de APIs ● Desplegar una pasarela de APIs ● Añadir un firewall de aplicaciones web (WAF) ● Cifrar todos los datos (mediante TLS, por ejemplo) ● Utilizar JWT/OAuth para controlar el acceso de la APIs ● Considerar un enfoque de confianza cero o zero trust

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

Gracias Thanks