Skip to main content

Comparación lado a lado de las vulnerabilidades de seguridad de Angular y React en 2019

Escrito por
JavaScript Report feature

30 de octubre de 2019

0 minutos de lectura

Te damos la bienvenida al informe de Snyk sobre el estado de la seguridad de los frameworks de JavaScript de 2019.

En esta sección, analizamos el impacto que pueden tener las vulnerabilidades de seguridad al revisar su gravedad, las puntuaciones CVSS y otros datos de Angular y React a lo largo de los años. Además, analizamos cuánto tiempo toma corregir las vulnerabilidades de cada framework y publicar las correcciones, y cómo han evolucionado estos plazos con el paso de los años.

Descarga el informe aquí!

Angular vs. React: comparación de la gravedad de las vulnerabilidades

Podemos obtener más información sobre el riesgo general que representan los problemas de seguridad detectados en proyectos frontend basados en React y Angular al analizar sus puntuaciones de gravedad.

¿Qué es CVSS?

Para hacerlo, repasemos brevemente el sistema de puntuación (CVSS). Así como a los errores generales en el código fuente se les asigna una gravedad, como alta o media, a los errores de seguridad —a los que llamamos vulnerabilidades de seguridad— también se les asigna una gravedad que contribuye a determinar el riesgo potencial para una organización.

La gravedad de las vulnerabilidades de seguridad se determina mediante el Sistema de Puntuación de Vulnerabilidades Comunes (CVSS), que la organización FIRST utiliza como estándar de facto y que se emplea ampliamente para asignar puntuaciones a las Vulnerabilidades y Exposiciones Comunes, conocidas como CVE.

Para comparar fácilmente las vulnerabilidades, CVSS convierte las puntuaciones numéricas en rangos y asigna a cada rango un nivel de gravedad.

Encontrarás una explicación detallada de CVSS y sus desafíos en https://snyk.io/blog/scoring-security-vulnerabilities-101-introducing-cvss-for-cve/

A lo largo del informe, usamos las puntuaciones CVSS v2, que se muestran en la siguiente tabla:

Gravedad

Puntuación

0.1 - 3.9

baja

4.0 - 6.9

media

7.0 - 10.00

alta

Angular y React: resultados de CVSS

Aunque se han descubierto muy pocas vulnerabilidades en los paquetes principales de React, todas son vulnerabilidades de Cross-Site Scripting y se han divulgado periódicamente cada dos años aproximadamente. Sus puntuaciones CVSS oscilan entre 6.5 y 7.1; en otras palabras, todas son vulnerabilidades de gravedad media a alta.

A continuación se muestra la gravedad de las vulnerabilidades del proyecto principal de React a lo largo del tiempo:

Cronología de las vulnerabilidades del proyecto principal de React: XSS con puntuación de 7.1 en diciembre de 2013, seguido de divulgaciones de XSS con puntuación de 6.5 en marzo de 2015 y agosto de 2018.

Al analizar las vulnerabilidades de seguridad de Angular v1.x, vemos que Angular v1.5 presenta la mayor cantidad: siete en total, tres de gravedad alta y cuatro de gravedad media. Por suerte, a medida que las versiones maduran, disminuyen tanto la gravedad como la cantidad de vulnerabilidades. En 2019, todavía no se había divulgado ninguna vulnerabilidad nueva en ninguna versión de Angular.

A continuación se muestra la cantidad de vulnerabilidades de Angular v1.x por año y nivel de gravedad:

Gráfico de barras que muestra las vulnerabilidades de Angular V1.x por año y gravedad entre 2013 y 2018; las de gravedad media alcanzan un máximo de cuatro en 2015.

La variedad de tipos de vulnerabilidades divulgadas en todas las versiones de Angular 1.x no es motivo de gran preocupación; los riesgos de seguridad se manifiestan más bien en otros aspectos. El más notable es la gravedad del tipo de vulnerabilidad más común, que se ha divulgado repetidamente en distintas versiones. De hecho, las vulnerabilidades de Cross-Site Scripting (XSS) son un riesgo importante para la seguridad en el mundo frontend. Angular no es la excepción. Así lo reflejan los datos que encontramos: en total, las versiones de Angular 1.x presentan diez vulnerabilidades XSS.

