Skip to main content

Execução remota de código, cross-site scripting e negação de serviço representam 2/3 das vulnerabilidades conhecidas no ecossistema .NET

Escrito por
Headshot of Hayley Denbraver

Hayley Denbraver

25 de julho de 2019

0 minutos de leitura

Conheça nosso novo relatório de segurança: insights sobre segurança no código aberto do .NET. Este relatório está dividido em três publicações:

Nosso caprichado relatório em PDF reúne todas essas informações e muito mais em um só lugar — e você pode baixá-lo gratuitamente!

O que a Snyk pode nos dizer sobre a segurança no ecossistema .NET?

Agora que analisamos as vulnerabilidades mais comuns, vamos observar o ecossistema .NET em uma perspectiva mais ampla. Quais tipos de vulnerabilidade são comuns nesse ecossistema? A tendência de alta gravidade também se confirma quando analisamos o ecossistema como um todo?

Tipos de vulnerabilidade

A tabela a seguir detalha os tipos de vulnerabilidade encontrados no ecossistema .NET que representam pelo menos 1% do total. Ela inclui o número de vulnerabilidades distintas de cada tipo encontradas no banco de dados de vulnerabilidades da Snyk e sua participação percentual. Apesar da grande variedade, apenas três tipos representam a maioria das vulnerabilidades encontradas. As vulnerabilidades de execução remota de código (RCE), cross-site scripting (XSS) e negação de serviço (DoS) correspondem a 2/3 das vulnerabilidades do .NET encontradas no banco de dados da Snyk.

Gráfico de barras dos tipos de vulnerabilidade, com destaque para execução remota de código, com 41%, seguida de cross-site scripting, com 13,2%, e negação de serviço, com 12,4%.

As vulnerabilidades de execução remota de código (RCE), cross-site scripting (XSS) e negação de serviço (DoS) correspondem a 2/3 das vulnerabilidades do .NET encontradas no banco de dados da Snyk.

Destaque sobre vulnerabilidades

Esta seção é uma análise rápida e útil para quem quer saber mais sobre os três principais tipos de vulnerabilidade no ecossistema .NET.

Execução remota de código

A execução remota de código é um tipo de vulnerabilidade que ocorre quando um invasor consegue executar comandos ou códigos arbitrários no seu aplicativo. A execução pode acontecer pela rede e, portanto, não está vinculada a uma localização geográfica específica. Uma vulnerabilidade relacionada é a de injeção de comandos.

Ilustração de um notebook com janelas de código e comandos de terminal identificados como “ProcessBuilder()”, “exec” e “bash”

Cross-site scripting

Um ataque de cross-site scripting ocorre quando o invasor engana um aplicativo ou site legítimo para que aceite uma solicitação como se ela viesse de uma fonte confiável. Isso é feito escapando do contexto do aplicativo web. Em seguida, o aplicativo entrega esses dados aos usuários junto com outros conteúdos dinâmicos confiáveis, sem validá-los.

Ilustração de um notebook exibindo código e um script mascarado, com o texto visível “<script>” e “document.cookie”, representando um ataque de cross-site scripting.

Negação de serviço

A negação de serviço é uma categoria de ataques cujo objetivo é impedir que usuários legítimos acessem um sistema. Diferentemente de outras vulnerabilidades, os ataques DoS geralmente não buscam comprometer a segurança. Em vez disso, eles se concentram em deixar sites e serviços indisponíveis para usuários legítimos, causando interrupções.

Ilustração isométrica de um disco rígido, módulos de memória e um símbolo de acesso bloqueado conectados por linhas neon, representando a proteção contra ataques de negação de serviço.

As vulnerabilidades conhecidas do .NET tendem a ter alta gravidade

