Skip to main content

Angular vs. React: Sicherheitsvergleich 2019

Artikel von
JavaScript Report feature

30. Oktober 2019

0 Min. Lesezeit

Willkommen beim Snyk-Bericht 2019 zur Sicherheit von JavaScript-Frameworks.

Laden Sie den Bericht hier herunter.

Beginnen wir den Bericht mit einem Blick auf die verschiedenen Sicherheitslücken in den Kernprojekten Angular und React. Anschließend betrachten wir die Schweregrade der einzelnen Sicherheitslücken und untersuchen die Unterschiede zwischen den beiden Projekten. Abschließend betrachten wir für beide Projekte, wie viel Zeit von der Offenlegung einer Sicherheitslücke bis zu ihrer Behebung verging und wie lange es bis zur Veröffentlichung eines entsprechenden Upgrades dauerte (Time-to-Fix und Time-to-Release).

Kernprojekt Angular: Überblick über Sicherheitslücken

Bei den Angular-Kernprojekten haben wir gezielt die Sicherheitslücken im Zweig v1.x untersucht, der auch als AngularJS bezeichnet wird. AngularJS ist die am weitesten verbreitete veraltete Angular-Version und wurde offiziell bis zum 30. Juni 2021 unterstützt und gewartet – AngularJS 1.7 LTS.

Wir haben die monatlichen Downloadzahlen der npm-Pakete angular und @angular/core erfasst, die jeweils Angular v1.x und Angular v2.0 und höher entsprechen. Den von uns ausgewerteten Daten zufolge ist Angular v1.x weiterhin ein bedeutender Teil des Angular-Marktanteils und macht 28 % aller Angular-Downloads über sämtliche Versionen hinweg aus. Obwohl Angular seit v1.x viele weitere Hauptversionen veröffentlicht hat, laden Nutzer diese ältere Version weiterhin millionenfach pro Monat herunter.

Liniendiagramm: Downloads von Angular v1.x bei etwa 1,5–2 Millionen, neuere Versionen steigen von 3 auf 5,3 Millionen, Juni 2018–Juli 2019.

Das Diagramm oben zeigt, wie beliebt die Angular-Versionen 1.x im Vergleich zu den anderen Angular-Versionen sind: Die Versionen Angular 2.0 und höher sind zusammen durch die gelbe Linie dargestellt. Das Diagramm zeigt, dass Angular v1.x allein etwa ein Drittel (genauer gesagt 28 %) aller Angular-Downloads (neuer und älterer Versionen) ausmacht.

Wir vermuten, dass Angular-Versionen 1.x weiterhin genutzt werden, weil mittelständische und große Unternehmen nach wie vor Legacy-Anwendungen warten. Für diese Organisationen sind Technologieänderungen und Migrationspfade mit hohen Kosten verbunden. Die Anwendungen müssen jedoch weiterhin gewartet und regelmäßig veröffentlicht werden.

Diese Annahme unterstreicht, wie wichtig es ist, Sicherheitslücken in Open-Source-Komponenten wie dem Angular-Framework auch in älteren Versionen zu verfolgen. So können erkannte Sicherheitslücken in produktiv eingesetzten Anwendungen schnell behoben und eine Verschlechterung der Sicherheitslage eines Unternehmens im Laufe der Zeit verhindert werden.

Vor diesem Hintergrund fanden wir insgesamt 19 Sicherheitslücken in sechs verschiedenen Release-Zweigen von Angular v1.x. Die Aufschlüsselung nach Nebenversionen ist im folgenden Diagramm dargestellt.

Balkendiagramm der Schwachstellen in Angular 1.x nach Version: 1.1 hat 1, 1.2 hat 4, 1.3 hat 3, 1.4 hat 1, 1.5 hat 7 und 1.6 hat 3.

Angular und React: Gute Schwachstellendatenbanken sind entscheidend, um Sicherheitsprobleme aufzudecken

Snyk hat zwar dreiundzwanzig Sicherheitslücken in Angular v1.x erfasst, doch keine davon hat eine CVE-Referenz, da sie nicht über eines der offiziell anerkannten CVE-Programme offengelegt wurden. Das ist nicht unbedingt ein Versäumnis von Angular, sondern vielmehr gängige Praxis: CVEs wurden mit Blick auf kommerzielle Anbieter entwickelt. Ihre Meldung erfordert viel Zeit und Fachwissen – ein Ansatz, der sich nicht immer gut auf Open Source übertragen lässt.

Ohne CVE können Sicherheitslücken nur von spezialisierten Analysten erfasst werden, die Open-Source-Aktivitäten mit maßgeschneiderten Methoden überwachen und verfolgen. Nur wenige Lösungen bieten diese Möglichkeit.

Tools wie npm audit verfolgen zwar einige Sicherheitslücken, übersehen aber ebenfalls viele, für die keine CVE vorliegt. So übersieht npm audit, das standardmäßig im npm-Client enthalten ist, leider alle dreiundzwanzig Sicherheitslücken in Angular v1.x sowie alle Sicherheitslücken in React. Wer sich auf npm audit verlässt, kann daher ein falsches Gefühl der Sicherheit bekommen.

