Seguridad de nube e infraestructura

Seguridad serverless

Se lee en aproximadamente 3 minutos

Qué es la seguridad serverless

La seguridad serverless es el esfuerzo por abordar los riesgos de seguridad específicos de entornos de computación serverless como AWS Lambda, Azure Functions y Google Cloud Functions.

En serverless, la gestión del SO y el runtime se delega al proveedor, por lo que el alcance de responsabilidad del usuario se reduce en el modelo de responsabilidad compartida. Sin embargo, la responsabilidad no desaparece. Las vulnerabilidades del código de funciones, los permisos excesivos de roles IAM, las entradas no autorizadas desde fuentes de eventos y las vulnerabilidades de bibliotecas dependientes son responsabilidad total del usuario en la capa de aplicación.

Superficie de ataque específica de serverless

En entornos serverless, existen superficies de ataque diferentes a las aplicaciones basadas en servidor tradicionales.

  • Inyección de eventos: Las funciones Lambda se invocan desde diversas fuentes de eventos como API Gateway, S3, SQS y DynamoDB Streams. No confíes en la entrada de ninguna fuente de eventos y realiza siempre validación dentro de la función. Existen casos de claves de objeto S3 con rutas maliciosas o payloads no autorizados en mensajes SQS
  • Permisos excesivos: Por conveniencia de desarrollo, se tiende a otorgar permisos IAM amplios a las funciones, pero si una función es comprometida, todos los permisos otorgados son explotados. Asigna roles IAM individuales a cada función y permite solo las acciones y recursos mínimos necesarios
  • Vulnerabilidades de dependencias: Si los paquetes npm o pip utilizados por las funciones Lambda contienen vulnerabilidades conocidas, el entorno de ejecución de la función queda en peligro. Incorpora SCA (Software Composition Analysis) en el pipeline CI/CD de IaC
  • Filtración de variables de entorno: Al almacenar secretos en variables de entorno, ten cuidado de que las variables de entorno no se incluyan en la salida de registros o respuestas de error de la función

Mejores prácticas de seguridad serverless

Medidas prácticas para fortalecer la seguridad de entornos serverless.

  • Rol IAM de mínimo privilegio por función: No reutilizar un rol IAM común para todas las funciones. Definir políticas por función en las plantillas de AWS SAM o Serverless Framework
  • Validación de entrada: Validar toda entrada que recibe la función independientemente de la fuente de eventos. Implementar validación de JSON Schema, verificación de tipos y límites de tamaño
  • Limitación de tiempo de ejecución y memoria: Configurar timeout y tamaño de memoria al mínimo necesario. Prevenir el aumento de costos por funciones desbocadas o ataques DoS
  • Colocación de WAF en el frente: Colocar WAF frente a API Gateway para bloquear ataques comunes como inyección SQL y XSS antes de que lleguen a la función
  • Considerar ejecución dentro de VPC: Ejecutar funciones que acceden a bases de datos o APIs internas dentro de VPC y bloquear comunicaciones salientes innecesarias a Internet

Monitoreo y respuesta a incidentes

El monitoreo de entornos serverless requiere un enfoque diferente al monitoreo de servidores tradicional.

  • Registros a nivel de función: Emitir registros estructurados a CloudWatch Logs, haciendo rastreables el ID de solicitud, tiempo de ejecución e información de errores. Filtrar para que los registros no contengan secretos ni información personal
  • Detección de anomalías: Detectar mediante alertas anomalías en el número de invocaciones de funciones, tasa de errores y tiempo de ejecución. Monitorear patrones inusuales (invocaciones masivas nocturnas, acceso concentrado desde IP específica)
  • Trazado distribuido: Visualizar la cadena de invocaciones entre funciones con AWS X-Ray, etc. para detectar patrones de invocación anómalos o aumentos repentinos de latencia

Comparado con aplicaciones basadas en contenedores, serverless tiene entornos de ejecución efímeros (de corta vida), lo que dificulta la investigación forense. Es importante registrar suficientes registros y trazas para poder realizar análisis posterior cuando ocurra un incidente.

Conceptos erróneos comunes

Serverless no tiene servidores, así que no hay que preocuparse por la seguridad
Incluso en serverless existen riesgos de seguridad en la capa de aplicación como vulnerabilidades del código de funciones, errores de configuración de IAM, vulnerabilidades de bibliotecas dependientes y entradas no autorizadas desde fuentes de eventos. La carga de gestión del SO se reduce pero la responsabilidad de seguridad no desaparece.
Las funciones Lambda se ejecutan por poco tiempo, así que no hay tiempo para ser atacadas
Aunque el tiempo de ejecución de la función sea corto, en una sola ejecución es posible robar datos confidenciales o usar recursos fraudulentamente. Además, en entornos donde la función se invoca repetidamente, el atacante puede intentar tantas veces como quiera. La brevedad del tiempo de ejecución no es garantía de seguridad.

Términos relacionados

Artículos relacionados