Ignorar vulnerabilidades con Snyk
3 de mayo de 2022
0 minutos de lectura¿Ignorar una vulnerabilidad? Suena paradójico. ¿Por qué alguien querría ignorar una vulnerabilidad?
Aunque ignorar problemas de seguridad no debería ser la práctica predeterminada, a veces es necesario. Hoy, los equipos de desarrollo y seguridad enfrentan un gran número de vulnerabilidades pendientes que puede llegar a miles de problemas. Para mantener un ritmo de desarrollo acelerado, deben poder priorizar su trabajo de manera eficaz. ¿Qué vulnerabilidades requieren atención inmediata, cuáles pueden atenderse más adelante y cuáles pueden ignorarse por completo?
No todas las vulnerabilidades son iguales. Algunas son críticas, mientras que otras tienen una gravedad menor. Algunas tienen una solución inmediata y otras no. Algunas vulnerabilidades son irrelevantes para ciertos proyectos (por ejemplo, una vulnerabilidad de denegación de servicio en un servicio interno). Estas y otras características de las vulnerabilidades son motivos válidos para querer ignorar una vulnerabilidad durante la clasificación.
Las soluciones de seguridad deben permitir que los desarrolladores supriman vulnerabilidades, pero también deben brindar a los equipos de seguridad el grado adecuado de control sobre quién ignora qué (y por qué). Una vez más, ignorar una vulnerabilidad no es una práctica recomendada, sino una acción que debe realizarse con moderación y de acuerdo con las políticas de tu organización.
Opciones para ignorar problemas en Snyk
La plataforma Snyk ofrece varias formas de ignorar problemas: mediante Snyk CLI, la API, la interfaz de usuario o el archivo de políticas .snyk. El método que uses dependerá de tu caso de uso específico, pero es importante comprender un principio: las excepciones en Snyk son locales. Esto significa que se limitan a un proyecto, un tipo de integración y una organización. Por ejemplo, el mismo problema que se ignora en un proyecto importado desde GitHub no se ignorará en un proyecto importado mediante Snyk CLI.
Veamos esto más de cerca.
Uso de Snyk CLI
Snyk CLI es una herramienta muy útil que te ayuda a encontrar y corregir vulnerabilidades, ya sea manualmente en tu entorno de desarrollo local o automáticamente como parte de tu pipeline de CI/CD. Puedes analizar tu proyecto con el comando snyk test. El análisis devuelve una lista de todos los problemas detectados en el proyecto, así como recomendaciones de actualización y corrección, si están disponibles.
Si quieres ignorar una vulnerabilidad específica por alguno de los motivos descritos anteriormente, ya sea durante las pruebas locales o en tus pipelines de compilación, puedes usar el comando snyk ignore, que incluye subcomandos opcionales (entre corchetes). Los subcomandos te ayudan a definir el alcance de la acción para ignorar: una fecha de vencimiento para la regla y un motivo. El siguiente comando ignora una vulnerabilidad de exposición de información en el paquete npm hbs porque no hay una solución disponible:
El id es un identificador único que Snyk asigna a los problemas. Puedes encontrarlo en varios lugares de la interfaz de usuario de Snyk; pero, si usas Snyk CLI, verás el ID al final de la URL del problema en la Snyk Vulnerability Database.

Al ejecutar este comando, se agrega una nueva regla al archivo de políticas .snyk. Si el archivo de políticas .snyk aún no existe, el comando lo crea y agrega la regla. Los análisis posteriores que se ejecuten con snyk test seguirán esta regla.
Consejos:
¿No recuerdas la sintaxis de Snyk CLI para ignorar problemas? Escribe
snyk ignore –help.Puedes limitar la capacidad de ignorar problemas solo a los usuarios administradores desde la configuración de tu organización en la interfaz de usuario de Snyk.
Para Snyk Code y las pruebas de dependencias no administradas en Snyk Open Source, puede ser más útil ignorar directorios en lugar de problemas individuales.
snyk ignoretambién permite hacerlo.

