Animación Hover

Los investigadores encuentran vulnerabilidades de seguridad en la infraestructura de la nube de IBM

Vídeos relacionados

Póngase en contacto con nosotros

WhatsApp / Teléfono

Investigadores de seguridad investigaron recientemente la infraestructura de bases de datos como servicio de IBM Cloud y descubrieron varios problemas de seguridad que les permitieron acceder a servidores internos utilizados para crear imágenes de bases de datos para despliegues de clientes. El ataque demostrado pone de relieve algunos descuidos de seguridad habituales que pueden llevar a comprometer la cadena de suministro en infraestructuras en la nube.

El ataque, desarrollado por investigadores de la firma de seguridad Wiz, combina una vulnerabilidad de escalada de privilegios en el servicio IBM Cloud Databases for PostgreSQL, credenciales en texto claro dispersas por el entorno y controles de acceso a la red interna demasiado laxos que permiten el movimiento lateral dentro de la infraestructura. 4gdtu

PostgreSQL es un objetivo atractivo en entornos de nube

La auditoría de Wiz de IBM Cloud Databases para PostgreSQL forma parte de un proyecto de investigación más amplio que analiza las implementaciones de PostgreSQL por parte de los principales proveedores en la nube que ofrecen el motor de base de datos como parte de sus soluciones gestionadas de base de datos como servicio. A principios de este año, los investigadores de Wiz también descubrieron y divulgaron vulnerabilidades en la implementación de PostgreSQL de Microsoft Azure y Google Cloud Platform (GCP).

[Avance en su carrera con las mejores certificaciones de seguridad: Qué hacen, cuánto cuestan y qué necesitas. | Suscríbase al boletín de noticias de CSO. ]

El motor de base de datos relacional de código abierto PostgreSQL se ha desarrollado durante más de 30 años centrándose en la estabilidad, la alta disponibilidad y la escalabilidad. Sin embargo, este complejo software no se diseñó con un modelo de permisos adecuado para entornos de nube multiusuario, en los que las instancias de bases de datos deben estar aisladas entre sí y de la infraestructura subyacente.

1 segundo de 28 segundosVolumen 0%

PostgreSQL dispone de potentes funciones que permiten a los administradores realizar cambios en el sistema de archivos del servidor e incluso ejecutar código mediante consultas a la base de datos, pero estas operaciones son inseguras y deben restringirse en un entorno de nube compartida. Al mismo tiempo, otras operaciones de gestión como la replicación de bases de datos, la creación de puntos de control, la instalación de extensiones y los activadores de eventos deben estar disponibles para los clientes para que el servicio funcione correctamente. Es por eso que los proveedores de servicios en la nube (CSP) deben idear soluciones y hacer modificaciones al modelo de permisos de PostgreSQL para permitir estas características, incluso si los clientes sólo operan con cuentas limitadas.

Escalada de privilegios mediante inyección SQL

Mientras analizaban la implementación de PostgreSQL de IBM Cloud, los investigadores de Wiz se fijaron en los mecanismos de replicación lógica disponibles para los usuarios. Esta funcionalidad se implementa mediante varias funciones de la base de datos, incluida una función denominada create_subscription, que pertenece y es ejecutada por el superusuario de la base de datos denominado ibm.

Cuando inspeccionaron el código de esta función, los investigadores observaron una vulnerabilidad de inyección SQL causada por un saneamiento inadecuado de los parámetros que se le pasan. Esto significa que pueden pasar consultas SQL arbitrarias a la función y ésta las ejecutará como superusuario de ibm. Los investigadores explotaron esta vulnerabilidad a través de una sentencia COPY de PostgreSQL para ejecutar comandos arbitrarios en la máquina virtual subyacente que aloja la instancia de base de datos y abrir un shell inverso.

A través de un intérprete de comandos en un sistema Linux, comienzan a hacer algunos reconocimientos para comprender su entorno, como listar los procesos en ejecución, comprobar las conexiones de red activas, comprobar el contenido del archivo /etc/passwd que enumera los usuarios del sistema y ejecutar un escaneo de puertos en Linux . La red interna descubre otros servidores. El escaneo generalizado de puertos atrajo la atención del equipo de seguridad de IBM, que se puso en contacto con el equipo de Wiz para interesarse por su actividad.

"Tras comentar nuestro trabajo y compartir nuestras ideas con ellos, nos permitieron amablemente continuar nuestra investigación y seguir desafiando los límites de la seguridad, lo que refleja la sana cultura de seguridad de la organización", declaró el equipo Wiz.

