Los lenguajes de programación más propensos a fallos de seguridad en la web

Lenguajes de programación inseguros
Según un informe publicado por la empresa VeraCode, ciertos lenguajes de progamación dejan agujeros de seguridad en aplicaciones web. Te contamos cuáles son

El mundo de la tecnología y la informática está en constante evolución. En un panorama totalmente cambiante, como es lógico, las herramientas para diseñar aplicaciones se adaptan al signo de los tiempos. Esto último nos ha permitido ver cómo el desarrollo para plataformas móviles con iOS y Android como actores principales ha ido creciendo, integrándose dentro de los lenguajes más comúnmente aceptados para crear código destinado a la web. Eso es lo que nos cuentan en un informe que ha publicado la firma VeraCode, en el que han analizado los distintos lenguajes de programación y su propensión a ser vulnerables a ataques de todo tipo.

Este informe se trata de una vista general de los lenguajes usados por clientes de VeraCode a la hora de desarrollar aplicaciones para la web, ya sean grandes o pequeñas empresas e incluso programadores independientes. Para ello se han basado en distintos criterios, principalmente dos:

  • Qué lenguajes de programación presentan más vulnerabilidades en las aplicaciones analizadas.
  • Dentro de esa misma clasificación, cuáles son las principales vulnerabilidades que padecen dichos lenguajes.

Pasamos ahora a enumerar las conclusiones de VeraCode a través del mismo documento que han publicado.

Distribución de los lenguajes de programación

Distribución de los lenguajes de programaciónDistribución de los lenguajes de programación / VeraCode

Según se puede ver en el gráfico, hasta hace unos años las plataformas móviles no contaban dentro del desarrollo web. O si lo hacían, era de forma muy residual. La forma en la que Android e iOS han irrumpido en el mercado tecnológico han obligado a los desarrolladores a adoptar nuevas formas de escribir código para adaptar sus aplicaciones web a dichas plataformas.

Esto ha provocado, como ya comentábamos al principio, un incremento en el uso de lenguajes específicos para iOS y Android. En cuanto al resto de lenguajes, .NET sigue siendo ampliamente usado al igual que Java, si bien la opción de Microsoft ha visto un cierto crecimiento frente a una bajada de la de Oracle.

Por su parte, PHP, ASP y C++ ocupan una cuota más o menos similar, aunque reducida.

¿Qué lenguajes son los más vulnerables?

Los lenguajes orientados a Android son los más vulnerablesLos lenguajes orientados a Android son los más vulnerables

Atendiendo a una clasificación numérica de mayor a menor, podemos establecer la lista de los lenguajes menos seguros tal y como sigue:

  1. Android
  2. Cold Fusion
  3. PHP
  4. iOS
  5. ASP
  6. Java
  7. C++
  8. .NET

Los lenguajes orientados a Android presentan más vulnerabilidades, si bien más adelante veremos que la distancia con iOS no es tan grande en este sentido. El Cold Fusion de Adobe le sigue en la clasificación con PHP pisándoles los talones, y aunque iOS y ASP se queden en mitad de la tabla también presentan un buen número de vulnerabilidades web.

¿Cuáles son las vulnerabilidades más comunes?

Tipos de vulnerabilidades por lenguajeTipos de vulnerabilidades por lenguaje

Esta clasificación se ha hecho atendiendo a cuatro criterios que pasamos a detallar a continuación:

  • Vulnerabilidades de cifrado: Android queda como campeón indiscutible en este aspecto, con iOS siguiéndolo de cerca. La distancia entre estos dos, como ya dijimos, no es tan grande cuando se analiza al detalle. El tercer puesto es para PHP.
  • Vulnerabilidades cross-site scripting o XSS: Cold Fusion es el más propenso a recibir este tipo de ataques. Una vulnerabilidad XSS permite a un atacante insertar código JavaScript que permita evitar medidas de control de la web. Segundos y terceros en la clasificación están PHP y ASP.
  • Vulnerabilidades de inyección SQL: ASP es el más vulnerable a estas intrusiones. Cold Fusion ocupa el segundo puesto, seguido de PHP. Con una inyección SQL se puede introducir código intruso para realizar operaciones en una base de datos.
  • Vulnerabilidades de inyección de código: PHP se lleva el primer puesto en este apartado. El segundo clasificado, a bastante distancia, es Java, mientras que el tercero es .NET. Con una inyección de código se pueden enviar datos inesperados a un intérprete, de forma que el atacante pueda corromper, borrar o modificar datos.

¿Cuántas aplicaciones del total están afectadas por estos fallos?

Tipo de vulnerabilidad Porcentaje de aplicaciones infectadas
Mala calidad del código 63%
Problemas de cifrado 58%
Filtrado de información 56%
Posibilidad de infección CRLF 49%
Salto de directorio 47%
XSS 47%
Validación de entrada insuficiente

37%

Inyección SQL 29%
Gestión de credenciales 25%
Tiempo y estado 25%

¿Cómo se puede remediar esta situación?

Una educación en prácticas de programación segura es claveUna educación en prácticas de programación segura es clave

Según apuntan en el informe de VeraCode, educar adecuadamente a los desarrolladores es crucial para reducir la tasa de introducción de vulnerabilidades de seguridad. Hay incluso un estándar conocido como PCI-DSS que obliga a enseñar prácticas de programación seguras. También es cierto que en muchas ocasiones no es culpa del coder o del lenguaje elegido que una aplicación web no sea todo lo segura que debería, ya que en muchas ocasiones los programadores se ven obligados a trabajar con lo que su empresa les facilita.

Por lo demás, según se recoge es complicado obtener medidas precisas de la efectividad de la educación, debido a que es complicado medir la prevención necesaria para ello.

Relacionados

Nos encanta escucharte ¿Nos dejas tu opinión?