Uso del archivo de políticas .snyk
Como se describió anteriormente, el comando snyk ignore crea un archivo nuevo llamado archivo de políticas .snyk. Este archivo suele usarse para configurar el comportamiento y el alcance de los comandos de Snyk CLI snyk test y snyk monitor, así como de las pruebas ejecutadas mediante la API y la interfaz de usuario de Snyk, y la configuración de lenguajes. También puedes crear manualmente el archivo de políticas .snyk en el directorio raíz del proyecto o en un directorio específico dentro del proyecto.
Para ignorar vulnerabilidades, el archivo debe incluir un encabezado:
También debe incluir la siguiente sintaxis YAML para cada regla de excepción:
Ten en cuenta que, si el archivo de políticas .snyk está guardado en un subdirectorio del proyecto, deberás especificar su ubicación al ejecutar el comando snyk ignore en Snyk CLI.
Como práctica recomendada, sugerimos administrar el archivo .snyk con Git. Así, las pruebas que se ejecuten desde la interfaz de usuario de Snyk cumplirán las reglas establecidas localmente. Para obtener más información sobre el archivo de políticas .snyk, cómo crearlo y cómo usarlo para ignorar vulnerabilidades, consulta nuestra documentación sobre el archivo de políticas .snyk.
Uso de la interfaz de usuario de Snyk
También puedes aplicar excepciones desde la interfaz de usuario de Snyk: solo haz clic en el botón Ignore de cualquier tarjeta de problema. Se abrirá un cuadro de diálogo donde puedes seleccionar el motivo de la excepción y especificar durante cuánto tiempo quieres ignorar el problema. (Incluso puedes ignorarlo hasta que haya una solución disponible).

Cuando aplicas la opción Ignore a un problema desde la interfaz de usuario de Snyk, ocurren varias cosas; pero es importante recordar que el problema no desaparece. ¡No te preocupes si acabas de ignorar una vulnerabilidad crítica!
El problema dejará de aparecer, pero de forma predeterminada aún podrás verlo en la página del proyecto con el filtro Ignored. Es importante destacar que todas las acciones para ignorar problemas realizadas desde la interfaz de usuario de Snyk quedan registradas (incluida la información sobre quién ignoró el problema, cuándo lo hizo y por qué):
Consejos:
Las excepciones aplicadas desde la interfaz de usuario de Snyk a proyectos importados a Snyk mediante Snyk CLI (con
snyk monitor) se sincronizan con tu proyecto local. Sin embargo, las excepciones aplicadas desde la interfaz de usuario de Snyk a proyectos importados a Snyk mediante una integración de administración del control de código fuente (SCM) (por ejemplo, GitHub o Bitbucket) no se sincronizan.Puedes exigir que se indique un motivo para cada acción para ignorar problemas realizada desde la interfaz de usuario de Snyk, en la configuración de tu organización.

pull requests automatizados
Snyk no abre pull requests de corrección automatizados para los problemas ignorados mediante la interfaz de Snyk (ya sea manualmente en la tarjeta del problema o automáticamente con una política de seguridad), ni estos problemas aparecen en los gráficos de informes de Snyk.
Uso de políticas de seguridad (solo Snyk Open Source y Snyk Container)
Para la mayoría de las organizaciones, es importante contar con una forma más automatizada de ignorar problemas a gran escala.
Las políticas de seguridad de Snyk son, en esencia, reglas que puedes usar para priorizar o restar prioridad a los problemas automáticamente. Se definen a nivel de grupo desde la pestaña Policies de la barra de navegación de la interfaz de usuario de Snyk y pueden aplicarse a organizaciones o proyectos específicos (mediante la opción Project Attributes). Esto te permite controlar con precisión cómo se aplican las reglas para ignorar problemas.
Para ignorar problemas mediante las políticas de seguridad de Snyk, primero se definen las condiciones que deben cumplirse para que Snyk ignore un problema y, luego, se selecciona la opción para ignorarlo.

