Diario Hacker: Vol I
En un mundo cada vez más digitalizado, la ciberseguridad se ha convertido en un componente crítico de la estrategia empresarial. Las amenazas cibernéticas evolucionan constantemente, lo que exige que las organizaciones estén siempre un paso por delante en la protección de sus activos digitales.
Recientemente, uno de nuestros clientes (una compañía líder en tecnología) se sometió a una auditoría completa sobre sus sistemas web y aplicaciones, la cual fue llevada a cabo por parte de nuestros expertos en ciberseguridad.
En este artículo, analizaremos esta destacada auditoría y cómo un fallo de seguridad nos permitió obtener el control sobre la infraestructura de nuestro cliente.
El Panorama de Ciberseguridad Actual
Antes de sumergirnos en los detalles de la auditoría en cuestión, es esencial comprender el contexto actual de la ciberseguridad empresarial. Las amenazas online y los vectores de ataque se han vuelto cada vez más sofisticados y, a menudo, difíciles de detectar. Los ciberdelincuentes están constantemente buscando nuevas formas de infiltrarse en las redes corporativas y acceder a información confidencial.
En este entorno, la realización de auditorías de ciberseguridad regulares es crucial para identificar y abordar vulnerabilidades antes de que puedan ser explotadas.
Pequeños problemas…
Como en todos los ejercicios de ciberseguridad que realizamos, el primer paso fue investigar y recopilar toda la información posible sobre las plataformas auditadas y sus posibles puntos de entrada. Este análisis nos sirve para entender el estado de las aplicaciones y actuar desde un punto de vista acorde al de un ciberdelincuente que haya decidido poner en riesgo la seguridad de nuestro cliente.
Lamentablemente para nuestros auditores, la investigación inicial y las posteriores pruebas demostraron que la postura de los desarrolladores con relación a materia de ciberseguridad era robusta. No era la primera vez que auditábamos la infraestructura y productos de este cliente, y pudimos observar cómo habían aprendido de experiencias de auditorías anteriores. Las aplicaciones estaban correctamente bastionadas, no encontramos parámetros inyectables, la lógica de la aplicación parecía impecable, el control de accesos era robusto, etc.
En resumen, no parecía que hubiese mucho que pudiésemos conseguir… ¿o sí?
Una nueva implementación por parte del cliente en una de las aplicaciones fue el uso de servidores de caché debido al incremento de usuarios y la necesidad de proporcionar un servicio lo más rápido y estable posible. Estos servicios intermediarios almacenan las respuestas estáticas de los servidores para no tener que volver a solicitarlas, lo que ahorra tiempo y ancho de banda.
Como regla general, los elementos almacenados en caché no contienen información privada o sensible. Los servidores de caché sólo almacenan contenido público y estático -como imágenes, archivos CSS y documentos PDF- que no sea específico del usuario.
Cuando los servidores almacenan en caché respuestas estáticas, todo el mundo se beneficia de ello. Pero ¿qué ocurre cuando un servidor almacena en caché una respuesta no estática que contiene información sensible? El servidor empezará a servir la respuesta en caché a todo el mundo a partir de ahora, haciendo pública cualquier información sensible que contenga.
… ¡grandes soluciones!
Un detalle remarcable sobre la plataforma auditada es que ofrecía a los usuarios la posibilidad de usar entornos virtuales y otros servicios según el nivel de su suscripción. Para ello, disponían de varias herramientas a través de su perfil, destacando la posibilidad de usar su propia clave API para automatizar este proceso.
Estos perfiles privados son páginas generadas dinámicamente en función de cada usuario, por lo que no se guardan en caché, pero los servidores de caché pueden ser engañados para almacenar copias locales de datos sensibles y servirlas a otros usuarios mediante la confusión de rutas.
Los ataques de Web Caché Deception son el resultado de un desacuerdo entre los componentes sobre la “cacheabilidad” de un objeto determinado. Este desacuerdo puede aprovecharse para engañar a un web caché para que almacene objetos no almacenables en caché.
Llegados a este punto, nuestro objetivo era obtener claves API privilegiadas, las cuales se encontraban bajo la ruta /tu-perfil. Estas respuestas, al ser de carácter dinámico, no se almacenaban en caché, por lo que solamente el usuario legítimo podía obtenerlas del servidor.
Aún así, fuimos capaces de forzar al servidor a almacenar estas respuestas dinámicas en caché. Para ello, agregamos sufijos a la ruta con el fin de imitar el comportamiento de los recursos estáticos. En nuestro caso, una llamada a /tu-perfil/audea.jpg conseguía engañar al servidor.
Llegados a este punto, y tras obtener evidencias de las vulnerabilidades, detuvimos la prueba de concepto y procedimos a añadir el fallo de seguridad al informe. Nuestro equipo nunca realiza acciones que puedan ser perjudiciales o puedan afectar a otros usuarios de la plataforma.
Tras la revisión del informe por parte del cliente y antes de aplicar las soluciones recomendadas por nuestro equipo de especialistas, el cliente nos propuso realizar una prueba para valorar realmente si un actor malicioso podría aprovecharse de la vulnerabilidad encontrada. Tras discutir el alcance, nos pusimos manos a la obra.
Procedimos a replicar la prueba de concepto, pero esta vez la enviamos a través del formulario de contacto de la página web, haciéndonos pasar por un usuario con problemas técnicos. Nuestra esperanza era que algún empleado interno accediese a la ruta adjunta.
Una vez obtenida respuesta por parte del soporte técnico, procedimos a comprobar los resultados. Nuestra víctima había caído en la trampa y el perfil del empleado estaba almacenado en caché, junto a su clave API privilegiada, la cual no contaba con restricciones de acceso y tenía permisos sobre todos los recursos de la red.
Después de compartir los resultados nuevamente con el cliente, se aplicaron las soluciones pertinentes y se ejecutó un retest con el fin de asegurar que el fallo ya no se encontraba disponible.
Nuestro sello de calidad
En Áudea, nuestra principal prioridad es la seguridad de nuestros clientes. Nos enorgullece ofrecer servicios de auditoría de ciberseguridad de alta calidad y estar siempre dispuestos a ir más allá para proteger los activos digitales de las organizaciones. Como demuestra la satisfacción de nuestros clientes, nuestra dedicación a la ciberseguridad es inquebrantable.
En un mundo donde las amenazas cibernéticas evolucionan constantemente, es fundamental contar con un equipo de expertos en ciberseguridad que esté al tanto de las últimas tendencias y técnicas utilizadas por los ciberdelincuentes. Nuestra empresa se esfuerza por mantenerse a la vanguardia de la ciberseguridad, lo que nos permite identificar y abordar incluso las vulnerabilidades más sutiles.
Además, nuestro compromiso no se limita a la identificación de vulnerabilidades, sino que también incluye trabajar en estrecha colaboración con nuestros clientes para implementar las soluciones recomendadas y garantizar la protección continua de sus sistemas.
Kike Fontán
Senior Cybersecurity Consultant