Análisis de Riesgos en el Uso de Variables para la Administración de Ambientes Serverless
Adaptación del articulo “Analyzing the Risks of Using Environmental Variables for Serverless Management” https://www.trendmicro.com/vinfo/us/security/news/virtualization-and-cloud/analyzing-the-risks-of-using-environmental-variables-for-serverless-management
Los entornos serverless (sin servidor) se están volviendo más populares y, a algunas veces, ofrecen servicios para operaciones comerciales y expansión, como escalabilidad integrada, disponibilidad para múltiples regiones y capacidad de administración de costos. Casi todos los principales proveedores de servicios en la nube (CSP) ofrecen un servicio de entorno serverless de una forma u otra, y actualmente los ejemplos más populares son Amazon Web Services (AWS) Lambda y las funciones de Azure, entre otras plataformas y proveedores.
Teniendo esto en cuenta, también podemos imaginar una aplicación serverless como una pieza de código ejecutada dentro de una infraestructura de nube específica. Esta ejecución de código se puede desencadenar de diferentes maneras, por un punto final de la API HTTP o un evento. Desde una perspectiva de seguridad, podemos distinguir entre la seguridad del código ejecutado y el entorno donde se ejecuta el código. Si bien los CSP no pueden hacer mucho sobre el código real ejecutado, ya que es principalmente responsabilidad del usuario, pueden influir en el entorno de ejecución.
A continuación, hablaremos sobre una de las malas practicas más comunes identificada por TrendMicro, sus riesgos y mecanismos de mitigación.
Variables de Entorno
En base a sus estudios, TrendMicro logro identificar el principal riesgo de seguridad oculto en las variables de entorno. Estas se utilizan para el almacenamiento de tokens de autorización previa para ciertos servicios que pueden estar o están vinculados con el contexto de ejecución, el cual, en este caso es una función serverless. El mayor contraste que podemos detectar es que, por ejemplo, en Azure, el servicio hace mucho para proteger los secretos: almacenándolos en forma cifrada y transfiriéndolos a través de canales seguros. Por lo tanto, al final, los secretos se almacenan dentro del contexto de ejecución como una variable de entorno de texto sin formato. Una vez filtrado, podría dar lugar a escenarios de ataque que impliquen la ejecución de código arbitrario como consecuencia de una arquitectura de nube específica, o fugas de información de propiedad de la organización y datos de almacenamiento si estas claves se utilizan para múltiples aplicaciones.
Riesgos en las Variables de Entorno
Se evidenció un escenario de ataque en entorno de Azure Functions. Una vez abusado, este escenario puede conducir a una ejecución remota de código (RCE), fuga de código de función y sobrescritura de código de función.
Tenga en cuenta que se requiere una vulnerabilidad dentro de la función o el entorno implementado, lo que lleva a la fuga de información de una variable. Todavía somos testigos de vulnerabilidades recién descubiertas y todavía hay instancias en las que el usuario pasa por alto el uso del entorno serverless de la manera «correcta».
La prueba de concepto realizada se encuentra disponible en el siguiente vinculo.
Mitigación del Riesgo
Si bien no se tiene una forma totalmente efectiva para mitigar el riesgo a este tipo de amenaza, es recomendable tener en cuenta algunos items que nos ayudaran a disminuir el impacto.
- Considere seguir las recomendaciones de seguridad proporcionadas por la documentación de Azure (enlace en información adicional).
- Realizar regularmente revisiones de código entre pares dentro del equipo e incluir al equipo de seguridad
- Refuerce la seguridad de la API para aplicaciones sin servidor y evite exponer públicamente la totalidad de la API
- Limite el acceso del público para invocar funciones sin servidor, así como el acceso de los usuarios dentro de las redes virtuales.
- Si es posible, evite almacenar secretos y otra información sensible en las variables ambientales; elegir medios y herramientas más seguros (como bóvedas) para almacenar secretos, existen soluciones enfocadas a brindar mayor seguridad sobre estas prácticas. Por ejemplo, CyberArk secrets manager, para más información consultar los siguientes enlaces:
- https://www.cyberark.com/resources/product-datasheets/cyberark-secrets-manager
- https://docs.cyberark.com/Product-Doc/OnlineHelp/Portal/Content/Resources/_TopNav/cc_Portal.htm
En caso tal de querer acceder a información adicional puede referirse a los siguientes enlaces:
- https://www.trendmicro.com/en_us/research/21/f/secure_secrets_managing_authentication_credentials.html
- https://www.youtube.com/watch?v=3u2iYF3MCmo&t=42s
- https://www.trendmicro.com/vinfo/us/security/news/virtualization-and-cloud/analyzing-the-risks-of-using-environmental-variables-for-serverless-management
- https://docs.microsoft.com/en-us/azure/security/develop/secure-dev-overview
- https://docs.microsoft.com/en-us/azure/private-link/tutorial-private-endpoint-storage-portal