Detecte vulnerabilidades en imágenes de contenedores y tome medidas

La innovación de las herramientas y la tecnología para desarrolladores durante los últimos años han creado multitud de opciones para la creación de soluciones. Sin embargo, incluso con las mejoras que hemos tenido en nuestra pila de herramientas, todavía debemos seguir siendo conscientes de las prácticas de la ingeniería segura, lo que incluye la limitación de los vectores de ataque. Parece simple, pero, de hecho, para el software de nivel de producción y para el software moderno, nos enfrentamos a cualquiera los siguientes vectores de potenciales ataques:

  • Vulnerabilidades del sistema operativo (SO): bibliotecas y componentes del SO sin parches, versiones vulnerables de kernel y versiones vulnerables de la biblioteca de red.
  • Vulnerabilidades de la configuración: configuraciones no seguras del SO, como contraseñas o inicios de sesión, además de la configuración de la red, lo que incluye permitir el acceso raíz, no tener listas blancas de IP, y la falta de Secure Shell (SSH).
  • Puntos débiles de aplicaciones: XSS, sobrecarga del búfer e inyección SQL.

La utilización de contenedores ha mejorado drásticamente la forma en que desarrollamos softwares reutilizables y repetibles. Pero todavía existe la preocupación habitual acerca de cómo evitar transmitir esas amenazas a los consumidores de los contenedores. Con los contenedores, se magnifica esta preocupación, porque cada capa del contenedor es solo un eslabón de la cadena. Es posible utilizar los contenedores producidos como base para otro contenedor, y así sucesivamente, y cada eslabón de esa cadena es susceptible a los vectores de ataque y a las amenazas.

Este code pattern incluye código de muestra del uso de la interfaz de programación de aplicaciones (API) con Vulnerability Advisor, un potente servicio de IBM Cloud Container Registry que asegura y mantiene la seguridad de los contenedores. Vulnerability Advisor escanea las capas y la configuración de una imagen de Docker y puede detectar las vulnerabilidades de las imágenes y de la configuración para buscar cosas en el registro, así como de las imágenes que se están ejecutando actualmente. El objetivo de este code pattern es poner a disposición estos datos y hacer que sean procesables.

Descripción

Este code pattern demuestra cómo usar las API de Vulnerability Advisor para recuperar y procesar los resultados en tiempo real de los contenedores que son escaneados. Esta información se muestra en una aplicación de muestra de un panel de instrumentos que utiliza las API de Vulnerability Advisor, demostrando cómo interactuar con las API y realizar acciones basándose en los datos del servicio Vulnerability Advisor.

Para conocer la información general, vea la documentación de Vulnerability Advisor. Además, para obtener más información acerca del uso de la API, vea documentación de la API de Vulnerability Advisor.

Cuando se cargan los contenedores en el servicio IBM Cloud Container Registry, estos son escaneados automáticamente por Vulnerability Advisor (aunque usted puede iniciar una evaluación a través de la API, si así lo desea). Usted puede recuperar datos de esos escaneos de diferentes maneras.

Los datos de la cuenta que están disponibles desde las API de Vulnerability Advisor proporcionan información vital de evaluación para la cuenta de IBM Cloud. Su cuenta de IBM Cloud se utiliza para subir imágenes al registro del contenedor, y usted puede ver estas evaluaciones como un agregado, desde la vista de la cuenta. Esta vista le ayuda a agrupar y a crear una lista de todas las imágenes que se poseen para la cuenta. Para cada imagen, puede crear un enlace a un panel de instrumentos para una imagen específica (el enlace que seleccione el usuario de la aplicación) donde se presenta información más detallada de la evaluación para esa imagen específica.

La API GET /va/api/v3/report/account devuelve la evaluación de vulnerabilidades para todos los recursos de la cuenta. Los datos devueltos para esta API pueden estar formados por varias evaluaciones (una para cada contenedor o imagen que es propiedad de la cuenta). Esta evaluación está formada por los siguientes datos:

  • Problemas de configuración identificados, como las acciones correctivas necesarias, la descripción del ticket, si el ticket está exento según las políticas definidas, y el tipo de verificación para el que se produjo el ticket.
  • El ID de la evaluación.
  • Un sello de tiempo para el escáner de la imagen.
  • Una lista de Vulnerabilidades y Exposiciones Habituales (CVE) que están identificadas para la imagen: si está exenta, el ID de la CVE, información del aviso de seguridad y un resumen de la vulnerabilidad.
  • Un estado general de la imagen basado en sus vulnerabilidades, en los tickets de configuración identificados y en las exenciones aplicadas.

En el panel de instrumentos se presenta el ID, el sello de tiempo del escáner y el estado general del código de la muestra.

