Este estudo se concentra na vulnerabilidade da poluição do protótipo, um "novo" tipo de vulnerabilidade de segurança, descoberto pela primeira vez em 2018, que não foi estudado em profundidade. A vulnerabilidade explora o design orientado ao protótipo do JavaScript. Ao modificar o protótipo de objetos nativos, como objeto, do qual a maioria dos outros objetos herda propriedades e métodos, é possível, dependendo da lógica do aplicativo específico, para aumentar para quase qualquer outra vulnerabilidade da Web.
Coletamos o código JavaScript que contém exemplos de vulnerabilidade de protótipo de Word Real Pollutiling Exemplos de pesquisa em bancos de dados de vulnerabilidades, como o GitHub Advisory e outras fontes. Para ter certeza de que os exemplos coletados são realmente vulneráveis, escrevemos uma exploração simples de prova de conceito para cada função vulnerável. Executamos as ferramentas de análise estática consideradas contra os aplicativos vulneráveis. Entre o conjunto de dados de vulnerabilidade, escolhemos alguns estudos de caso que analisamos em detalhes para explicar diferentes padrões de código que levam à vulnerabilidade. Esses estudos de caso foram escolhidos para mostrar resultados interessantes, o que nos permitiu destacar os pontos fortes e as limitações de cada ferramenta.
Odgen/objLupansys nova abordagem, baseada no gráfico de dependência de objetos que modelam as pesquisas de objetos com sucesso com base na cadeia de protótipos, podem detectar quase todos os casos de vulnerabilidade. A implementação experimental atual, no entanto, é afetada por bugs quando encontra alguns padrões de código. Ele também sofre de problemas sérios de desempenho ao analisar grandes pacotes ou certos padrões. Além disso, é muito propenso a sinalizar falsos positivos quando executados contra a versão corrigida de funções vulneráveis precedentemente.
As regras do SEMGREP não abrangem todos os casos como tarefas diretas, devido à diferença de incluir este caso sem ter uma taxa falsa positiva muito alta. O mecanismo SEMGREP oferece apenas uma análise limitada de fluxo de dados introprocedural e, como esperado, nem sempre pode detectar vulnerabilidade que são distribuídas em diferentes funções (por exemplo, chamadas recursivas indiretas). As regras sinalizam muitos falsos positivos quando executados contra a versão corrigida de funções precedentemente vulneráveis, pois a maioria das técnicas de mitigação nem sequer é considerada.
O CodeQL pode identificar quase todos os exemplos de vulnerabilidades coletados. As consultas consideradas parecem bem escritas, os problemas encontrados provavelmente são a limitação do mecanismo de código fechado. Para o que diz respeito aos postivos falsos, a maioria das técnicas de mitigação é considerada, portanto, as consultas CodeQL têm um desempenho significativamente melhor do que outras ferramentas.
Mais detalhes na tese pdf