¿Qué lenguajes de programación son los menos seguros?



Una revisión de WhiteSource mostró cuáles de los lenguajes de programación tienen los mayores agujeros de seguridad. El ganador del anti-rating es C. Pero esto es solo el comienzo de la historia.

La tecnología en su conjunto está llena de errores de seguridad. En un nivel bajo, estos son errores en el hardware. Así fue con la vulnerabilidad de Intel y los errores de Spectre. Un poco más alto son agujeros en la seguridad de los lenguajes de programación. ¡Y hay muchos de ellos!

Recientemente, OpenSource WhiteSource, una compañía de seguridad, realizó una investigación de vulnerabilidad en siete de los lenguajes de programación más comunes en los últimos diez años. La compañía utilizó su base de datos de seguridad de idiomas para detectar errores. Contiene vulnerabilidades de código abierto de varias fuentes, como la Base de datos de vulnerabilidad nacional (NVD), instrucciones de seguridad, rastreadores GitHub`a y proyectos de código abierto.

La compañía identificó los siguientes lenguajes: C, Java, JavaScript, Python, Ruby, PHP y C ++. Y esto no es sorprendente. Como qué idioma tiene la mayoría de los errores de seguridad. Por un amplio margen, esto es X. Más del 50% de las vulnerabilidades detectadas estaban en él.

Como Kees "Case" Cook, un ingeniero de seguridad de kernel de Linux Linux en Google, señaló recientemente: "C es un ensamblador mejorado. Casi un código de máquina ". Además, "C conlleva equipaje problemático, comportamiento vago y otras debilidades que conducen a lagunas de seguridad y vulnerabilidades de infraestructura".

Sin embargo, WhiteSource afirma que "no se puede decir que C es menos seguro que otros lenguajes". Varios factores pueden explicar una gran cantidad de vulnerabilidades en el código C de código abierto. Para empezar, C se ha usado más tiempo que los otros lenguajes que exploramos. Tiene la mayor cantidad de código escrito. También es uno de los lenguajes detrás de infraestructuras tan importantes como OpenSSL y el kernel de Linux. Esta combinación de volumen y posición central explica la gran cantidad de vulnerabilidades de código abierto conocidas ”.

WhiteSource captó el punto. Pero, a pesar de décadas de programación y manejo de C, realmente hay formas en este lenguaje de cometer errores de seguridad terribles con demasiada facilidad. Por ejemplo, hay una gran cantidad de ejemplos de comportamiento indefinido en C, que abre oportunidades para todo tipo de problemas.

Al mismo tiempo, C ++ se hizo famoso por las vulnerabilidades del mayor grado de peligro en los últimos cinco años. Los errores de búfer que han afectado a C durante mucho tiempo a menudo se detectan en C ++.


Las cifras no reflejan la imagen completa, si hablamos de qué idioma está más o menos protegido.
(Imagen WhiteSource)

Dicho esto, JavaScript es probablemente el lenguaje más popular. Y el único que mostró "un aumento continuo en el número de vulnerabilidades en los últimos 10 años".

WhiteSource enfatiza que antes de burlarse de JavaScript, tenga en cuenta que estos resultados son engañosos. La mayor parte de la enumeración de debilidad común en JavaScript consiste en salidas del directorio designado y agujeros en la protección criptográfica de los paquetes de JavaScript que apenas se utilizan y se admiten.

¿Por qué entonces estos y otros problemas de lenguaje están a la vista? Los nuevos programas automatizados, como las Herramientas de análisis de código fuente, están descubriendo vulnerabilidades que de otro modo se pasarían por alto.

El único lenguaje que se ha mostrado bien con respecto a los agujeros de seguridad es (¡redoble de tambores!) - Python. Sí, el viejo Python a menudo ridiculizado.

Casi todos los idiomas contribuyen a la Lista general de vulnerabilidades. Dos errores de la lista fueron importantes y se informaron en el 70% de los casos: Crossite Scripting (XSS), también conocido como CWE-79 y Validación de entrada inadecuada (CWE-20).

Otros errores comunes: Fuga / Divulgación (CWE-200), Directorio fuera de límites (CWE-22) y CWE-264 - Permisos, privilegios y controles de acceso. Este último ha sido suplantado recientemente por su pariente más específico y cercano: Control de acceso incorrecto (CWE-284).

¿Pero es C realmente lo peor y Python el mejor? WhiteSource cree que esta es una conclusión demasiado simple: "Aunque el juego" Mi lenguaje de programación es más seguro que el tuyo "es definitivamente una forma divertida de pasar el tiempo ... la respuesta no parece ayudarte a crear un software más innovador o seguro".

Por el contrario, debe pasar más tiempo "manteniéndose a la vanguardia de las vulnerabilidades de código abierto, entendiendo las fortalezas y debilidades del lenguaje de programación que usted y su equipo usan".

En última instancia, la seguridad no se reduce a los lenguajes de programación, sino a cómo los usas.

→ ACCIÓN: 40% de descuento en IaaS para desarrolladores.

Steven J. Vaughan-Nichols para Linux y código abierto

Artículo original

Source: https://habr.com/ru/post/445422/


All Articles