Introducción Vulnerabilidades
¿Qué entendemos por vulnerabilidad?
La seguridad puede entenderse como la aplicación y ejecución de políticas por medio de mecanismos de defensa sobre datos y recursos. En esa misma línea, la seguridad de software se enfoca en evaluar, mejorar, hacer cumplir y comprobar propiedades de seguridad del software, con el fin de permitir su uso intencionado y evitar usos no previstos que puedan causar daño.
Dentro de ese marco, es importante distinguir entre bug y vulnerabilidad. Un bug es una falla en un programa o sistema que produce un resultado inesperado. Una vulnerabilidad, en cambio, es una debilidad del software que permite que un atacante aproveche una falla para escalar privilegios, alterar el estado del sistema, filtrar información o ejecutar acciones no autorizadas. Para que exista una vulnerabilidad explotable, deben darse al menos tres condiciones: que el sistema sea susceptible a la falla, que el adversario tenga acceso a ella y que cuente con la capacidad de explotarla.
Esta distinción es importante porque no todo error de software se transforma automáticamente en un problema de seguridad. Para que una falla pase a ser relevante desde el punto de vista defensivo, debe existir una ruta realista mediante la cual un atacante pueda convertir ese defecto en una ventaja operativa.
¿Por qué importa estudiar vulnerabilidades?
Estudiar vulnerabilidades importa porque la seguridad de un sistema no depende solo de sus funciones, sino también de la capacidad de resistir usos no autorizados. Defender software es difícil porque el atacante necesita encontrar una sola vía efectiva de entrada, mientras que quien defiende debe bloquear todas las rutas de ataque que sean factibles dentro de un modelo de amenazas dado.
Por eso, la identificación temprana de vulnerabilidades es una práctica central para reducir riesgo técnico y operativo. Una debilidad no detectada puede abrir la puerta a filtraciones de información, alteraciones indebidas del sistema, interrupciones de servicio o escalamiento de privilegios. Además, mientras más tarde se detecta un problema de seguridad, más costosa suele ser su corrección y mayor puede ser su impacto sobre usuarios, organizaciones y equipos de desarrollo.
Vulnerabilidades y modelo de amenazas
El concepto de modelo de amenazas funciona como una herramienta para enumerar y priorizar los riesgos que comprometen la seguridad de un sistema. En términos prácticos, esto obliga a preguntarse qué activos son valiosos, qué componentes son más expuestos y cuáles son las amenazas más relevantes según el contexto de uso.
Esta idea es especialmente útil al estudiar vulnerabilidades, porque permite pasar de una noción abstracta de “falla” a una evaluación más concreta del riesgo. Una misma debilidad puede tener implicancias muy distintas dependiendo de quién puede alcanzarla, qué capacidades tiene el atacante y qué efecto produce sobre la confidencialidad, integridad o disponibilidad del sistema.
Como referencia conceptual general para estas nociones, resulta útil revisar el material seguridad.pdf del curso, especialmente en lo relativo a seguridad de software, modelo de amenazas y distinción entre bugs y vulnerabilidades.
Vulnerabilidades, severidad y gestión del riesgo
No todas las vulnerabilidades tienen la misma criticidad. Su gravedad depende de factores como la facilidad de explotación, el impacto esperado, el contexto del sistema afectado y la existencia o no de medidas compensatorias. Por eso, además de detectar hallazgos, resulta necesario priorizarlos. Conceptos como severidad, riesgo y remediación son parte central del trabajo de análisis, ya que permiten distinguir entre problemas urgentes, mejoras importantes y observaciones de menor impacto inmediato.
Desde una perspectiva formativa, esto implica comprender que el análisis de vulnerabilidades no termina al producir un reporte. El valor real aparece cuando esos resultados se interpretan, se conectan con el contexto del proyecto y se transforman en decisiones concretas de corrección, seguimiento o mitigación.
Relación con este módulo
En este módulo, el tema se aborda desde dos ángulos complementarios. Por una parte, se revisa el análisis estático de código con herramientas como CodeQL para detectar problemas de seguridad directamente en los repositorios. Por otra, se examinan vulnerabilidades conocidas presentes en dependencias y componentes utilizados por esos proyectos con herramientas como Grype. De ese modo, el material no se limita a mostrar herramientas, sino que permite entender que una estrategia de seguridad razonable necesita observar tanto el código propio como el ecosistema de software del que depende.
Los notebooks posteriores desarrollan esa idea de manera aplicada. Algunos se enfocan en la ejecución de análisis y en la inspección de resultados; otros documentan la lógica de los scripts que automatizan esos flujos. Esta introducción, en cambio, busca entregar el marco conceptual mínimo para comprender por qué esos análisis son relevantes y qué tipo de preguntas ayudan a responder dentro de un proceso de desarrollo seguro.