Las excepciones aplicadas mediante una política de seguridad ignorarán todas las vulnerabilidades que coincidan con las condiciones especificadas en la regla. Ignorarán tanto las vulnerabilidades existentes que coincidan con las condiciones como todas las futuras que se detecten. Los problemas ignorados mediante una política de seguridad se marcarán como tales.
Por ejemplo, esta vulnerabilidad de recorrido de directorios en el popular paquete de Python Django se ignoró mediante una política establecida para proyectos internos:

Consejo: al configurar la acción Ignore en una política de seguridad, puedes seleccionar Won't fix y Not vulnerable como tipos de excepción, y agregar el motivo que quieres que se muestre para la acción. Esta información aparece en la tarjeta del problema de tu proyecto.
Uso de la API de Snyk
Puedes usar la API de Snyk para aplicar reglas globales para ignorar problemas. Recomendamos hacerlo con mucha cautela, ya que este enfoque podría generar falsos negativos en futuras pruebas.
Una regla para ignorar por ruta mediante la API de Snyk tendría un aspecto similar a este:
La carga útil de la API tendría un aspecto similar a este:
También puedes usar la API para crear una lista de problemas ignorados. Esto se recomienda para llevar un registro de las excepciones globales en toda la organización:
Otras prácticas recomendadas para las excepciones
La plataforma Snyk ofrece varias opciones para usar excepciones de forma mesurada y con cierto grado de control, a fin de garantizar que los problemas críticos no pasen desapercibidos. A continuación, encontrarás algunas prácticas recomendadas para trabajar con estos métodos.
Exige motivos para las excepciones
Recomendamos exigir a los desarrolladores que indiquen los motivos por los que usan excepciones. Como se mencionó anteriormente, los administradores pueden establecer este requisito para las excepciones aplicadas desde la interfaz de usuario de Snyk. Para las excepciones aplicadas desde Snyk CLI o la API de Snyk, debes indicar a tus equipos de desarrollo que sigan esta práctica.
Limita las excepciones al rol de administrador
Recomendamos habilitar la opción para usar excepciones en cada una de tus organizaciones en Snyk. (Este permiso también puede configurarse desde la interfaz de usuario de Snyk). Sin embargo, ten en cuenta que esto solo limita las excepciones ejecutadas desde Snyk CLI y la API de Snyk. Los desarrolladores aún podrán establecer reglas para ignorar problemas en el archivo de políticas .snyk.
Revisa las excepciones con regularidad
Para tener mayor visibilidad, supervisa con regularidad las excepciones que los distintos equipos ejecutan en tu cuenta de Snyk. Para ello, puedes usar el comando curl que se mostró anteriormente a fin de obtener automáticamente una lista de problemas ignorados y revisarla. También puedes consultar la pestaña Reports, donde Snyk muestra la cantidad de problemas ignorados.
Ignora con precaución
Ignorar un problema de seguridad, o incluso un problema de licencia, siempre debe ser una excepción y no una práctica generalizada. Encuentra el equilibrio adecuado entre la productividad de los desarrolladores y las medidas de seguridad: define con cuidado la política de excepciones aceptadas en tu organización y brinda a los desarrolladores las herramientas necesarias para ignorar problemas dentro de los límites establecidos.
Repasemos algunos puntos sobre cómo se gestionan las excepciones en Snyk Code y Snyk Infrastructure as Code (Snyk IaC):
Ignorar problemas de Snyk Code desde la interfaz de usuario de Snyk podría abarcar una mayor variedad de problemas que en otros productos de Snyk. Para entender por qué, consulta nuestra documentación. En nuestra publicación de blog Programación segura con Snyk Code: la funcionalidad para ignorar problemas tiene un giro, profundizamos en cómo se ignoran problemas con Snyk Code.
Al usar el archivo de políticas .snyk para ignorar problemas detectados por Snyk Infrastructure as Code, debes tener en cuenta algunas consideraciones semánticas, como limitar el alcance a un solo archivo. Encontrarás más información en nuestro blog Mejora la seguridad al saber cuándo ignorar vulnerabilidades de IaC y en nuestra documentación.
¡Que disfrutes ignorando problemas!
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.



