Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En DevOps y Seguridad Última actualización: 24 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Snyk es un editor especializado en el análisis de vulnerabilidades en el código de archivos de configuración de infraestructuras, incluidos los presentes en contenedores y paquetes de aplicaciones.

Snyk ofrece en primer lugar una plataforma en la nube, pero ofrece varios productos.

Snyk OpenSource se integra a través de la CLI del editor en un flujo Git. Una vez lanzado, el software detecta vulnerabilidades, las clasifica por grado de sensibilidad y corrige automáticamente los errores de seguridad conocidos. Esta funcionalidad puede incorporarse al ciclo de pull request para aplicarse al código enviado a los repositorios.

Snyk Infrastructure as Code, por su parte, analiza las vulnerabilidades y las corrige en los archivos de configuración JSON y YAML de Kubernetes. Aquí, un motor de reglas permite configurar la sensibilidad de las detecciones dentro de los repositorios Git según los parámetros decididos por los administradores.

Snyk Container permite probar las imágenes Docker y los registros asociados en el momento de su creación y después. El programa puede integrarse en CLI, SCM, herramientas CI, registros de contenedores y Kubernetes.

Snyk container

Hoy veremos cómo podemos utilizar Snyk Container, que viene incorporado con Docker para detectar vulnerabilidades.

Ejemplo de archivo Docker

Lo primero que necesita para utilizar Snyk para detectar vulnerabilidades es una imagen Docker. En este ejemplo, utilizaremos la siguiente imagen docker :

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
["python", "app.py"]

Lo primero que debemos hacer es generar la imagen localmente mediante el siguiente comando:

docker build -t 0xyz0/python-app.

Ahora tenemos una imagen para analizar.

Analizar la imagen desde el cliente Docker

La integración del servicio Snyk con Docker hace que este proceso sea increíblemente sencillo. Para iniciar el escaneado, sólo tiene que ejecutar lo siguiente:

docker scan 0***0/python-app

Esto comenzará con el análisis donde devolverá una salida más o menos extensa, dependiendo de las vulnerabilidades que encuentre, y con un resumen final:

Docker scan muestra todas las vulnerabilidades de la imagen

Como puede ver, no sólo le indica cuántas vulnerabilidades ha encontrado. Incluso si se desplaza hacia arriba, puede ver cuáles son y su criticidad, sino que también le hace recomendaciones sobre la imagen base que debería utilizar.

También puede consultar los detalles de la vulnerabilidad en la base de datos de vulnerabilidades de Snyk.

En mi caso, me ofrece varias alternativas, así que voy a modificar mi Dockerfile con la primera opción:

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

CMD ["python", "app.py"]

Si reconstruyo la imagen y la escaneo

docker build -t 0***0/python-app . && docker scan 0***0/python-app

Verá que la salida muestra ahora menos vulnerabilidades y, en este caso, le indica que está utilizando la imagen base más segura:

Docker scan le asegura que está utilizando la imagen base más segura

También puede obtener un informe más detallado si añade al comando el archivo docker que genera la imagen:

docker scan -f Dockerfile 0***0/python-app

E incluso excluir la imagen base del análisis, por si quiere centrarse en lo que ha hecho mal:

docker scan -f Dockerfile --exclude-base 0***0/python-app

Este servicio también puede integrarse con los repositorios de Docker Hub:

Pero para ello, debe disponer de una de las suscripciones de pago. Sin embargo, puede lanzarlo localmente, con el plan gratuito que tiene sólo por estar conectado a Docker Hub (tiene límites claros de escaneo), mientras desarrolla o quiere comprobar cómo de segura es una imagen de terceros que quiere utilizar.

Uso de Snyk con acciones de Github

Lo primero que hay que hacer es crear un repositorio y dentro crear una carpeta.

.github / worflows /

A continuación, para utilizar el contenedor Snyk en Github es crear una nueva imagen o tomar la imagen que hemos creado en Docker Hub. Para utilizar Snyk, hay que crear un nuevo secreto llamado SNYK_TOKEN, y para obtener el token, hay que crear una cuenta en Snyk. Desde Ajustes Generales, donde dice Token API, puede generarlo rápidamente.

Con el token, puede crear el secreto en Github y utilizarlo en la Acción. Ahora, tiene que pasarle el nombre del repositorio creado en Docker Hub. A continuación, tiene que pasarle el mensaje que tiene que enviar. Puede acceder a las salidas de los pasos a utilizar como variable en el mensaje.

with:
args: 'Un nuevo commit ha sido empujado. Por favor, verifique github acción:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / acciones
| Ejecución: $ {{steps.prep.outputs.created}}
| Versión: $ {{steps.prep.outputs.version}} '

¿Cómo ejecutar todo el flujo de trabajo? Simple sólo empujando Maestro. Acción Github detectará el archivo dentro de .github / flujos de trabajo /.

Palabras finales 👈

Con la creciente popularidad de los contenedores, los incidentes de violaciones de seguridad son cada vez más comunes, la mayoría de los cuales se deben a errores de configuración en el despliegue de los contenedores. Snyk proporciona una herramienta eficaz y sencilla que puede ayudarnos a evitar errores de configuración y a detectar las vulnerabilidades más comunes en las imágenes Docker.

  • Talha Jalid
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre DevOps
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder