SkyShip Dusk por SeerLightLa construcci贸n de cualquier servicio incluye necesariamente un trabajo constante en seguridad. La seguridad es un proceso continuo que incluye el an谩lisis continuo y la mejora de la seguridad del producto, el monitoreo de noticias sobre vulnerabilidades y mucho m谩s. Incluyendo - auditor铆as. Las auditor铆as se llevan a cabo tanto por cuenta propia como por expertos externos que pueden ayudar dram谩ticamente con la seguridad, ya que no est谩n inmersos en el proyecto y tienen una visi贸n clara.
El art铆culo trata sobre este aspecto muy impopular de expertos externos que ayudaron al equipo de Mail.ru Cloud Solutions (MCS) a probar el servicio en la nube, y sobre lo que encontraron. Como "fuerzas externas", MCS eligi贸 Digital Security, conocida por su alta experiencia en la comunidad de seguridad. Y en este art铆culo analizaremos algunas vulnerabilidades interesantes que se encontraron como parte de una auditor铆a externa, para que obtenga el mismo rastrillo cuando realice su servicio en la nube.
Descripci贸n del producto
Mail.ru Cloud Solutions (MCS) es una plataforma para construir infraestructura virtual en la nube. Incluye IaaSs, PaaSs, un mercado de im谩genes de aplicaciones listas para usar para desarrolladores. Teniendo en cuenta la arquitectura de MCS, fue necesario verificar la seguridad del producto en las siguientes 谩reas:
- protecci贸n de la infraestructura del entorno de virtualizaci贸n: hipervisores, enrutamiento, firewalls;
- protecci贸n de la infraestructura virtual de los clientes: aislamiento entre s铆, incluida la red, redes privadas en SDN;
- OpenStack y sus componentes abiertos;
- S3 desarrollo propio;
- IAM: proyectos multiinquilinos con un modelo a seguir;
- Visi贸n (visi贸n artificial): API y vulnerabilidades al trabajar con im谩genes;
- interfaz web y ataques web cl谩sicos;
- vulnerabilidades de los componentes de PaaS;
- API de todos los componentes.
Quiz谩s, todo lo que es esencial para la historia posterior lo es todo.
驴Qu茅 tipo de trabajo se realiz贸 y por qu茅 se necesitan?
Una auditor铆a de seguridad tiene como objetivo identificar vulnerabilidades y errores de configuraci贸n que pueden conducir a la fuga de datos personales, la modificaci贸n de informaci贸n confidencial o una violaci贸n de la disponibilidad de servicios.
Durante el trabajo, que dura 1-2 meses en promedio, los auditores repiten las acciones de los posibles atacantes y buscan vulnerabilidades en las partes cliente y servidor del servicio seleccionado. En el contexto de la auditor铆a de la plataforma en la nube MCS, se identificaron los siguientes objetivos:
- An谩lisis de autenticaci贸n en el servicio. Las vulnerabilidades en este componente ayudar铆an a ingresar de inmediato en las cuentas de otras personas.
- El estudio del modelo a seguir y el control de acceso entre diferentes cuentas. Para un atacante, la capacidad de acceder a la m谩quina virtual de otra persona es un objetivo bienvenido.
- Vulnerabilidades del lado del cliente. XSS / CSRF / CRLF / etc. 驴Quiz谩s es posible atacar a otros usuarios a trav茅s de enlaces maliciosos?
- Vulnerabilidades en el lado del servidor: RCE y todo tipo de inyecciones (SQL / XXE / SSRF, etc.). Las vulnerabilidades del servidor suelen ser m谩s dif铆ciles de encontrar, pero conducen al compromiso de muchos usuarios a la vez.
- An谩lisis de aislamiento de segmentos de red de segmentos de usuarios. Para un atacante, la falta de aislamiento aumenta significativamente la superficie de ataque de otros usuarios.
- An谩lisis de l贸gica de negocios. 驴Es posible enga帽ar a un negocio y crear m谩quinas virtuales de forma gratuita?
En este proyecto, el trabajo se realiz贸 de acuerdo con el modelo Gray-box: los auditores interactuaron con el servicio con los privilegios de los usuarios comunes, pero pose铆an parcialmente el c贸digo fuente de la API y tuvieron la oportunidad de aclarar detalles con los desarrolladores. Por lo general, este es el modelo de trabajo m谩s conveniente y, al mismo tiempo, bastante realista: un atacante puede recopilar informaci贸n privilegiada, esto es solo cuesti贸n de tiempo.
Vulnerabilidades encontradas
Antes de que el auditor comience a enviar varias cargas 煤tiles (carga 煤til, que se usa para atacar) a lugares aleatorios, debe comprender c贸mo funciona, qu茅 funcionalidad se presenta. Puede parecer que este es un ejercicio in煤til, porque en la mayor铆a de los lugares estudiados no habr谩 vulnerabilidades. Pero solo una comprensi贸n de la estructura de la aplicaci贸n y la l贸gica de su funcionamiento permitir谩 encontrar los vectores de ataque m谩s complejos.
Es importante encontrar lugares que parezcan sospechosos o algo muy diferente de los dem谩s. Y la primera vulnerabilidad peligrosa se encontr贸 de esta manera.
IDOR
Las vulnerabilidades de IDOR (Referencia directa insegura de objetos, enlaces directos inseguros a objetos) son una de las vulnerabilidades m谩s comunes en la l贸gica empresarial que permite que de una forma u otra accedan a objetos a los que el acceso no est谩 permitido. Las vulnerabilidades de IDOR crean la posibilidad de obtener informaci贸n del usuario de diversos grados de criticidad.
Una de las opciones de IDOR es realizar acciones con objetos del sistema (usuarios, cuentas bancarias, bienes en la cesta) manipulando identificadores de acceso para estos objetos. Esto lleva a las consecuencias m谩s impredecibles. Por ejemplo, la posibilidad de sustituci贸n de la cuenta del remitente, por lo que puede robarlos de otros usuarios.
En el caso de MCS, los auditores acaban de descubrir la vulnerabilidad IDOR asociada con identificadores que no son del sistema. En la cuenta personal del usuario, para acceder a cualquier objeto, se usaron UUID, que parec铆an, como dicen los hombres de seguridad, impresionantemente no brutos (es decir, protegidos del ataque de fuerza bruta). Pero para ciertas entidades, se descubri贸 que se utilizan n煤meros predecibles ordinarios para obtener informaci贸n sobre los usuarios de la aplicaci贸n. Creo que se da cuenta de que puede cambiar la ID de usuario por uno, enviar la solicitud nuevamente y, por lo tanto, obtener informaci贸n sin pasar por la ACL (lista de control de acceso, reglas de acceso a datos para procesos y usuarios).
Falsificaci贸n de solicitudes del lado del servidor (SSRF)
Los productos OpenSource son buenos porque tienen una gran cantidad de foros con una descripci贸n t茅cnica detallada de los problemas que surgen y, si tiene suerte, con una descripci贸n de la soluci贸n. Pero esta moneda tiene otro lado: tambi茅n se detallan vulnerabilidades conocidas. Por ejemplo, el foro OpenStack tiene descripciones maravillosas de las vulnerabilidades
[XSS] y
[SSRF] , que por alguna raz贸n nadie tiene prisa por arreglar.
La funcionalidad frecuente de la aplicaci贸n es la capacidad para que el usuario env铆e un enlace al servidor en el que el servidor hace clic (por ejemplo, para descargar una imagen de una fuente espec铆fica). Con un filtrado de seguridad insuficiente de los enlaces o las respuestas que el servidor devuelve a los usuarios, los atacantes utilizan f谩cilmente dicha funcionalidad.
Las vulnerabilidades SSRF pueden avanzar mucho en el desarrollo de ataques. Un atacante puede obtener:
- acceso limitado a la red local atacada, por ejemplo, solo en ciertos segmentos de red y en cierto protocolo;
- acceso completo a la red local, si es posible una degradaci贸n desde el nivel de aplicaci贸n al nivel de transporte y, como resultado, la gesti贸n de carga completa a nivel de aplicaci贸n;
- acceso a la lectura de archivos locales en el servidor (si el archivo: /// esquema es compatible);
- y mucho mas
OpenStack es conocido desde hace mucho tiempo por su vulnerabilidad SSRF "ciega": cuando accede al servidor no obtiene una respuesta, pero obtiene diferentes tipos de errores / retrasos, seg煤n el resultado de la solicitud. En base a esto, puede escanear puertos en hosts en la red interna, con todas las consecuencias resultantes, que no deben subestimarse. Por ejemplo, un producto puede tener una API para back office, disponible solo desde la red corporativa. Al poseer documentaci贸n (no se olvide de los iniciados), un atacante puede utilizar m茅todos internos utilizando SSRF. Por ejemplo, si logr贸 obtener de alguna manera una lista aproximada de URL 煤tiles, entonces, utilizando SSRF, puede revisarlas y ejecutar una solicitud, en t茅rminos relativos, transferir dinero de una cuenta a otra o cambiar los l铆mites.
Este no es el primer caso de detecci贸n de vulnerabilidades SSRF en OpenStack. En el pasado, era posible descargar im谩genes ISO VM a trav茅s de un enlace directo, lo que tambi茅n ten铆a consecuencias similares. Esta caracter铆stica se elimina actualmente de OpenStack. Aparentemente, la comunidad consider贸 que esta es la soluci贸n m谩s f谩cil y confiable para el problema.
Y en
este informe disponible p煤blicamente del servicio HackerOne (h1), la explotaci贸n de un SSRF no ciego con la capacidad de leer metadatos de instancia conduce al acceso Root a toda la infraestructura de Shopify.
En MCS, en dos lugares con una funcionalidad similar, se descubrieron vulnerabilidades SSRF, pero eran casi imposibles de explotar debido a los firewalls y otras protecciones. De una forma u otra, el equipo de MCS solucion贸 este problema de todos modos, sin esperar a la comunidad.
XSS en lugar de cargar proyectiles
A pesar de cientos de estudios escritos, de a帽o en a帽o XSS (ataque de secuencias de comandos entre sitios) sigue siendo la vulnerabilidad web m谩s
com煤n (驴o
ataque ?).
La descarga de archivos es un lugar favorito para cualquier investigador de seguridad. A menudo resulta que puede cargar una secuencia de comandos arbitraria (asp / jsp / php) y ejecutar comandos del sistema operativo, en la terminolog铆a de los pentesters: "shell de carga". Pero la popularidad de tales vulnerabilidades funciona en ambas direcciones: son herramientas recordadas y desarrolladas contra ellas, por lo que recientemente la probabilidad de "cargar el shell" ha estado tendiendo a cero.
El equipo atacante (representado por Digital Security) tuvo suerte. OK, en MCS, en el lado del servidor, se verific贸 el contenido de los archivos descargados, solo se permitieron im谩genes. Pero SVG tambi茅n es una imagen. 驴Y qu茅 pueden ser im谩genes SVG peligrosas? 隆Porque puedes incrustar fragmentos de JavaScript en ellos!
Result贸 que los archivos descargados est谩n disponibles para todos los usuarios del servicio MCS, lo que significa que puede atacar a otros usuarios de la nube, a saber, los administradores.
Un ejemplo de uso de un formulario de inicio de sesi贸n de phishing mediante un ataque XSSEjemplos de explotaci贸n de un ataque XSS:
- 驴Por qu茅 intentar robar una sesi贸n (especialmente porque ahora todas las cookies HTTP-Only est谩n protegidas contra el robo usando scripts js) si el script descargado puede acceder de inmediato a la API de recursos? En este caso, la carga 煤til puede cambiar la configuraci贸n del servidor a trav茅s de solicitudes XHR, por ejemplo, agregar la clave SSH p煤blica del atacante y obtener acceso SSH al servidor.
- Si la pol铆tica CSP (pol铆tica de protecci贸n de contenido) proh铆be la implementaci贸n de JavaScript, un atacante podr铆a prescindir de ella. En HTML puro, cree el formulario de inicio de sesi贸n falso del sitio y robe la contrase帽a del administrador a trav茅s de un phishing tan avanzado: la p谩gina de phishing para el usuario se encuentra en la misma URL, y es m谩s dif铆cil para el usuario detectarla.
- Finalmente, un atacante puede organizar un DoS del cliente : establecer cookies de m谩s de 4 KB. Es suficiente para que el usuario abra el enlace una vez y todo el sitio quede inaccesible hasta que adivine especialmente para limpiar el navegador: en la gran mayor铆a de los casos, el servidor web se negar谩 a aceptar dicho cliente.
Veamos un ejemplo de otro XSS revelado, esta vez con una operaci贸n m谩s complicada. El servicio MCS le permite combinar la configuraci贸n del firewall en grupos. XSS fue descubierto en el nombre del grupo. Su peculiaridad era que el vector no funcionaba de inmediato, no cuando se visualizaba la lista de reglas, sino cuando se borraba el grupo:

Es decir, el escenario era el siguiente: un atacante crea una regla de firewall con una "carga" en el nombre, el administrador lo nota despu茅s de un tiempo e inicia el proceso de eliminaci贸n. Y aqu铆 tambi茅n cumple el JS malicioso.
Para los desarrolladores de MCS, para protegerse contra XSS en im谩genes SVG descargables (si no pueden abandonarse), el equipo de Seguridad Digital recomend贸:
- Aloje los archivos cargados por los usuarios en un dominio separado que no tiene nada que ver con "cookie". El script se ejecutar谩 en el contexto de otro dominio y no representar谩 una amenaza para MCS.
- En la respuesta HTTP del servidor, escriba el encabezado "Disposici贸n de contenido: archivo adjunto". Luego, el navegador descargar谩 los archivos y no los ejecutar谩.
Adem谩s, ahora hay muchas formas disponibles para que los desarrolladores mitiguen los riesgos de operar XSS:
- utilizando el indicador "Solo HTTP", puede hacer que los encabezados de sesi贸n de las cookies sean inaccesibles para JavaScript malicioso;
- una pol铆tica CSP implementada correctamente complicar谩 significativamente la operaci贸n de XSS para un atacante;
- Los motores de plantillas modernos, como Angular o React, borran autom谩ticamente los datos del usuario antes de mostrarlos en el navegador del usuario.
Vulnerabilidades de autenticaci贸n de dos factores
Para aumentar la seguridad de la cuenta, siempre se recomienda a los usuarios que habiliten 2FA (autenticaci贸n de dos factores). De hecho, esta es una forma efectiva de evitar que un atacante obtenga acceso al servicio si las credenciales del usuario se han visto comprometidas.
Pero, 驴el uso del segundo factor de autenticaci贸n siempre garantiza la seguridad de la cuenta? En una implementaci贸n de 2FA, existen tales problemas de seguridad:
- B煤squeda aproximada de c贸digo OTP (c贸digos 煤nicos). A pesar de la simplicidad de la operaci贸n, las grandes compa帽铆as tambi茅n encuentran errores como la falta de protecci贸n contra el bruto OTP: el caso de Slack , el caso de Facebook .
- Algoritmo de generaci贸n d茅bil, por ejemplo, la capacidad de predecir el siguiente c贸digo.
- Errores l贸gicos, por ejemplo, la capacidad de solicitar el OTP de otra persona en su tel茅fono, como ocurri贸 con Shopify.
En el caso de MCS, 2FA se implementa en base a Google Authenticator y
Duo . El protocolo en s铆 ya ha sido probado por el tiempo, pero vale la pena verificar la implementaci贸n de la verificaci贸n del c贸digo en el lado de la aplicaci贸n.
El MCS 2FA se usa en varios lugares:
- En la autenticaci贸n del usuario. Aqu铆 hay protecci贸n contra la fuerza bruta: el usuario solo tiene unos pocos intentos para ingresar una contrase帽a de un solo uso, luego la entrada se bloquea por un tiempo. Esto bloquea la capacidad de realizar la eliminaci贸n de OTP.
- Al generar c贸digos de copia de seguridad fuera de l铆nea para ejecutar 2FA, as铆 como desactivarlo. Aqu铆, la protecci贸n contra la fuerza bruta no se implement贸, lo que permiti贸 regenerar los c贸digos de respaldo o desactivar 2FA por completo si hab铆a una contrase帽a para la cuenta y una sesi贸n activa.
Teniendo en cuenta que los c贸digos de respaldo se ubicaron en el mismo rango de valores de l铆nea que los generados por la aplicaci贸n OTP, la posibilidad de recoger el c贸digo en poco tiempo fue mucho mayor.
El proceso de seleccionar OTP para deshabilitar 2FA usando la herramienta Burp: IntruderResultado
En general, MCS como producto result贸 ser seguro. Durante la auditor铆a, el equipo de Pentester no pudo acceder a las m谩quinas virtuales del cliente y sus datos, y las vulnerabilidades encontradas fueron reparadas r谩pidamente por el equipo de MCS.
Pero aqu铆 es importante tener en cuenta que la seguridad es un trabajo continuo. Los servicios no son est谩ticos, est谩n en constante evoluci贸n. Y desarrollar un producto completamente sin vulnerabilidades es imposible. Pero puede encontrarlos a tiempo y minimizar la posibilidad de que se repitan.
Ahora todas las vulnerabilidades mencionadas en MCS ya est谩n reparadas. Y para minimizar el n煤mero de nuevos y acortar su vida 煤til, el equipo de la plataforma contin煤a haciendo esto: