7 consejos para priorizar vulnerabilidades en contenedores y aplicaciones web
22 de septiembre de 2020
0 minutos de lecturaComo es simplemente imposible corregir todas y cada una de las vulnerabilidades de aplicaciones web pendientes, tienes que priorizar. La priorización te ayuda a enfocarte en los problemas más importantes para tu organización y, así, aprovechar al máximo el tiempo y los recursos limitados que tienes disponibles para lograr el mayor impacto en la seguridad.
¿Por dónde empezar a priorizar vulnerabilidades?
Hay varios métodos de priorización y el que elijas dependerá del enfoque de seguridad que hayas decidido implementar. Para ayudarte a entender las distintas piezas de este rompecabezas, a continuación encontrarás una lista de algunas de las herramientas más populares para priorizar vulnerabilidades en aplicaciones web.
1. CWE
¿Qué es CWE?
CWE significa Common Weakness Enumeration y es un glosario en línea que clasifica las debilidades de software y hardware en distintos tipos. Por ejemplo: CWE-20 (validación de entradas), CWE-125 (lectura fuera de los límites), CWE-79 (XSS) y CWE-200 (filtración o divulgación de información).
MITRE mantiene CWE, cuyo propósito declarado es ofrecer una forma eficaz de identificar, detectar y resolver problemas de seguridad de software lo antes posible. Sin embargo, CWE también se puede usar de varias maneras para priorizar vulnerabilidades en aplicaciones web:
Si tienes poco tiempo y no puedes analizar en profundidad las vulnerabilidades encontradas en tu código, usa la lista CWE Top 25 como punto de partida para priorizar la corrección de las CWE que la comunidad considera más importantes.
Usa CWE para priorizar según el impacto. Las entradas de CWE incluyen información sobre el impacto técnico que puede tener una debilidad. En lugar de intentar corregirlo todo, usa esta información para enfocarte en las CWE que representan un mayor peligro para tu organización.
Usa CWSS y CWRAF: dos sistemas de puntuación para CWE que te permiten priorizar según su relevancia para tu negocio.
2. CVSS/Severidad
El método de priorización más utilizado es el Common Vulnerability Scoring System (CVSS), un estándar de la industria para evaluar la severidad de las vulnerabilidades. Según la facilidad con la que se puede explotar una vulnerabilidad de una aplicación web y el nivel de impacto que tendría una explotación exitosa, CVSS asigna una puntuación de 0 a 10, donde 10 es la puntuación más alta.
Según la NVD, una puntuación base de CVSS (v3) de 0.0 a 3.9 se considera de severidad «Baja»; de 4.0 a 6.9, «Media»; de 7.0 a 8.9, «Alta»; y de 9.0 a 10.0, «Crítica».
Aunque es un buen punto de partida, ten en cuenta que CVSS no ofrece una imagen lo suficientemente precisa del riesgo que representa una vulnerabilidad. Como señala la documentación oficial de CVSS: «CVSS está diseñado para medir la severidad de una vulnerabilidad y no debe usarse por sí solo para evaluar el riesgo... La puntuación base de CVSS debe complementarse con un análisis contextual del entorno y con atributos que pueden cambiar con el tiempo».
3. Explotabilidad
Una forma de determinar el riesgo real que una vulnerabilidad representa para tu organización es entender qué tan fácil es explotarla. Un factor que facilita enormemente que los hackers exploten una vulnerabilidad es que haya código de explotación disponible. Cuando se publica ese código, se dice que hay un «exploit en circulación».
Saber si hay «exploits en circulación» para los problemas pendientes te ayudará a enfocarte en un subconjunto de problemas riesgosos. Distinguir entre los distintos tipos de exploits publicados te permitirá acotar aún más el enfoque: no es lo mismo el riesgo de un exploit maduro, publicado y práctico que el de uno académico y teórico. Puedes leer más sobre la importancia de la explotabilidad para la priorización aquí.
4. reachability
Los desarrolladores incorporan componentes completos de código abierto a su base de código, pero solo usan una pequeña parte de ellos en la lógica de la aplicación. Esto significa que algunas vulnerabilidades podrían no ejecutarse como parte del flujo de ejecución de la aplicación y, por lo tanto, representar menos riesgo y tener una prioridad menor.
Si tu herramienta de seguridad de aplicaciones ofrece esta información, úsala para enfocarte en los problemas más urgentes. En lugar de priorizar una vulnerabilidad de severidad alta en una función que tu aplicación no ejecuta, es mucho más eficaz priorizar una vulnerabilidad de severidad media que sí está en el flujo de ejecución y representa un mayor riesgo.
Puedes priorizar con uno de los siguientes enfoques complementarios o con ambos:
Determinar reachability mediante el análisis estático de tu código fuente
Determinar si las vulnerabilidades se ejecutan realmente durante el tiempo de ejecución
Ten en cuenta que esto no significa que las vulnerabilidades que no se alcanzan no sean importantes o puedan ignorarse. También deben evaluarse y corregirse, especialmente las de severidad alta. Lo que sí significa es que reachability te ayudará a distinguir mejor entre lo importante y lo urgente.
5. Antigüedad
Al decidir qué priorizar, intenta tener en cuenta la antigüedad de la vulnerabilidad. Por ejemplo, cuanto más reciente sea, menos probable es que haya una solución disponible. Además, los hackers suelen interesarse por las vulnerabilidades nuevas y llamativas, lo que también aumenta el riesgo. Por ejemplo, los algoritmos que generan la puntuación de prioridad de Snyk incorporan la antigüedad en la puntuación final, siguiendo exactamente esta lógica.
6. Facilidad de corrección
Un enfoque de seguridad consiste en intentar corregir tantos problemas como sea posible en un plazo determinado. Si la rapidez es esencial, considera priorizar los problemas más fáciles, rápidos y económicos de corregir.
Para hacerlo, intenta responder estas preguntas:
¿Se puede corregir la vulnerabilidad con una actualización menor?
¿Hay un parche disponible para la vulnerabilidad?
¿Se puede reemplazar fácilmente el componente vulnerable?
7. Automatización
La única forma de priorizar y reducir la prioridad de cientos, si no miles, de problemas en los distintos proyectos de tu organización es con ayuda de la automatización. Si tus herramientas de seguridad ofrecen esta capacidad, usa políticas para definir automáticamente los parámetros que guían las decisiones de priorización durante el proceso de corrección.
Por ejemplo, quizá quieras aumentar la severidad de todas las vulnerabilidades asociadas a una CWE específica. O quizá quieras reducir automáticamente la severidad de los problemas para los que no se conocen exploits.
Estas decisiones dependen del negocio y varían de una organización a otra y de un equipo a otro. Sin embargo, la automatización y el control granular que ofrecen las políticas son imprescindibles en cualquier estrategia de priorización.
Las ventajas de priorizar eficazmente las vulnerabilidades de aplicaciones web
Una priorización eficaz te ayudará a enfocarte en las vulnerabilidades que representan el mayor riesgo para tu organización y a aprovechar mejor el tiempo y el esfuerzo que inviertes, lo que, en última instancia, fortalecerá tu postura de seguridad general.
Pero, como vimos, para priorizar bien las organizaciones necesitan algo más que CVSS. Necesitan soluciones que ofrezcan más contexto y de mayor profundidad. Cuanto más fáciles de usar y más amigables para los desarrolladores sean estas herramientas, más probabilidades habrá de que los desarrolladores las adopten, algo clave para que tus esfuerzos de priorización y corrección tengan éxito. Eso es precisamente lo que ofrece Snyk.
Comienza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.