Antes, ao analisarmos as 20 vulnerabilidades mais comuns, descobrimos que a maioria tinha alta gravidade. Essa tendência também se confirma quando consideramos todas as vulnerabilidades do .NET no banco de dados da Snyk? Sim! As vulnerabilidades de alta gravidade representam 70,7% do total. As de gravidade média vêm em seguida, com 26,9%. Apenas 2,4% das vulnerabilidades do .NET no banco de dados da Snyk são consideradas de baixa gravidade.

As vulnerabilidades de alta gravidade representam 70,7% do total. As de gravidade média vêm em seguida, com 26,9%.

Isso pode dar a impressão de que a segurança do .NET está em uma situação preocupante. Afinal, a proporção de vulnerabilidades de alta gravidade é grande. No entanto, até a data de publicação deste artigo, todas as vulnerabilidades encontradas pela Snyk em uma análise de dependências tinham uma correção disponível. Embora não possamos afirmar com 100% de certeza por que isso acontece, uma das razões pode ser o suporte que a Microsoft oferece ao ecossistema .NET.

Até a data de publicação deste artigo, todas as vulnerabilidades encontradas pela Snyk em uma análise de dependências tinham uma correção disponível.

Destaque de segurança: correção de vulnerabilidades

Mas o que é preciso fazer para corrigir uma vulnerabilidade? Nesta seção, explicamos o processo rapidamente.

Atualização

Quando uma vulnerabilidade é encontrada, os responsáveis pela manutenção do projeto geralmente incluem uma correção em uma versão futura, quando possível. O prazo pode variar bastante. Manter as versões atualizadas costuma ser uma boa maneira de acompanhar as vulnerabilidades de segurança.Às vezes, é difícil atualizar uma dependência. Isso pode acontecer porque as dependências interagem entre si e com o seu código.

Dependências diretas e indiretas

Normalmente, é simples corrigir vulnerabilidades em dependências diretas: basta atualizar a dependência para a versão mínima que inclui a correção.Corrigir vulnerabilidades em dependências indiretas exige duas coisas: uma versão corrigida da dependência indireta e uma versão da dependência direta que use essa versão corrigida.Se essas duas condições forem atendidas, atualizar a dependência direta correspondente para uma versão que use a versão corrigida da dependência indireta resolverá o problema.Se não houver correção disponível no nível da dependência direta, os desenvolvedores podem atualizar a dependência indireta para resolver o problema. No entanto, isso pode causar problemas de compatibilidade entre as dependências.

Conclusão

No ecossistema .NET, o número de vulnerabilidades por pacote é baixo, mas elas tendem a ter alta gravidade. Isso significa que provavelmente será preciso menos tempo para resolver os problemas (menor investimento), mas você estará corrigindo problemas de segurança potencialmente perigosos (alto retorno). Em outras palavras, ao corrigir as vulnerabilidades conhecidas nos pacotes .NET que você usa, você toma uma medida de segurança com alto retorno sobre o investimento.Na Snyk, nosso objetivo é ajudar as pessoas a usar código aberto com segurança. Para isso, criamos ferramentas que ajudam a encontrar e corrigir automaticamente vulnerabilidades conhecidas nas dependências. Mas também é importante identificar e divulgar novas vulnerabilidades da maneira adequada. Atualmente, o ecossistema .NET não tem um local centralizado para denunciar vulnerabilidades em bibliotecas de código aberto. A Snyk é uma autoridade de numeração CVE (CNA, na sigla em inglês), o que significa que podemos atribuir um número CVE a uma nova vulnerabilidade (basicamente, um identificador) e adicioná-la aos bancos de dados relevantes. Como CNA, a Snyk pode ajudar você a denunciar vulnerabilidades de forma responsável.Você pode saber mais sobre esse processo aqui: https://snyk.io/vulnerability-disclosure.

Obrigado!

Obrigado por ler nosso novo relatório sobre segurança no .NET. Esperamos que você tenha gostado. Queremos ajudar você a usar código aberto com segurança, então fique de olho em mais recursos como este no futuro.Lembre-se: você pode baixar o relatório completo gratuitamente.

Baixe o material sobre insights sobre segurança no código aberto do .NET.