Einzigartig im .NET-Ökosystem: 75 % der 20 häufigsten Schwachstellen weisen einen hohen Schweregrad auf
Hayley Denbraver
25. Juli 2019
0 Min. LesezeitWillkommen zu unserem neuen Sicherheitsbericht: Einblicke in die Open-Source-Sicherheit im .NET-Ökosystem. Der Bericht ist in drei Beiträge unterteilt:
Einzigartig im .NET-Ökosystem: 75 % der 20 häufigsten Schwachstellen weisen einen hohen Schweregrad auf
Unser liebevoll gestalteter PDF-Bericht enthält all diese Informationen und mehr an einem Ort und kann kostenlos heruntergeladen werden.
Einführung
Im ersten Teil dieses Berichts haben wir das .NET-Ökosystem kennengelernt und besprochen, wie ein typisches Projekt in Bezug auf direkte und indirekte Abhängigkeiten aussieht. In diesem Teil des Berichts untersuchen wir die 20 bekannten Schwachstellen, die bei Snyk-Projektscans am häufigsten gefunden werden. Außerdem werfen wir einen Blick auf die zugehörigen Bibliotheken. Eine Diskussion bekannter Schwachstellentypen und Schweregrade auf Ökosystemebene finden Sie im letzten Abschnitt des Berichts.
Die am häufigsten auftretenden Schwachstellen in .NET-Projekten
Sehen wir uns nun die zehn Bibliotheken an, die unsere Nutzer derzeit am stärksten betreffen, weil sie am häufigsten in Snyk-Projektscans auftauchen. Zunächst betrachten wir die Merkmale der zehn wichtigsten Bibliotheken und anschließend drei davon genauer, die besonders interessante Schwachstellen enthalten. Die Tabelle enthält die erforderlichen Mindestversions-Upgrades, mit denen Sie auf eine Version ohne bekannte Schwachstellen wechseln können.

Bei der Betrachtung dieser Tabelle fallen einige Dinge auf. Erstens ist der plattformübergreifende Webserver ASP.NET Core Kestrel sehr beliebt und weist eine Reihe von Schwachstellen mit hohem Schweregrad auf, die auf verschiedene verwandte Bibliotheken zurückzuführen sind.
Zweitens ist die Gesamtzahl der Schwachstellen in diesen Bibliotheken in der Regel niedrig, ihr Schweregrad jedoch meist hoch. Mithilfe der Snyk Vulnerability Database und Daten aus der NuGet-Registry sehen wir uns die drei wichtigsten dieser Bibliotheken genauer an und erfahren, wie sie eingesetzt werden, wie beliebt sie sind und welche bekannten Schwachstellen sie enthalten.
system.net.http
system.net.http bietet eine Programmierschnittstelle für moderne HTTP-Anwendungen. Dazu gehören HTTP-Clientkomponenten, mit denen Anwendungen Webdienste über HTTP nutzen können, sowie HTTP-Komponenten, die sowohl Clients als auch Server zum Parsen von HTTP-Headern verwenden können.

Beliebtheit
system.net.http wurde insgesamt rund 81 Millionen Mal heruntergeladen. Auf die aktuelle Version (4.3.4) entfallen etwa 3,4 Millionen Downloads. System.http.net kommt auf durchschnittlich rund 31.000 Downloads pro Tag.
Schwachstellen
Bei Schwachstellen in system.net.http gibt es gute und schlechte Nachrichten. Zunächst die gute Nachricht: Die neueste Version dieser Bibliothek (4.3.4) weist keine bekannten Schwachstellen auf. Wenn Sie diese Bibliothek verwenden, führen Sie ein Upgrade auf die neueste Version durch!
Nun zu den schlechten Nachrichten: Andere Versionen dieser Bibliothek enthalten eine Reihe von Schwachstellen mit hohem Schweregrad. Eine dieser Schwachstellen tritt nur in sehr alten Versionen auf. Für Versionen vor 4.1.2 und für Versionen von 4.3 bis einschließlich 4.3.2 gibt es jedoch vier Schwachstellen mit hohem und eine mit mittlerem Schweregrad.
Diese Schwachstellen umfassen verschiedene Typen, darunter Offenlegung von Informationen, unzureichende Zertifikatsvalidierung, Rechteausweitung, Umgehung der Authentifizierung und Denial of Service. NuGet stellt interessante Statistiken zu dieser Bibliothek bereit, etwa dazu, welche Versionen wie oft heruntergeladen wurden. Außerdem gibt es detaillierte Informationen aus den letzten sechs Wochen.
Leider zeigen diese Statistiken, dass in den vergangenen sechs Wochen nur 16 % der Downloads dieser Bibliothek auf die neueste Version entfielen – die einzige Version, die vollständig frei von bekannten Schwachstellen ist. Das bedeutet, dass 84 % der Paket-Downloads in den letzten sechs Wochen Versionen betrafen, die mehrere bekannte Schwachstellen mit hohem Schweregrad enthalten.

