Skip to main content

¿Sabes qué tan seguras son tus dependencias de .NET?

Escrito por
Headshot of Hayley Denbraver

Hayley Denbraver

Snyk: Develop fast. Stay Secure.

3 de mayo de 2019

0 minutos de lectura

A principios de este año, Snyk agregó compatibilidad para integrarse con los proyectos .NET de tu repositorio de Git y, apenas esta semana, lanzamos la última incorporación: compatibilidad con Microsoft Azure.

En este blog, analizamos las bibliotecas que, por contener las vulnerabilidades más comunes de hoy, también aparecen con mayor frecuencia en los análisis de proyectos de Snyk. Descubriremos las «diez bibliotecas principales» que actualmente afectan más a nuestros usuarios y las examinaremos con más detalle. Primero, revisemos rápidamente las características de las diez principales y luego profundicemos en tres de estas bibliotecas, que contienen vulnerabilidades particularmente interesantes. Usaremos Snyk Vulnerability Database y los datos del registro de NuGet para investigar cómo se usa cada biblioteca, qué tan popular es y qué vulnerabilidades conocidas contiene.

Las diez bibliotecas principales

La siguiente tabla describe estas diez bibliotecas principales:

Posición

Biblioteca

Uso

Vulnerabilidades*

Descargas totales

1

Interfaz de programación para aplicaciones HTTP modernas

5 de gravedad alta
1 de gravedad media

81 M

2

Herramienta de administración de búferes de bytes con un solo productor y un solo consumidor

1 de gravedad alta


8.5 M

3

Componente principal del servidor web multiplataforma Kestrel de ASP.NET Core

2 de gravedad alta
2 de gravedad media

22.1 M

4

Protocolo que habilita canales de comunicación bidireccionales y persistentes a través de conexiones TCP

1 de gravedad media

3.6 M

5

Protocolo de acceso a datos para la web

1 de gravedad alta

42.4 M

6

Middleware de sockets web para usarse sobre servidores opacos

1 de gravedad alta
1 de gravedad media

12.5 M

7

Biblioteca que proporciona clases para admitir la creación y validación de firmas digitales XML

1 de gravedad alta

13.6 M

8

Abstracciones de transporte para el servidor web multiplataforma Kestrel de ASP.NET Core

1 de gravedad alta

22.1 M

9

Biblioteca que proporciona comunicación de red segura entre los puntos de conexión del cliente y del servidor

3 de gravedad alta
1 de gravedad media

42.6 M

10

Sistema de membresía para crear aplicaciones web con ASP.NET Core

1 de gravedad alta

18.3 M

*Acumulado de todas las versiones

Al revisar esta tabla, destacan algunos aspectos.

Primero, el servidor web multiplataforma Kestrel de ASP.NET Core es popular y actualmente presenta varias vulnerabilidades de gravedad alta derivadas de distintas bibliotecas relacionadas.

Segundo, el número total de vulnerabilidades de estas bibliotecas suele ser bajo, pero su gravedad suele ser alta.

Por último, es interesante observar que, aunque todas estas bibliotecas parecen tener un uso extendido, el número total de descargas de una biblioteca no se correlaciona directamente con su posición en nuestra lista. La biblioteca system.net.http tiene tanto el mayor número de descargas totales como el mayor impacto en nuestros usuarios, pero las bibliotecas de las posiciones 2 a 10 de la lista sí muestran una correlación directa similar.

Ahora veamos las tres bibliotecas que han tenido el mayor impacto en nuestros usuarios.

System.Net.Http

Primero, analizaremos la biblioteca system.net.http, que es la que concentra las vulnerabilidades que vemos con mayor frecuencia en nuestros análisis.

¿Qué hace esta biblioteca?

System.net.http es una biblioteca que proporciona una interfaz de programación para aplicaciones HTTP modernas. Incluye componentes de cliente HTTP que permiten a las aplicaciones consumir servicios web a través de HTTP, y componentes HTTP que tanto clientes como servidores pueden usar para analizar encabezados HTTP.

System.net.http tiene alrededor de 81 millones de descargas totales. La versión actual (4.3.4), que al momento de escribir este artículo tenía 7 meses, suma alrededor de 3.4 millones de descargas. System.http.net registra un promedio de 31,000 descargas al día.

¿Qué sabemos sobre las vulnerabilidades de esta biblioteca?

Hay buenas y malas noticias con respecto a las vulnerabilidades de system.net.http.

Primero, las buenas noticias. La versión más reciente de esta biblioteca (4.3.4) no tiene vulnerabilidades conocidas. Si usas esta biblioteca, ¡actualízala a la versión más reciente!

Ahora, las malas noticias. Otras versiones de esta biblioteca incluyen varias vulnerabilidades de gravedad alta. Una de estas vulnerabilidades solo está presente en versiones muy antiguas, pero hay cuatro vulnerabilidades de gravedad alta y una de gravedad media en las versiones anteriores a la 4.1.2 y en las versiones 4.3.X anteriores a la 4.3.4.

Estas vulnerabilidades son de varios tipos e incluyen divulgación de información, validación incorrecta de certificados, escalamiento de privilegios, omisión de autenticación y denegación de servicio. NuGet ofrece estadísticas interesantes sobre esta biblioteca, como las versiones que se descargaron y con qué frecuencia, e incluso incluye información detallada de las últimas 6 semanas.

