Skip to main content

Você sabe o nível de segurança das suas dependências .NET?

Escrito por
Headshot of Hayley Denbraver

Hayley Denbraver

Snyk: Develop fast. Stay Secure.

3 de maio de 2019

0 minutos de leitura

No início deste ano, o Snyk adicionou suporte à integração com projetos .NET do seu repositório Git e, nesta semana, lançamos a novidade mais recente: suporte ao Microsoft Azure.

Neste artigo, vamos analisar as bibliotecas que aparecem com mais frequência nas verificações de projetos do Snyk por conterem as vulnerabilidades mais comuns atualmente. Vamos revelar as “dez bibliotecas mais problemáticas” para nossos usuários neste momento e examiná-las mais de perto. Primeiro, vamos conferir rapidamente as características das dez principais e, em seguida, analisar com mais profundidade três bibliotecas com vulnerabilidades particularmente interessantes. Usando o Snyk Vulnerability Database e os dados do registro NuGet, vamos investigar como cada biblioteca é usada, qual é sua popularidade e quais vulnerabilidades conhecidas ela contém.

Dez principais bibliotecas

A tabela a seguir apresenta essas dez principais bibliotecas:

Posição

Biblioteca

Uso

Vulnerabilidades*

Downloads acumulados

1

Interface de programação para aplicações HTTP modernas

5 de alta gravidade
1 de gravidade média

81 M

2

Ferramenta de gerenciamento de buffer de bytes com um único produtor e um único consumidor

1 de alta gravidade


8,5 M

3

Componente principal do servidor web multiplataforma Kestrel do ASP.NET Core

2 de alta gravidade
2 de gravidade média

22,1 M

4

Protocolo que permite canais de comunicação persistentes e bidirecionais por conexões TCP

1 de gravidade média

3,6 M

5

Protocolo de acesso a dados para a web

1 de alta gravidade

42,4 M

6

Middleware de WebSocket para uso sobre servidores opacos

1 de alta gravidade
1 de gravidade média

12,5 M

7

Biblioteca com classes para dar suporte à criação e validação de assinaturas digitais XML

1 de alta gravidade

13,6 M

8

Abstrações de transporte para o servidor web multiplataforma Kestrel do ASP.NET Core

1 de alta gravidade

22,1 M

9

Biblioteca que oferece comunicação segura em rede entre endpoints de cliente e servidor

3 de alta gravidade
1 de gravidade média

42,6 M

10

Sistema de associação para criar aplicações web com ASP.NET Core

1 de alta gravidade

18,3 M

*Acumulado para todas as versões

Ao analisar esta tabela, alguns pontos chamam a atenção.

Primeiro, o servidor web multiplataforma Kestrel do ASP.NET Core é popular e, atualmente, apresenta várias vulnerabilidades de alta gravidade provenientes de diferentes bibliotecas relacionadas.

Segundo, o número total de vulnerabilidades nessas bibliotecas costuma ser baixo, mas a gravidade delas geralmente é alta.

Por fim, é interessante notar que, embora todas essas bibliotecas pareçam ser amplamente utilizadas, o número total de downloads de uma biblioteca não corresponde diretamente à sua posição na lista. A system.net.http tem o maior número de downloads acumulados e o maior impacto sobre nossos usuários, mas, nas posições de 2 a 10, as bibliotecas apresentam uma correlação direta semelhante.

Agora, vamos analisar as três bibliotecas que mais impactaram nossos usuários.

System.Net.Http

Para começar, vamos analisar a biblioteca system.net.http, responsável pelas vulnerabilidades que aparecem com mais frequência em nossas verificações.

O que essa biblioteca faz?

A system.net.http é uma biblioteca que oferece uma interface de programação para aplicações HTTP modernas. Ela inclui componentes de cliente HTTP que permitem às aplicações consumir serviços web por HTTP, além de componentes HTTP que clientes e servidores podem usar para analisar cabeçalhos HTTP.

Qual é a popularidade da biblioteca?

A system.net.http tem cerca de 81 milhões de downloads acumulados. A versão atual (4.3.4), que tinha 7 meses no momento da publicação deste artigo, representa cerca de 3,4 milhões de downloads. A system.http.net registra, em média, cerca de 31 mil downloads por dia.

O que sabemos sobre as vulnerabilidades dessa biblioteca?

Há boas e más notícias sobre as vulnerabilidades na system.net.http.

Primeiro, as boas notícias. A versão mais recente dessa biblioteca (4.3.4) não tem vulnerabilidades conhecidas. Se você usa essa biblioteca, atualize para a versão mais recente!

Agora, as más notícias. Outras versões dessa biblioteca contêm várias vulnerabilidades de alta gravidade. Uma delas está presente apenas em versões muito antigas, mas há quatro vulnerabilidades de alta gravidade e uma de gravidade média nas versões anteriores à 4.1.2 e nas versões 4.3.X anteriores à 4.3.4.

Essas vulnerabilidades são de vários tipos e incluem exposição de informações, validação inadequada de certificados, elevação de privilégio, desvio de autenticação e negação de serviço. O NuGet oferece estatísticas interessantes sobre essa biblioteca, incluindo as versões baixadas e a frequência de downloads, além de informações detalhadas das últimas seis semanas.