Die Zahlen auf NuGet geben jedoch Anlass zur Hoffnung. Die neueste Version (4.3.4) ist seit sieben Monaten verfügbar, doch die Verbreitung scheint zuletzt zugenommen zu haben. Version 4.3.4 wurde etwa 3,3 Millionen Mal heruntergeladen, davon 1,2 Millionen Mal in den vergangenen sechs Wochen.
system.io.pipelines
Die Bibliothek system.io.pipelines ist ein Tool zur Verwaltung eines Byte-Puffers mit einem einzelnen Produzenten und einem einzelnen Konsumenten. Kurz gesagt: Diese Bibliothek erleichtert leistungsstarke Ein-/Ausgabevorgänge (I/O) in .NET.

Beliebtheit
system.io.pipelines wurde etwa 8,4 Millionen Mal heruntergeladen, darunter rund 600.000 Downloads der neuesten Version (4.5.3). Version 4.6.0 ist derzeit als Preview verfügbar.
Schwachstellen
Derzeit ist nur eine einzige bekannte Schwachstelle mit der Bibliothek system.io.pipelines verbunden. Ähnlich wie bei der zuvor besprochenen Bibliothek system.net.http gibt es gute und schlechte Nachrichten in Bezug auf die Schwachstelle in system.io.pipelines.
Zunächst die schlechten Nachrichten: Die einzige Schwachstelle mit hohem Schweregrad, die mit dieser Bibliothek verbunden ist, ist eine Denial-of-Service-Schwachstelle, die Ihre Website zum Absturz bringen kann. Die betreffende Schwachstelle hat einen hohen Schweregrad. Wird sie ausgenutzt, kann sie legitime Nutzer am Zugriff auf Ihre Website hindern, Ihre Serverkosten in die Höhe treiben und Ihnen viel Ärger bereiten.
Nun zu den guten Nachrichten: Die einzige Schwachstelle mit hohem Schweregrad, die mit dieser Bibliothek verbunden ist, ist eine Denial-of-Service-Schwachstelle.
Ja, auch das sind gute Nachrichten. Anders als bei anderen Schwachstellen zielen Denial-of-Service-Angriffe in der Regel nicht auf einen Einbruch in die Sicherheit ab. Trotz der Probleme, die eine solche Schwachstelle verursachen kann, ist es beruhigend, dass sie zwar wahrscheinlich Ihre Verfügbarkeit beeinträchtigt, aber voraussichtlich nicht zum Verlust von Daten oder personenbezogenen Informationen führt.
Unsere Empfehlung? Aktualisieren Sie system.io.pipelines auf Version 4.5.1 oder höher und behalten Sie den Sicherheitsstatus dieser neuen und nützlichen Bibliothek im Blick!
microsoft.aspnetcore.server.kestrel.core
Die Bibliothek microsoft.aspnetcore.server.kestrel.core ist die Kernkomponente des plattformübergreifenden Webservers ASP. NET Core Kestrel. Kestrel ist ein ereignisgesteuerter Server auf Basis asynchroner I/O und gilt allgemein als bevorzugter Webserver für neue ASP.NET-Anwendungen.

Beliebtheit
microsoft.aspnetcore.server.kestrel.core verzeichnet insgesamt mehr als 22 Millionen Downloads. Rund 630.000 davon entfallen auf die neueste Version (2.2.0), die Ende 2018 veröffentlicht wurde.
Schwachstellen
Diese Bibliothek weist derzeit vier bekannte Schwachstellen auf, darunter zwei Denial-of-Service-Schwachstellen mit mittlerem Schweregrad sowie eine Denial-of-Service-Schwachstelle und eine Rechteausweitung mit hohem Schweregrad. Die gute Nachricht: Die beiden neuesten Versionen (2.1.7 und 2.2.0) sind frei von bekannten Schwachstellen.
Die schlechte Nachricht bei dieser Bibliothek ist, dass auch eine verwandte Bibliothek (microsoft.aspnetcore.server.kestrel.transport.abstractions) in der Liste der Bibliotheken auftaucht, die mit den am häufigsten auftretenden Schwachstellen verbunden sind. Wenn Sie microsoft.aspnetcore.server.kestrel.core verwenden, nutzen Sie wahrscheinlich auch andere Bibliotheken mit häufig auftretenden Schwachstellen.
Denken Sie außerdem daran, dass Kestrel kein voll ausgestatteter Webserver ist und häufig hinter einer anderen Bibliothek betrieben wird. Ob Sie Kestrel eigenständig oder hinter einer Bibliothek wie NGINX oder IIS betreiben, beeinflusst Ihre Sicherheitsstrategie.
Die übrigen der 20 beliebtesten Bibliotheken, die die am häufigsten auftretenden Schwachstellen enthalten, werden in der folgenden Tabelle beschrieben.

