Sicherheitslücken in Angular und React im Vergleich: Stand 2019
30. Oktober 2019
0 Min. LesezeitWillkommen beim Snyk-Bericht zum Sicherheitsstatus von JavaScript-Frameworks 2019.
In diesem Abschnitt betrachten wir die Auswirkungen von Sicherheitslücken anhand ihrer Schweregrade, CVSS-Scores und weiterer Faktoren im Laufe der Jahre für Angular und React. Außerdem untersuchen wir, wie lange es dauert, Sicherheitslücken in den jeweiligen Frameworks zu beheben und entsprechende Releases bereitzustellen, und zeigen, wie sich dies im Laufe der Jahre entwickelt hat.
Laden Sie hier den Bericht herunter!
Angular vs. React: Schweregrade von Sicherheitslücken im Vergleich
Die Schweregrade der für React- und Angular-basierte Frontend-Projekte gefundenen Sicherheitsprobleme geben weitere Einblicke in das Gesamtrisiko, das von ihnen ausgeht.
Was ist CVSS?
Dazu sollten wir kurz das Bewertungssystem CVSS betrachten. Ähnlich wie allgemeine Fehler im Quellcode mit einem Schweregrad wie „hoch“ oder „mittel“ eingestuft werden, erhalten auch Sicherheitsfehler – die wir als Sicherheitslücken bezeichnen – einen Schweregrad. Dieser trägt dazu bei, das potenzielle Risiko für ein Unternehmen zu bestimmen.
Sicherheitslücken werden anhand des Common Vulnerability Scoring System (CVSS) eingestuft. Es gilt bei der Organisation FIRST de facto als Standard und wird häufig zur Bewertung von Common Vulnerabilities and Exposures verwendet, kurz CVEs.
Damit sich Sicherheitslücken einfach vergleichen lassen, ordnet CVSS den numerischen Scores Wertebereichen zu, die jeweils einem Schweregrad entsprechen.
Eine ausführliche Erklärung von CVSS und seinen Herausforderungen finden Sie unter https://snyk.io/blog/scoring-security-vulnerabilities-101-introducing-cvss-for-cve/
Im gesamten Bericht beziehen wir uns auf die CVSS-v2-Bewertung, die in der folgenden Tabelle dargestellt ist:
Schweregrad | Score |
|---|---|
0.1 - 3.9 | niedrig |
4.0 - 6.9 | mittel |
7.0 - 10.00 | hoch |
Angular und React: CVSS-Ergebnisse
Obwohl in den React-Core-Paketen nur sehr wenige Sicherheitslücken entdeckt wurden, handelt es sich bei allen um Cross-Site-Scripting-Sicherheitslücken, die regelmäßig alle paar Jahre offengelegt wurden. Ihre CVSS-Scores liegen zwischen 6,5 und 7,1 – sie haben also alle einen mittleren bis hohen Schweregrad.
Die folgende Grafik zeigt die Schweregrade der Sicherheitslücken im React-Core-Projekt im Zeitverlauf:

Bei den Sicherheitslücken in Angular v1.x sehen wir, dass Angular v1.5 die meisten aufweist: insgesamt sieben, davon drei mit hohem und vier mit mittlerem Schweregrad. Glücklicherweise nimmt die Zahl der Sicherheitslücken mit zunehmender Reife der Versionen ab – sowohl hinsichtlich des Schweregrads als auch der Anzahl. 2019 wurden bislang für keine Angular-Version neue Sicherheitslücken offengelegt!
Die folgende Grafik zeigt die Anzahl der Sicherheitslücken in Angular v1.x pro Jahr, aufgeschlüsselt nach Schweregrad:

Die Vielfalt der über alle Angular-1.x-Versionen hinweg offengelegten Arten von Sicherheitslücken ist kaum bedenklich. Sicherheitsrisiken zeigen sich vielmehr in anderen Aspekten. Besonders auffällig ist der Schweregrad der am häufigsten auftretenden Sicherheitslücken, die wiederholt in verschiedenen Versionen offengelegt wurden. Cross-Site-Scripting-Sicherheitslücken (XSS) stellen in der gesamten Frontend-Welt ein großes Sicherheitsrisiko dar. Das gilt auch für Angular. Dies spiegeln die hier erhobenen Daten wider: In den Angular-1.x-Versionen traten insgesamt zehn XSS-Sicherheitslücken auf.

Zeit bis zur Behebung und bis zum Release
Ein wichtiger Faktor bei der Bewertung der Sicherheitslage von Open-Source-Projekten ist, wie schnell Maintainer und Mitwirkende auf Sicherheitslücken reagieren, zeitnah Korrekturen vornehmen und Releases für ihre Nutzer veröffentlichen können. Wir haben diese Kennzahlen für die Angular- und React-Core-Projekte untersucht und den Verlauf der bekannten, bereits behobenen Sicherheitslücken erfasst, um die Daten grafisch darzustellen.
Für Angular v1.x ist die folgende Grafik chronologisch aufsteigend sortiert. Sie beginnt im Juni 2013 mit der ersten Sicherheitslücke in AngularJS und reicht bis Juni 2018. Die Grafik zeigt, wie viele Tage es dauerte, eine Sicherheitslücke zu beheben – vom Zeitpunkt ihrer öffentlichen Meldung an das Projekt bis zur Veröffentlichung einer Version mit der Korrektur, auf die nachgelagerte Nutzer aktualisieren konnten. Eine kurze Zeit bis zur Behebung zeigt, dass das Entwicklungsteam schnell auf eine Sicherheitsmeldung reagieren konnte. Eine kurze Zeit bis zum Release zeigt, dass das Team schnell eine offizielle, für Nutzer verfügbare Korrekturversion veröffentlichen konnte.

Wie zu sehen ist, wurde die erste für Angular gemeldete Sicherheitslücke innerhalb eines Tages im Code-Repository behoben. Es dauerte jedoch 74 Tage, bis die Korrektur als offizielles Release veröffentlicht wurde, auf das Nutzer aktualisieren konnten.
Bei Angular-v1.x-Releases dauerte es durchschnittlich 7,47 Tage, eine Sicherheitslücke zu beheben, und durchschnittlich 20,5 Tage, ein Release mit einer Sicherheitskorrektur zu veröffentlichen.
Eine Ausnahme in den Daten auf der vorherigen Seite ist eine JSONP-Callback-Attacke. Ihre Behebung mit einer tatsächlichen Korrektur dauerte 570 Tage. Vom Commit der Korrektur im Quellcode-Repository bis zur offiziellen Veröffentlichung vergingen weitere 64 Tage.
Bei React gibt es deutlich weniger Sicherheitslücken: Lediglich drei betreffen das Core-Projekt. Zwei der drei Sicherheitslücken wurden intern vom React-Team gemeldet und behoben. Daher beträgt die Zeit bis zur Behebung 0 Tage; bis zur Veröffentlichung eines offiziellen Releases verging nur ein Tag. Die dritte Sicherheitslücke ist eine Cross-Site-Scripting-Sicherheitslücke aus der Zeit von React v0.4 und v0.5. Ihre Behebung dauerte mit 176 Tagen erheblich länger; anschließend vergingen weitere 27 Tage bis zur Veröffentlichung einer Sicherheitskorrektur.
Wir empfehlen Ihnen dringend, die vollständige Version des Berichts im digitalen Format herunterzuladen. Die folgenden allgemeinen Abschnitte haben wir außerdem als Blogbeiträge veröffentlicht:
Der Sicherheitsstatus von JavaScript-Frameworks: Bericht 2019
Sicherheitslücken in Angular und React im Vergleich: Stand 2019
Angular vs. React: Das Sicherheitsrisiko indirekter Abhängigkeiten
Sichere Programmierpraktiken in React und Angular im Vergleich
84 % aller Websites sind von jQuery-XSS-Sicherheitslücken betroffen



