Este estudio se centra en la vulnerabilidad de la contaminación prototipo, un "nuevo" tipo de vulnerabilidad de seguridad, descubierto por primera vez en 2018, que no se ha estudiado en profundidad. La vulnerabilidad explota el diseño orientado al prototipo de JavaScript. Al modificar el prototipo de objetos nativos como el objeto, desde el cual la mayoría de los otros objetos heredan propiedades y métodos, es posible, dependiendo de la lógica de la aplicación específica, para que se intensifique a casi cualquier otra vulnerabilidad web.
Recopilamos un código JavaScript que contiene ejemplos de vulnerabilidad de contaminación de palabras reales de palabras que buscan en bases de datos de vulnerabilidades como GitHub Advisory y otras fuentes. Para asegurarse de que los ejemplos recopilados sean realmente vulnerables, escribimos una prueba de concepto simple para cada función vulnerable. Ejecutamos las herramientas de análisis estático consideradas contra las aplicaciones vulnerables. Entre el conjunto de datos de vulnerabilidad, elegimos algunos estudios de casos que analizamos en detalle para explicar diferentes patrones de código que conducen a la vulnerabilidad. Estos estudios de caso fueron elegidos para mostrar resultados interesantes que nos permitieron resaltar las fortalezas y limitaciones de cada herramienta.
Odgen/Objlupansys El nuevo enfoque, basado en el gráfico de dependencia de objetos que con éxito modela las búsquedas de objetos basadas en la cadena de prototipos, puede detectar casi todos los casos de vulnerabilidad. Sin embargo, la implementación experimental actual se ve afectada por errores cuando encuentra algunos patrones de código. También sufre serios problemas de rendimiento al analizar paquetes grandes o ciertos patrones. Además, es muy propenso a marcar falsos positivos cuando se ejecuta contra la versión parcheada de funciones precedentemente vulnerables.
Las reglas de Semgrep no cubren todos los casos, como asignaciones directas, debido a la diferencia de incluir este caso sin tener una tasa de falsos positivos muy altos. El motor SEMGREP ofrece solo un análisis limitado de flujo de datos intraproceduros, y como se esperaba, como se esperaba, no siempre puede detectar vulnerabilidad que se distribuyan en diferentes funciones (por ejemplo, llamadas recursivas indirectas). Las reglas marcan a muchos falsos positivos cuando se ejecutan contra la versión parcheada de funciones precedentemente vulnerables, ya que la mayoría de las técnicas de mitigación ni siquiera se consideran.
CodeQL puede identificar casi todos los ejemplos de vulnerabilidad recopilados. Las consultas consideradas parecen estar bien escritas, los problemas encontrados son probablemente la limitación del motor de código cerrado. Para lo que se refiere a los positivos falsos, se consideran la mayoría de las técnicas de mitigación, por lo que las consultas CodeQL funcionan significativamente mejor que otras herramientas.
Más detalles en la tesis pdf