Sophos News

Las bibliotecas de código abierto son una gran fuente de vulnerabilidades de seguridad

¿Cuántas vulnerabilidades acechan dentro de los miles de millones de bibliotecas de código abierto que los desarrolladores de hoy ofrecen con gusto para construir aplicaciones?

Como era de esperar, la respuesta son muchas, al menos según la empresa de seguridad de aplicaciones Veracode, que decidió escanear 85.000 aplicaciones para ver cuántos defectos podrían aparecer en las 351.000 bibliotecas utilizadas en ellas.

En total, alrededor de siete de cada diez aplicaciones tenían una vulnerabilidad de seguridad rastreable en una o más de esas bibliotecas, lo que podría sorprender a los desarrolladores que pensaban que estaban utilizando algo de forma gratuita.

Pero como el informe de esta empresa “State of Software Security (SOSS): Open Source Edition” dice acertadamente:

Ese cachorro gratis que adoptas aún necesita ser alimentado, paseado y llevado al veterinario.

Sin embargo, ese trabajo de cuidado varía considerablemente dependiendo del idioma utilizado para crearlo, siendo JavaScript el que se utiliza en la mayoría de las bibliotecas de código abierto, más de 1.000 en algunos casos.

En el otro extremo de la escala estaba Python, que se usa en la centésima parte de bibliotecas que aplicaciones JavaScript, con .NET, Java y Ruby en algún punto intermedio.

Cuando se trata de vulnerabilidades en las bibliotecas, la mayor densidad se encontró en PHP y Swift, este último es un lenguaje especializado utilizado en el desarrollo de Apple. Una vez más, a pesar del tamaño de .NET, tenía el menor porcentaje de vulnerabilidades de cualquier biblioteca.

Casi el 30% de las vulnerabilidades fueron Cross-Site Scripting (XSS), con PHP (27.1%), Java (15.7%) y .NET (14.2%) manifestando el mayor número de exploits públicos de prueba de concepto. La cifra equivalente para JavaScript fue solo del 6.5%.

Es importante destacar que a muchas vulnerabilidades nunca se les asigna una identificación CVE, con seis de cada diez vulnerabilidades de JavaScript que entran en esa categoría.

Eso significa que los desarrolladores no pueden simplemente agregar CVE para tener una idea de qué bibliotecas e idiomas representan el mayor riesgo.

Sin embargo, este análisis sugiere que si se puede hacer una generalización, es que Java, JavaScript y Python son los lenguajes que hacen que aumente el número de vulnerabilidades en las aplicaciones.

Entonces, ¿cómo podrían los desarrolladores contrarrestar las vulnerabilidades en las bibliotecas?

La buena noticia es que las tres cuartas partes se pueden arreglar con una actualización menor y que se puede implementar en la biblioteca sin causar una interrupción más amplia de la aplicación; esto es cierto incluso para casi el uno por ciento de vulnerabilidades más preocupantes que podrían ser explotadas activamente

El director de investigación de Veracode, Chris Eng, comentó:

El software de código abierto tiene una sorprendente variedad de vulnerabilidades. La superficie de ataque de una aplicación no se limita a su propio código y al código de las bibliotecas incluidas explícitamente, porque esas bibliotecas tienen sus propias dependencias.

Pero mientras los desarrolladores se den cuenta de esto y apliquen correcciones, pueden reducir el riesgo.

También está el problema de cuántas personas están buscando vulnerabilidades en nombre de todos los demás. En este momento, eso se ha convertido en un pasatiempo popular, con al menos un informe reciente que encontró que el número de vulnerabilidades en el software de código abierto alcanzó un récord de 6.000 en 2019.

Las bibliotecas de código abierto se han convertido en una parte ubicua del desarrollo de software. Debido a su éxito, la próxima batalla es asegurarse de que eso no cree problemas para el futuro cercano.