Introducción
Gracias por usar OWASP ServerlessGoat!
Esta aplicación serverless demuestra fallos de seguridad comunes en entornos serverless según se describen en la guía de las 10 principales debilidades de seguridad serverless https://github.com/puresec/sas-top-10.
ServerlessGoat fue creado con los siguientes propósitos educativos:
- Enseñar a desarrolladores y profesionales de seguridad sobre los riesgos y debilidades comunes en la capa de aplicación serverless
- Educar sobre cómo pueden ser explotadas las debilidades de la capa de aplicación serverless
- Enseñar a desarrolladores y profesionales de seguridad sobre las mejores prácticas de seguridad serverless
Puede encontrar más información sobre WebGoat en: https://www.owasp.org/index.php/OWASP_Serverless_Goat
ADVERTENCIA 1: Esta aplicación contiene vulnerabilidades. Úsela solo con fines de capacitación.
ADVERTENCIA 2: Este programa es solo con fines educativos. No intente estas técnicas sin autorización de los propietarios de la aplicación.
NOTA: La aplicación fue desarrollada de tal manera que no debería poner en riesgo su cuenta de AWS. Las vulnerabilidades introducidas están contenidas dentro de los límites de esta aplicación específica. Sin embargo, no se recomienda a los usuarios implementar la aplicación en entornos de producción.
Despliegue
ServerlessGoat es una aplicación simple de AWS Lambda que funciona como un servicio conversor de archivos MS-Word .doc a texto plano. Recibe una URL de un archivo .doc como entrada y devuelve el texto dentro del documento al llamante de la API.
La aplicación está empaquetada y publicada para su despliegue a través del Repositorio de Aplicaciones Serverless de AWS.
Pasos para el despliegue:
- Asegúrese de haber iniciado sesión en su cuenta de AWS
- Haga clic en el siguiente enlace: Repositorio de Aplicaciones Serverless de AWS
- Haga clic en 'Deploy'
- Haga clic en 'Deploy' (nuevamente)
- Espere hasta que vea el mensaje 'Your application has been deployed'
- Haga clic en 'View CloudFormation Stack'
- Bajo 'Outputs' encontrará la URL de la aplicación (WebsiteURL)
Cheat-Sheet
El recorrido completo de las lecciones (en desarrollo) se puede encontrar en el archivo LESSONS.md
Los siguientes problemas de seguridad existen en la aplicación:
- Inyección de datos de evento, que conduce a inyección de comandos del sistema operativo (SAS-01)
- Los usuarios pueden invocar la API con un valor de parámetro
document_url que contenga comandos del sistema operativo Linux. Por ejemplo: ; ls -LF
- Manejo inadecuado de excepciones y mensajes de error verbosos (SAS-10), que conduce a la divulgación de información sensible
- Por ejemplo, invocar la API sin el parámetro requerido devolverá un stack trace/exception verboso
- Configuración de despliegue serverless insegura (SAS-03)
- Bucket S3 abierto públicamente (su nombre se puede descubrir desde el subdominio/prefijo de la URL)
- El parámetro
document_url no está definido como un parámetro 'requerido' en API Gateway y puede omitirse
- Permisos y roles de función con privilegios excesivos, que conducen a la fuga de información almacenada en una tabla DynamoDB (SAS-04)
- La función tiene permisos CRUD en la tabla Dynamo, que pueden ser abusados para leer datos sensibles o manipular datos
- La función tiene una política FullAccess en el bucket S3, lo que lleva a manipulación y fuga de datos, etc.
- Monitoreo y registro de funciones inadecuados (SAS-05): la aplicación no registra adecuadamente los ataques y errores a nivel de aplicación (se puede demostrar a través de CloudWatch/CloudTrail)
- Dependencias de terceros inseguras (SAS-06): se puede detectar escaneando el proyecto con una herramienta de escaneo OSS
- El paquete vulnerable es
node-uuid
- Denegación de servicio a nivel de aplicación (SAS-08), que puede ser fácilmente demostrada
- Un atacante puede invocar la API recursivamente múltiples veces, esencialmente generando suficientes instancias para alcanzar el límite de capacidad reservada de la función (que está establecido en 5). Por ejemplo:
https://i92uw6vw73.execute-api.us-east-1.amazonaws.com/Prod/api/convert?document_url=https%3A%2F%2Fi92uw6vw73.execute-api.us-east-1.amazonaws.com%2FProd%2Fapi%2Fconvert%3Fdocument_url...
Agradecimientos
ServerlessGoat fue creado inicialmente y contribuido a OWASP por Yuri Shapira y Ory Segal, PureSec.