Sehen wir uns nun die Schwachstellentypen, Schweregrade und Maßnahmen zur Behebung dieser Schwachstellen an.
Die am häufigsten gefundenen .NET-Schwachstellentypen
Unter den am häufigsten auftretenden Schwachstellen finden wir verschiedene Typen. Mehr als die Hälfte der Schwachstellen in den zehn wichtigsten Bibliotheken sind jedoch Denial-of-Service-Schwachstellen. Denial of Service (DoS) bezeichnet eine Gruppe von Angriffen, die alle darauf abzielen, ein System für die vorgesehenen und legitimen Nutzer unzugänglich zu machen.
Mehr als die Hälfte der Schwachstellen in den zehn wichtigsten Bibliotheken sind jedoch Denial-of-Service-Schwachstellen.

Das hat interessante Auswirkungen auf die Sicherheit, denn anders als bei anderen Schwachstellen zielen DoS-Angriffe in der Regel nicht auf einen Einbruch in die Sicherheit ab. Stattdessen sollen Websites und Dienste für echte Nutzer nicht verfügbar sein, was zu Ausfallzeiten führt.
Ein beliebter Denial-of-Service-Angriff ist DDoS (Distributed Denial of Service). Dabei wird versucht, die Netzwerkverbindungen zum System durch ein hohes Datenverkehrsaufkommen von zahlreichen Rechnern zu überlasten. Bei Open-Source-Bibliotheken können DoS-Schwachstellen Angreifern ermöglichen, einen Absturz oder eine schwerwiegende Beeinträchtigung des Dienstes auszulösen, indem sie eine Schwachstelle im Anwendungscode oder in verwendeten Open-Source-Bibliotheken ausnutzen.
Zwei häufige Arten von DoS-Schwachstellen sind:
Hoher CPU-/Speicherverbrauch – Ein Angreifer sendet speziell gestaltete Anfragen, die dazu führen können, dass das System unverhältnismäßig viel Zeit für deren Verarbeitung benötigt.
Absturz – Ein Angreifer sendet speziell gestaltete Anfragen, die zum Absturz des Systems führen können.
Niemand möchte einen kostspieligen Denial-of-Service-Angriff und die damit möglicherweise verbundene schlechte Presse, Ausfallzeiten und Umsatzeinbußen. Ein Sicherheitsvorfall, bei dem vertrauliche Informationen offengelegt werden, könnte jedoch noch viel schlimmer sein.
Schweregrad von Schwachstellen
Die schlechte Nachricht aus diesen Daten: Drei Viertel der am häufigsten auftretenden Schwachstellen weisen einen hohen Schweregrad auf. Schwachstellen mit mittlerem Schweregrad machen das verbleibende Viertel der 20 häufigsten Schwachstellen aus. Schwachstellen mit niedrigem Schweregrad haben wir nicht gefunden. Die CVSS-Scores lagen zwischen 5,3 und 8,8; der Median betrug 7,5.

75 % der am häufigsten auftretenden Schwachstellen weisen einen hohen Schweregrad auf.
Ein allgemeiner Trend, den wir im .NET-Ökosystem beobachten, ist, dass Projekte tendenziell nicht viele Schwachstellen aufweisen. Das könnte den Eindruck erwecken, Sicherheit könne erst einmal zurückgestellt werden. Die Statistiken zu den Schweregraden zeigen jedoch, warum diese Annahme falsch ist. Bekannte Schwachstellen treten im .NET-Ökosystem möglicherweise nicht so häufig auf, doch die vorhandenen können erhebliche Störungen und Schäden verursachen, wenn sie nicht behoben werden.
Jede Schwachstelle lässt sich beheben
Für jede einzelne der 20 häufigsten Schwachstellen bei Snyk gab es eine verfügbare Behebungsmöglichkeit.
Die meisten der 20 häufigsten Schwachstellen weisen möglicherweise einen hohen Schweregrad auf, aber es gibt auch gute Nachrichten: Für jede einzelne der 20 häufigsten Schwachstellen bei Snyk gab es eine verfügbare Behebungsmöglichkeit. Das sind ausgezeichnete Nachrichten. Es ist gut, von einer Sicherheitslücke zu wissen, selbst wenn keine Behebung verfügbar ist. Doch nichts ist besser als konkrete Handlungsempfehlungen, die zu einem sichereren Projekt führen.
Möchten Sie mehr erfahren?
Möchten Sie sich einen Überblick über bekannte Schwachstellen im Ökosystem verschaffen? Den letzten Teil unseres Berichts finden Sie hier.
Und natürlich können Sie den vollständigen Bericht kostenlos herunterladen.