Skip to main content

Presentamos la monitorización de seguridad de código abierto en tiempo de ejecución

Escrito por
Headshot of Aner Mazur

Aner Mazur

Introducing open source security runtime monitoring Featured

12 de noviembre de 2018

0 minutos de lectura

Snyk lanzó la primera función de su solución de monitorización de seguridad de aplicaciones en tiempo de ejecución, que permite a los desarrolladores supervisar el comportamiento real de sus componentes de código abierto durante la ejecución.

Actualmente, la integración de Snyk con el repositorio del proyecto o con su ciclo de CI permite analizar las dependencias de código abierto, señalar las vulnerables y sugerir acciones para corregirlas. Snyk invierte mucho en facilitar la corrección de vulnerabilidades e incorporarla al flujo de trabajo de desarrollo, por ejemplo, mediante la apertura de PR de corrección, la entrega de parches cuando no es posible actualizar y mucho más.

Sin embargo, aunque corregirlas sea relativamente fácil, muchos desarrolladores y organizaciones aún pueden tener un gran rezago de vulnerabilidades pendientes. Cualquier recomendación que podamos ofrecer para priorizarlas es útil, y creemos que un aspecto clave para hacerlo es determinar si una dependencia vulnerable realmente se usa en tiempo de ejecución de una manera que pueda explotarse. En el mercado hay algunos enfoques que intentan lograrlo mediante el análisis estático de código. El principal problema es la alta tasa de falsos positivos y negativos que generan (por ejemplo, si el código se llama dinámicamente o si solo se ejecuta a partir de una entrada específica, etc.).

Snyk ofrece una solución que supervisa el comportamiento real de la aplicación en tiempo de ejecución y muestra información precisa sobre la invocación de funciones vulnerables en las dependencias de un proyecto.

Puedes tener la tranquilidad de que hemos dedicado mucho esfuerzo a garantizar que el impacto en el rendimiento de la aplicación sea mínimo, y seguiremos probándolo. Actualmente ofrecemos acceso anticipado a nuestra solución de tiempo de ejecución como una beta cerrada. Si quieres probarla, escríbenos a runtime@snyk.io.

Prioriza las vulnerabilidades según los datos de invocación en tiempo de ejecución

Una vez que el agente esté instalado correctamente y esté instrumentando las instancias en ejecución de la aplicación supervisada, verás un indicador en la tarjeta de detalles del problema que te informará si se invocaron recientemente funciones vulnerables en una instancia supervisada de la aplicación. Las vulnerabilidades se ordenarán principalmente según si se llamaron durante la ejecución y, luego, por nivel de gravedad. Además, se mostrarán los nombres y las rutas de las funciones vulnerables. Esto simplificará la clasificación de problemas al ayudarte a entender qué parte de tu aplicación las está usando. También te mostraremos cuánto tiempo ha pasado desde la última vez que se llamó a una de las funciones vulnerables.

Informe de seguridad que muestra una vulnerabilidad de recorrido de directorios de gravedad media en el módulo st, con la recomendación de actualizar a la versión 0.2.5.

Como puede haber varias instancias supervisadas de la aplicación en ejecución, podrás ver la cantidad de instancias supervisadas en la sección inferior derecha de los metadatos del proyecto.

Panel de resumen del proyecto que muestra la versión 8.12.0, cinco vulnerabilidades, 464 dependencias, origen CI/CLI y una instancia de aplicación monitoreada.

Cómo empezar con Node.js

Para empezar a supervisar tus aplicaciones Node.js, tendrás que agregar la dependencia @snyk/nodejs-runtime-agent a tu proyecto ejecutando: npm install @snyk/nodejs-runtime-agent en la carpeta del proyecto y configurarla lo antes posible en la secuencia de inicio de la aplicación. Este es un ejemplo de ese flujo:

require('@snyk/nodejs-runtime-agent')({
projectId: '0462e42b-c92f-4b48-bac8-81eb3ff7f43e',
});
const express = require('express');

En el fragmento anterior, la dependencia @snyk/nodejs-runtime-agent se requiere antes de cualquier otra instrucción require. Esto permite que el agente inspeccione todas y cada una de las dependencias requeridas para crear un enlace de ejecución que le indique cuándo la aplicación invoca funciones vulnerables.

El agente se configura con el ID de un proyecto supervisado en snyk.io. Puedes obtener el ID de tu proyecto mediante la API o consultando la página de configuración del proyecto en snyk.io.

Para obtener más información, consulta nuestra documentación sobre cómo instalar la protección en tiempo de ejecución.

Cómo empezar con Java

Para empezar a supervisar tus aplicaciones Java, descarga nuestro agente de tiempo de ejecución para Java (.ZIP) y descomprime el archivo.

  1. Copia snyk-java-runtime-agent.jar junto a tu aplicación.

  2. Crea un archivo snyk-agent.properties en la ubicación del archivo jar del agente, que contenga el ID de tu proyecto de Snyk, de la siguiente manera: projectId=0462e42b-c92f-4b48-bac8-81eb3ff7f43e.

  3. Agrega el agente como argumento de línea de comandos al comando Java que se usa para iniciar tu aplicación. Por ejemplo: java -javaagent:path/to/snyk-java-runtime-agent.jar -jar my-app.jar.

    - Si usas Apache Maven, agrega -javaagent:path/to/snyk-java-runtime-agent.jar a la variable de entorno MAVEN_OPTS.

    - Si usas contenedores JavaEE, como GlassFish, busca JVM Options y agrega -javaagent:path/to/snyk-java-runtime-agent.jar como opción.

Próximamente

Tenemos previsto sacar nuestra oferta de tiempo de ejecución de la beta cerrada en las próximas semanas, después de recopilar sus comentarios.

¿Qué sigue? Supervisar el comportamiento malicioso de los componentes de código abierto durante la ejecución y conectar esa información con los resultados del análisis del código fuente permite a los desarrolladores hacerse cargo de la seguridad del código abierto durante todo el ciclo de vida de la aplicación, frente a vulnerabilidades conocidas y desconocidas. La instrumentación de la aplicación en tiempo de ejecución permite crear muchas más capacidades, además de la priorización de vulnerabilidades basada en tiempo de ejecución que lanzamos hoy, y estarán disponibles en los próximos meses. ¡Mantente al tanto!

Empieza con los desafíos de Capture the Flag

Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.