Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Seguridad de APIs en Drupal: herramientas, mejo...

jmortegac
October 27, 2024

Seguridad de APIs en Drupal: herramientas, mejores prácticas y estrategias para asegurar las APIs

En el mundo digital actual, las APIs son el pilar que sostiene la interconectividad entre aplicaciones y servicios. Drupal, como uno de los CMS más populares y versátiles, no es una excepción. Sin embargo, con la expansión de las APIs, también surge la necesidad de abordar los desafíos de seguridad asociados.

En esta charla, exploraremos en detalle el OWASP Top 10 de Seguridad en APIs, una lista de las principales vulnerabilidades que los desarrolladores y equipos de seguridad deben tener en cuenta al diseñar, desarrollar y asegurar sus APIs. Analizaremos los principales módulos y herramientas de seguridad disponibles en Drupal para testear nuestras aplicaciones. Por último, comentaremos las mejores prácticas para mitigar los riesgos y garantizar la seguridad de las APIs. Entre los puntos a tratar podemos destacar:

1.Fundamentos de aeguridad en APIs
2.OWASP Top 10 y su importancia para la seguridad en APIs
3.Módulos y herramientas de Seguridad en Drupal
4.Mejores prácticas para seguridad en APIs

jmortegac

October 27, 2024
Tweet

More Decks by jmortegac

Other Decks in Technology

Transcript

  1. 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.
  2. 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
  3. 2.Broken Authentication – Autenticación rota POST /graphql { "query":"mutation {

    login (username:\"<username>\",password:\"<password>\") { token } }" }
  4. 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" }
  5. 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.
  6. 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
  7. 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
  8. 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
  9. 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.
  10. 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
  11. 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.
  12. 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