Terminal, das die Installation von angular@1.2.32 über npm, die Prüfung eines Pakets und null gefundene Sicherheitslücken zeigt.

Im Gegensatz dazu meldet die Schwachstellendatenbank von Snyk für Angular 1.x beispielsweise elf Sicherheitslücken für Angular v1.2.32:

Version

Veröffentlicht

Lizenz

Direkte Sicherheitslücken

angular 1.6.0-rc.1


(Vorabversion)


21. Nov. 2016

MIT

3 mittelschwere


angular 1.6.0-rc.0


(Vorabversion)


27. Okt. 2016


MIT


3 mittelschwere


11. Okt. 2016


MIT


6 mittelschwere


11. Okt. 2016


MIT

3 schwerwiegende
7 mittelschwere
1 geringfügige

Sehen wir uns die folgenden Snyk-Scanergebnisse für ein Angular-Projekt an:

Terminal mit einem npm-Audit-Bericht für Angular, der eine Cross-Site-Scripting-Sicherheitslücke mit hohem Schweregrad und Hinweise zur Behebung hervorhebt.

Diese Sicherheitslücken werden über die Snyk-Benutzeroberfläche oder das Snyk-CLI-Tool gemeldet. Darüber hinaus erstellt die Snyk-Benutzeroberfläche automatisch Pull Requests mit Korrekturen, um anfällige Pakete zu aktualisieren – dank Integrationen mit Systemen wie GitHub.

Bei React sieht es ähnlich aus: npm audit übersieht alle drei Sicherheitslücken im Zusammenhang mit React. Von den drei öffentlich bekannten Sicherheitslücken (zwei betreffen die Kernbibliothek react, eine die Kernbibliothek react-dom) hat nur die letzte eine CVE-Kennung, die in der National Vulnerability Database erfasst ist (https://nvd.nist.gov).

Terminalausgabe mit der Installation von React-Paketen durch npm: 29 Pakete werden geprüft, 0 Sicherheitslücken gefunden

Kernprojekt React: Überblick

Für diesen Bericht haben wir die Bibliotheken react, react-dom und prop-types als React-„Kernmodule“ betrachtet, da sie zusammen häufig die Grundlage für mit React entwickelte Webanwendungen bilden.

In diesen Kernmodulen fanden wir insgesamt drei Sicherheitslücken: zwei in react und eine in react-dom.

Alle drei sind Cross-Site-Scripting-Sicherheitslücken (XSS). Die beiden XSS-Sicherheitslücken im npm-Paket React sind recht alt: Sie betreffen die Versionen 0.5.x aus dem Jahr 2013 sowie die vor 0.14 veröffentlichten Versionen, die 2015 offengelegt wurden.

Die XSS-Sicherheitslücke im Release-Zweig v16.x von react-dom ist dagegen relativ neu und wurde erst vor etwas mehr als einem Jahr, im August 2018, offengelegt. Sie tritt jedoch nur auf, wenn weitere Voraussetzungen erfüllt sind, etwa wenn die react-dom-Bibliothek im Kontext des serverseitigen Renderings verwendet wird. Dennoch empfiehlt es sich immer, Sicherheitskorrekturen zeitnah einzuspielen und Open-Source-Komponenten so früh wie möglich zu aktualisieren, um unnötige Sicherheitsrisiken zu vermeiden.

Im Fokus: Preact – eine React-Alternative

Neben den drei Sicherheitslücken im React-Kernprojekt haben wir auch eine mittelschwere Sicherheitslücke durch die Deserialisierung nicht vertrauenswürdiger Daten in Preact erfasst. Da viele Entwickler Preact gegenüber React bevorzugen, weil es schlanker und schneller ist, wollten wir uns die Sache genauer ansehen. Diese mittelschwere Sicherheitslücke in Preact betrifft die Vorabversionen des Zweigs 10.0.0 aus dem März und April 2019.


Wir empfehlen dringend, die vollständige Version des Berichts im digitalen Format herunterzuladen. Die folgenden allgemeinen Abschnitte haben wir jedoch auch als Blogbeiträge veröffentlicht:

Weiterlesen

blog feature ai violet
Blog

VulnBump: Können KI-Agenten anfällige Abhängigkeiten beheben, ohne den Build zu beschädigen?

VulnBump testet KI-Agenten anhand von 307 realen Dependency-Upgrades. Eine Lösung zählt nur, wenn die Sicherheitslücke behoben ist und Build sowie Tests weiterhin erfolgreich sind.

blog feature snyk container custom base recommendations
Blog

Evo Agentic AppSec: Sicherheit, die mit der KI-Entwicklung Schritt hält

KI-gestützte Entwicklung überholt herkömmliche Security-Workflows. Snyk Agentic AppSec setzt Security-Agenten ein, die Schwachstellen kontinuierlich finden, beheben und überprüfen – während Menschen die Maßstäbe festlegen.

Blog

Frontier-Modelle fanden die Schwachstellen. Nur der Angreifer fand die Angriffsketten.

Die statische Analyse fand die Schwachstellen, doch erst Live-Angriffstests bewiesen, wie sie sich zu Angriffen verketten lassen. Ein Vergleich von Evo COS, Claude Security und Claude Code Security.