Las credenciales almacenadas provocan ataques a la cadena de suministro

La información recopilada, como las variables de entorno, indicó a los investigadores que se encontraban dentro de un contenedor de pods de Kubernetes (K8s) y, tras buscar en el sistema de archivos, descubrieron que el token de acceso a la API de K8s se almacenaba localmente en un archivo llamado /var/run/secrets/kubernetes middle. io/servicecount/token. El token de la API les permite recopilar más información sobre el clúster K8s, pero resulta que todos los pods están asociados a su cuenta y se ejecutan bajo el mismo espacio de nombres. Pero no es un callejón sin salida.

K8s es un sistema de orquestación de contenedores para el despliegue de software, en el que los contenedores suelen desplegarse a partir de imágenes: paquetes preconstruidos que contienen todos los archivos necesarios para ejecutar el contenedor y sus servicios preconfigurados. Estas imágenes suelen almacenarse en un servidor de registro de contenedores, que puede ser público o privado. En el caso de IBM Cloud, se trata de un registro de contenedores privado que requiere autenticación.

Los investigadores utilizaron tokens de API para leer la configuración de los pods en su espacio de nombres y encontraron claves de acceso a cuatro registros de contenedores internos diferentes en estos archivos de configuración. Una descripción de la clave recién descubierta en la API de gestión de identidades y accesos (IAM) de IBM Cloud indica que tiene acceso de lectura y escritura al registro de contenedores, lo que permitiría a los investigadores sobrescribir las imágenes existentes con imágenes maliciosas.

Pero más tarde descubrí que la descripción de la clave era inexacta y solo podía descargar imágenes. Este nivel de acceso tenía implicaciones de seguridad, pero no suponía una amenaza directa para otros clientes de IBM Cloud, así que los investigadores siguieron adelante.

Las imágenes de contenedores pueden contener mucha información confidencial que se utiliza durante el despliegue y se elimina posteriormente, incluido el código fuente, scripts internos que hacen referencia a otros servicios de la infraestructura y las credenciales necesarias para acceder a ellos. Por lo tanto, los investigadores decidieron descargar todas las imágenes del servicio de registro y utilizar herramientas automatizadas para escanearlas en busca de secretos como credenciales y tokens de API.

"Para escanear exhaustivamente los secretos, descomprimimos las imágenes y examinamos la combinación de archivos que componen cada imagen", explican los investigadores. "Las imágenes de los contenedores se basan en una o varias capas; cada una de ellas puede contener secretos de forma no intencionada. Por ejemplo, si un secreto existe en una capa pero se elimina de la siguiente, será completamente invisible dentro del contenedor. Por lo tanto, escanear individualmente cada capa puede revelar más secretos".

El archivo de manifiesto JSON para una imagen de contenedor tiene una sección de "historial" que enumera los comandos históricos ejecutados durante el proceso de construcción de cada imagen.En varios de estos archivos, los investigadores encontraron contraseñas pasadas como argumentos de línea de comandos.

Lecciones de otras organizaciones

Aunque todos estos problemas han sido comunicados en privado al equipo de IBM Cloud y solucionados por éste, no son exclusivos de IBM. Según el equipo de Wiz, el problema de los "secretos dispersos" es común en todos los entornos de nube.

Los flujos de trabajo automatizados de compilación y despliegue suelen dejar secretos en varios lugares, como archivos de configuración, historial bash de Linux, archivos de registro, etc., que los desarrolladores olvidan borrar una vez finalizado el despliegue. Además, algunos desarrolladores suben accidentalmente todos sus archivos de configuración .git y CircleCI al servidor de producción. Los secretos olvidados que el equipo de Wiz descubre a menudo incluyen claves de acceso a la nube, contraseñas, credenciales de CI/CD y tokens de acceso a API.

Otro problema común que desempeña un papel clave en los ataques a IBM Cloud es la falta de controles de acceso estrictos entre los servidores de producción y los sistemas internos de CI/CD. Esto a menudo permite a los atacantes moverse lateralmente y ganar un punto de apoyo más profundo dentro de la infraestructura de una organización.

Por último, los registros de contenedores privados pueden proporcionar a los atacantes amplia información más allá de las credenciales. Pueden revelar información sobre servidores críticos dentro de la infraestructura, o pueden contener código que revele otras vulnerabilidades. El equipo de Wiz afirma que las organizaciones deben asegurarse de que sus soluciones de registro de contenedores implementan controles de acceso y alcance adecuados.

Póngase en contacto con nosotros