Angular vs. React: Sicherheitsvergleich 2019
30. Oktober 2019
0 Min. LesezeitWillkommen 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.

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.

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.

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 |
|
| MIT | 3 mittelschwere |
|
|
| |
|
|
| |
|
| 3 schwerwiegende |
Sehen wir uns die folgenden Snyk-Scanergebnisse für ein Angular-Projekt an:

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).

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:
Angular vs. React: Sicherheitsvergleich 2019
Angular und React im direkten Vergleich: Sicherheitslücken 2019
Angular vs. React: Das Sicherheitsrisiko indirekter Abhängigkeiten
React und Angular im Vergleich: sichere Programmierpraktiken
84 % aller Websites sind von jQuery-XSS-Sicherheitslücken betroffen