Lamentablemente, estas estadísticas muestran que solo el 16 % de las descargas de esta biblioteca durante las últimas seis semanas correspondieron a la versión más reciente (la única versión completamente libre de vulnerabilidades conocidas). Esto significa que actualmente, la mayoría de las personas que descargan la biblioteca están descargando versiones que incluyen varias vulnerabilidades conocidas de gravedad alta.

Las cifras de NuGet dan motivos para tener esperanza. La versión más reciente (4.3.4) lleva 7 meses disponible, pero parece que el ritmo de adopción ha aumentado últimamente. La versión 4.3.4 se descargó aproximadamente 3.3 millones de veces, pero 1.2 millones de esas descargas ocurrieron en las últimas seis semanas.

¿Qué recomienda Snyk? Si usas esta biblioteca, actualízala a la versión actual (4.3.4).

System.IO.Pipelines

Ahora veamos la segunda biblioteca de nuestra lista: system.io.pipelines. Esta biblioteca es relativamente nueva; existe desde finales de 2017. En nuestra lista de las diez principales, ocupa el penúltimo lugar en cuanto a descargas totales, algo lógico dado que se lanzó recientemente.

¿Qué hace esta biblioteca?

La biblioteca system.io.pipelines es una herramienta de administración de búferes de bytes con un solo productor y un solo consumidor. En resumen, esta biblioteca facilita la ejecución de operaciones de E/S (entrada/salida) de alto rendimiento en .NET.

System.io.pipelines se ha descargado aproximadamente 8.4 millones de veces, incluidas alrededor de 600 mil descargas de la versión más reciente (4.5.3). La versión 4.6.0 está actualmente en vista previa.

¿Qué sabemos sobre las vulnerabilidades de esta biblioteca?

Actualmente, solo hay una vulnerabilidad conocida asociada con la biblioteca system.io.pipelines. Al igual que con la biblioteca system.net.http que analizamos antes, hay buenas y malas noticias con respecto a la vulnerabilidad de system.io.pipelines.

Primero, las malas noticias. La única vulnerabilidad de gravedad alta asociada con esta biblioteca es una vulnerabilidad de denegación de servicio, capaz de bloquear tu sitio web. La vulnerabilidad en cuestión tiene una puntuación de gravedad alta y, si se aprovecha, puede impedir que usuarios legítimos accedan a tu sitio web, aumentar los costos de tus servidores y causarte muchos dolores de cabeza.

Ahora, las buenas noticias. La única vulnerabilidad de gravedad alta asociada con esta biblioteca es una vulnerabilidad de denegación de servicio. ¡Sí! Esto también es una buena noticia. A diferencia de otras vulnerabilidades, los ataques de denegación de servicio (DoS) normalmente no buscan vulnerar la seguridad. A pesar de los dolores de cabeza que puede causar una vulnerabilidad así, es tranquilizador saber que, aunque probablemente afecte el tiempo de actividad, no es probable que provoque la pérdida de datos o información personal.

¿Qué recomienda Snyk? Actualiza system.io.pipelines a la versión 4.5.1 o posterior y mantente al tanto del estado de seguridad de esta biblioteca nueva y útil.

Microsoft.AspNetCore.Server.Kestrel.Core

Por último, analicemos la tercera biblioteca de nuestra lista: microsoft.aspnetcore.server.kestrel.core.

¿Qué hace esta biblioteca?

La biblioteca microsoft.aspnetcore.server.kestrel.core es el componente principal del servidor web multiplataforma Kestrel de ASP.NET Core. Kestrel es un servidor asincrónico basado en E/S y orientado a eventos, y suele considerarse el servidor web preferido para las nuevas aplicaciones de ASP.NET. El servidor web Kestrel no tiene todas las funciones necesarias para funcionar de manera independiente, pero es muy rápido para las operaciones de E/S asíncronas y puede funcionar junto con IIS o NGINX.

Microsoft.aspnetcore.server.kestrel.core registra más de 22 millones de descargas totales. Alrededor de 630 mil de estas descargas corresponden a la versión más reciente (2.2.0), que se lanzó a finales de 2018.

¿Qué sabemos sobre las vulnerabilidades de esta biblioteca?

Actualmente, esta biblioteca tiene cuatro vulnerabilidades conocidas, incluidas dos vulnerabilidades de denegación de servicio de gravedad media y una vulnerabilidad de denegación de servicio y otra de escalamiento de privilegios de gravedad alta. La buena noticia es que las dos versiones más recientes (2.1.7 y 2.2.0) no tienen vulnerabilidades conocidas.

La mala noticia con respecto a esta biblioteca es que otra biblioteca relacionada (microsoft.aspnet.core.server.kestrel.transport.abstractions) también aparece en la lista. Si usas microsoft.aspnetcore.server.kestrel.core, es probable que también uses microsoft.aspnet.core.server.kestrel.transport.abstractions. Además, es importante recordar que Kestrel no es un servidor web con todas las funciones y suele ejecutarse detrás de otra biblioteca. Elegir si ejecutas Kestrel de forma independiente o detrás de una biblioteca como NGINX o IIS influirá en tu enfoque de seguridad.

Conclusión

Esperamos que hayas disfrutado este análisis detallado de las bibliotecas de .NET que, según nuestros análisis, son responsables de la mayoría de las vulnerabilidades en los proyectos de nuestros usuarios. Pronto compartiremos más contenido sobre .NET mientras celebramos nuestra reciente alianza con Azure. ¿Usas alguna de estas bibliotecas? ¿Te interesa proteger tus proyectos de .NET? Prueba Snyk gratis hoy mismo.

Empieza con los desafíos de Capture the Flag

Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.