Al igual que la report/account API, GET /va/api/v3/report/account/status devuelve resultados acumulados útiles para cada imagen que es propiedad de la cuenta. Usted obtiene los resultados en la aplicación del panel de instrumentos de muestra. Los resultados incluyen los números de los siguientes tickets:

  • Tickets encontrados
  • Tickets exentos encontrados
  • Vulnerabilidades
  • Vulnerabilidades exentas
  • Tickets de configuración
  • Tickets de configuración exentos

Las APIs de Vulnerability Advisor proporcionan información más detallada de las imágenes de contenedores que pueden dar una visión más profunda de una imagen y de su uso. Estos datos se usan para investigar más a fondo una imagen que selecciona el usuario de la aplicación en el panel de instrumentos.

GET /va/api/v3/exemptions/image/{resource} devuelve una lista de todas las exenciones que hay en vigor para una imagen. Las exenciones son vulnerabilidades que se pueden identificar cuando Vulnerability Advisor las encuentra en un escaneo. No afectan al estado de la evaluación, porque no se pueden aplicar ni son críticas ya que son un ejemplo hipotético. Hay dos formas de crear exenciones: las exenciones que se aplican a una imagen específica (que son devueltas por esta API) y las exenciones que se aplican a todas las imágenes de una cuenta (vea la siguiente llamada a la API).

La API GET /va/api/v3/exempt/image devuelve una lista de todas las exenciones que están definidas a nivel de cuenta para todas las imágenes que son propiedad de la cuenta. Entre los datos que se devuelven están:

  • ID de cuenta
  • ID de ticket
  • Tipo de ticket

GET /va/api/v3/report/image/{name} devuelve la evaluación de vulnerabilidades de la imagen especificada. Los datos que se vuelven son similares a los de la evaluación de la cuenta que se describió anteriormente, pero para una imagen específica, así que sólo se devuelve una evaluación. «GET /va/api/v3/report/image/{name}» y «GET /va/api/v3/report/account» comparten los mismos datos de la evaluación.

GET /va/api/v3/report/image/status/{name} es similar al estado agregado de vulnerabilidades devuelto para una cuenta, excepto que el ámbito para esta API es la imagen que está especificada en la llamada a la API. Los datos devueltos son similares a los datos de la evaluación capturados desde GET /va/api/v3/report/account/status. De nuevo, solo se devuelve una fila de datos agregados.

GET /va/api/v3/report/image/{name}/containers devuelve la lista de imágenes que se están ejecutando como contenedores instanciados que son creados y son propiedad de la cuenta. Los datos que esta llamada devuelve están formados por datos que ayudan a identificar las ubicaciones de los contenedores y los tiempos de ubicación de las imágenes que están en contenedores:

  • Nombre del predecesor
  • Tipo de predecesor
  • Clúster
  • ID
  • Nombre
  • Contenedor

Las APIs de IBM Cloud que se utilizan en este code pattern están protegidas por servicios de autenticación de IBM que requieren como parámetros de entrada el ID de la cuenta y el token de autorización. El código de muestra enseña el uso de un ID de una cuenta de muestra y la recuperación del token del portador que utiliza ibmcloud iam oauth-tokens. Implemente soluciones más robustas para los ambientes de producción.

Flujo

La aplicación de muestra del panel de instrumentos asume que se enviaron algunos contenedores al registro de contenedores y que se han finalizado las evaluaciones de Vulnerability Advisor.

  1. El panel de instrumentos está formado por dos partes. La primera parte es el panel de instrumentos principal, que hace dos llamadas de API a las APIs de Vulnerability Advisor: /va/api/v3/report/account y /va/api/v3/report/account/status.

  2. Estas APIs devuelven una suma del estado y de las vulnerabilidades de los contenedores para todos los contenedores que son propiedad de la cuenta. El panel de instrumentos realiza una iteración a través de cada imagen devuelta de la lista y muestra la información correspondiente. Cada imagen se construye como un enlace a la página de detalles del contenedor.

  3. Si los usuarios de la aplicación seleccionan un enlace de una imagen del panel de instrumentos, se le envía a una página que contiene información del contenedor seleccionado a través de las siguientes llamadas a la API:

    • /va/api/v3/exemptions/image/{resource}
    • /va/api/v3/exempt/image
    • /va/api/v3/report/image/{name}
    • /va/api/v3/report/image/status/{name}
    • /va/api/v3/report/image/{name}/containers

Aplicación del Panel para Evaluaciones de Vulnerability Advisor

Instrucciones

¿Está listo para probar este code pattern? Obtenga las instrucciones detalladas en el archivo README (En Inglés).

  1. Clone el repositorio.
  2. Recupere el token de oauth e inicie sesión.
  3. Complete los pasos adicionales de la configuración.
  4. Ejecute la aplicación y vaya al directorio superior para ejecutar node app.js.

Aviso

El contenido aquí presentado fue traducido de la página IBM Developer US. Puede revisar el contenido original en este link.