Gráfico de barras que muestra las vulnerabilidades de Angular 1.x por tipo: predominan las secuencias de comandos entre sitios (XSS), con 10, y hay dos categorías con 2 cada una.

Tiempo de corrección y tiempo de publicación

Un factor importante para evaluar la postura de seguridad de los proyectos de código abierto es la rapidez con que sus responsables y colaboradores pueden responder a las vulnerabilidades de seguridad con correcciones oportunas y publicar versiones para sus usuarios. Analizamos estas métricas en los proyectos principales de Angular y React, y registramos el historial de vulnerabilidades conocidas que ya se habían corregido en cada uno para representar los datos.

Para empezar, el siguiente gráfico de Angular v1.x está ordenado cronológicamente, desde junio de 2013, cuando se detectó la primera vulnerabilidad de AngularJS, hasta junio de 2018. El gráfico muestra cuántos días transcurrieron desde que se reportó públicamente una vulnerabilidad al proyecto hasta que se corrigió, y cuánto tardó el equipo en publicar una versión con la corrección para que los usuarios de versiones derivadas pudieran actualizarse. Un tiempo de corrección bajo indica que el equipo de desarrollo respondió rápidamente a un reporte de seguridad; un tiempo de publicación bajo indica que el equipo pudo preparar rápidamente una corrección oficial para que los usuarios actualizaran.

Gráfico de líneas que muestra el tiempo promedio para publicar y corregir, por año, de 2013 a 2018, medido en días.

Como podemos ver, la primera vulnerabilidad reportada para Angular se corrigió en el repositorio de código en un solo día, pero la corrección tardó 74 días en publicarse en una versión oficial a la que los usuarios pudieran actualizarse.

En las versiones de Angular v1.x, observamos un promedio de 7.47 días para corregir una vulnerabilidad de seguridad y de 20.5 días para publicar una versión que incluyera la corrección.

Una excepción en los datos de la página anterior es una vulnerabilidad de ataque de callback JSONP, que tardó 570 días en corregirse y 64 días más desde que se confirmó la corrección en el repositorio de código fuente hasta que se publicó oficialmente.

React tiene muchas menos vulnerabilidades: apenas tres afectan al proyecto principal. Dos de las tres se reportaron y gestionaron internamente dentro del equipo de React, por lo que el tiempo de corrección figura como 0 días; la publicación de una versión oficial tomó solo un día. La tercera es una vulnerabilidad de seguridad de Cross-Site Scripting que se remonta a React v0.4 y v0.5. Corregirla tomó bastante tiempo (176 días), y la publicación de una corrección de seguridad se demoró otros 27 días.


Te recomendamos ampliamente descargar la versión completa del informe en formato digital. También publicamos las siguientes secciones generales como artículos de blog:

Leer más

blog feature snyk container custom base recommendations
Blog

Presentamos Evo Agentic AppSec: seguridad al ritmo del desarrollo con IA

El desarrollo impulsado por IA supera el ritmo de los flujos de trabajo de seguridad tradicionales. Agentic AppSec de Snyk usa agentes de seguridad para encontrar, corregir y verificar vulnerabilidades de forma continua, mientras las personas definen el estándar.

blog feature ai violet
Blog

VulnBump: ¿Pueden los agentes de IA corregir dependencias vulnerables sin romper la compilación?

VulnBump prueba agentes de IA en 307 actualizaciones reales de dependencias. Una corrección cuenta solo si elimina la vulnerabilidad y mantiene en verde la compilación y las pruebas.

Blog

Los modelos de frontera encontraron las vulnerabilidades. Solo el atacante encontró las cadenas.

El análisis estático encontró las fallas, pero solo las pruebas de ataque en vivo demostraron cómo podían encadenarse para provocar brechas. Una comparación de Evo COS, Claude Security y Claude Code Security.