Infelizmente, essas estatísticas mostram que apenas 16% dos downloads dessa biblioteca nas últimas seis semanas foram da versão mais recente, a única totalmente livre de vulnerabilidades conhecidas. Isso significa que, atualmente, a maioria das pessoas que baixa a biblioteca está obtendo versões com várias vulnerabilidades conhecidas de alta gravidade.

Os números do NuGet trazem uma esperança. A versão mais recente (4.3.4) foi lançada há 7 meses, mas o ritmo de adoção parece ter aumentado recentemente. A versão 4.3.4 teve cerca de 3,3 milhões de downloads, dos quais 1,2 milhão ocorreram nas últimas seis semanas.

A recomendação do Snyk? Se você usa essa biblioteca, atualize para a versão atual (4.3.4).

System.IO.Pipelines

Agora, vamos analisar a segunda biblioteca da nossa lista: system.io.pipelines. Essa biblioteca é relativamente recente, tendo surgido no fim de 2017. Na nossa lista das dez principais, ela ocupa a penúltima posição em downloads acumulados, o que faz sentido por ter sido lançada há pouco tempo.

O que essa biblioteca faz?

A biblioteca system.io.pipelines é uma ferramenta de gerenciamento de buffer de bytes com um único produtor e um único consumidor. Em resumo, ela facilita a realização de operações de E/S (entrada/saída) de alto desempenho no .NET.

Qual é a popularidade da biblioteca?

A system.io.pipelines teve aproximadamente 8,4 milhões de downloads, incluindo cerca de 600 mil downloads da versão mais recente (4.5.3). A versão 4.6.0 está atualmente em prévia.

O que sabemos sobre as vulnerabilidades dessa biblioteca?

Atualmente, há apenas uma vulnerabilidade conhecida associada à system.io.pipelines. Assim como na biblioteca system.net.http, discutida anteriormente, há boas e más notícias sobre a vulnerabilidade na system.io.pipelines.

Primeiro, as más notícias. A única vulnerabilidade de alta gravidade associada a essa biblioteca é uma vulnerabilidade de negação de serviço — que pode derrubar seu site. Ela tem uma pontuação de gravidade alta e, se explorada, pode impedir que usuários legítimos acessem seu site, aumentar os custos do servidor e causar muita dor de cabeça.

Agora, as boas notícias. A única vulnerabilidade de alta gravidade associada a essa biblioteca é uma vulnerabilidade de negação de serviço. Sim, isso também é uma boa notícia. Ao contrário de outros tipos de vulnerabilidade, os ataques de negação de serviço (DoS) geralmente não têm como objetivo violar a segurança. Apesar da dor de cabeça que uma vulnerabilidade assim pode causar, é tranquilizador saber que, embora possa prejudicar a disponibilidade do serviço, ela provavelmente não resultará na perda de dados ou informações pessoais.

A recomendação do Snyk? Atualize a system.io.pipelines para a versão 4.5.1 ou superior e acompanhe o status de segurança dessa biblioteca nova e útil!

Microsoft.AspNetCore.Server.Kestrel.Core

Por fim, vamos analisar a terceira biblioteca da nossa lista: microsoft.aspnetcore.server.kestrel.core.

O que essa biblioteca faz?

A biblioteca microsoft.aspnetcore.server.kestrel.core é o componente principal do servidor web multiplataforma Kestrel do ASP.NET Core. O Kestrel é um servidor orientado a eventos e baseado em E/S assíncrona, geralmente considerado o servidor web preferido para novas aplicações ASP.NET. O servidor web Kestrel não tem todos os recursos necessários para funcionar de forma independente, mas é muito rápido em operações de E/S assíncronas e pode trabalhar em conjunto com o IIS ou o NGINX.

Qual é a popularidade da biblioteca?

A Microsoft.aspnetcore.server.kestrel.core registra mais de 22 milhões de downloads acumulados. Cerca de 630 mil desses downloads são da versão mais recente (2.2.0), lançada no fim de 2018.

O que sabemos sobre as vulnerabilidades dessa biblioteca?

Atualmente, essa biblioteca tem quatro vulnerabilidades conhecidas, incluindo duas vulnerabilidades de negação de serviço de gravidade média e uma de negação de serviço e outra de elevação de privilégio de alta gravidade. A boa notícia é que as duas versões mais recentes (2.1.7 e 2.2.0) não têm vulnerabilidades conhecidas.

A má notícia é que uma biblioteca relacionada (microsoft.aspnet.core.server.kestrel.transport.abstractions) também aparece na lista. Se você usa microsoft.aspnetcore.server.kestrel.core, provavelmente também usa microsoft.aspnet.core.server.kestrel.transport.abstractions. Além disso, é importante lembrar que o Kestrel não é um servidor web completo e costuma ser executado atrás de outra biblioteca. A decisão de executar o Kestrel de forma independente ou atrás de uma biblioteca como NGINX ou IIS afeta sua abordagem de segurança.

Conclusão

Esperamos que você tenha gostado desta análise mais detalhada das bibliotecas .NET que, segundo nossas verificações, são responsáveis pelo maior número de vulnerabilidades nos projetos dos nossos usuários. Em breve, traremos mais conteúdo sobre .NET para celebrar nossa recente parceria com o Azure. Você usa alguma dessas bibliotecas? Quer proteger seus projetos .NET? Experimente o Snyk grátis hoje mesmo.

Comece a resolver desafios de capture the flag

Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.