Comparación lado a lado de las vulnerabilidades de seguridad de Angular y React en 2019
30 de octubre de 2019
0 minutos de lecturaTe 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.
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:

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:

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.

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.

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:
El estado de la seguridad de los frameworks de JavaScript en 2019
Comparación lado a lado de las vulnerabilidades de seguridad de Angular y React en 2019
Angular vs React: el riesgo de seguridad de las dependencias indirectas
Comparación de las prácticas de programación segura de React y Angular
El 84 % de los sitios web se ve afectado por vulnerabilidades XSS de jQuery



