Lenguajes de programación para ciberseguridad , un saber que recompensa
Mientras más conocimientos y experiencia se tenga, se estará mejor preparado para combatir ciberataques en cualquier lenguaje.
Actualmente, en Estados Unidos, un desarrollador de software percibe en promedio $121 mil dólares al año, o $58 dólares por hora, de acuerdo con el U. S. Bureau of Labor Statistics. En un rango superior, el ingeniero de software está dentro de los empleos con mayor demanda este año y, de acuerdo con Glassdoor, obtiene ingresos que rondan los $157 mil dólares al año.
Algunas instituciones educativas recomiendan que los profesionales en ciberseguridad aprendan determinados lenguajes de programación. Los más mencionados son Python, secuencias de comandos Shell, C++, HTML, JavaScript, SQL y Ruby. Cuatro de ellos aparecen en el top ten de la edición 2022 del Índice TIOBE, que mide la popularidad de los lenguajes de programación.
Siete lenguajes de programación usados en ciberseguridad
- Python:Forma parte del grupo de “lenguajes de propósito general”. Funciona en prácticamente cualquier tarea de desarrollo de software. Es un lenguaje para scripting, en él no existen pasos intermedios de compilación como sucede en otros lenguajes. Los programas en Python son más simples, pequeños y flexibles que sus equivalentes en lenguajes como C, C++ o Java. Casi desde su concepción, ha sido un lenguaje orientado a objetos, pero al ser multiparadigma también permite programar en un modelo imperativo y, en menor medida, soporta programación funcional.
- C y C++: Un alto porcentaje de malware ha sido escrito con lenguajes de programación como C y C++. Estos permiten irrumpir en aplicaciones comerciales, ya que la mayoría del software comercial tiene una licencia propietaria y es necesario pagar para activarla. El lenguaje C++ da acceso de bajo nivel para anular los métodos de activación. Un ciberdelincuente que domine este lenguaje puede descifrar el software utilizando ingeniería inversa para desarrollar sus propias aplicaciones de hackeo.
- HTML: El lenguaje de marcado de hipertexto, HTML, es el código que se usa para estructurar y desplegar una página web contenido. Aunque no se considera propiamente un lenguaje de programación, su conocimiento representa una habilidad básica para los profesionales de ciberseguridad pues para diferentes ataques a sitios web, los atacantes suelen incrustar código malicioso usando HTML.
- JavaScript: Es un lenguaje de secuencias de comandos que permite implementar funciones complejas en páginas web, como serían rastrear la actividad del usuario, desplegar mapas interactivos, animación 2D y 3D, desplazamiento de máquinas reproductoras de video, entre otras. Funciona en los navegadores de forma nativa, no necesita compilación. JavaScript es un lenguaje orientado a objetos que permite almacenar valores útiles dentro de variables, hacer operaciones sobre fragmentos de texto y ejecutar código como respuesta a determinados eventos que ocurren en una página web.
- SQL: Este es el lenguaje de consulta estructurada (SQL, por sus siglas en inglés). Fue diseñado para administrar y recuperar información de sistemas de gestión de bases de datos relacionales. Un solo comando SQL equivale a cientos de líneas de código que tendrían que utilizarse en un lenguaje orientado a registros. Al manejar conjuntos de registros, ofrece alta productividad en la codificación. Entre sus ventajas está que es un lenguaje universal, todas las bases de datos relacionales usan este lenguaje como base y desde los años 70 ha sido un lenguaje estable. Conocerlo permite detectar acciones de los atacantes, quienes lo emplean para robar información confidencial, interrumpir los almacenes de datos y realizar ataques basados en la web.
- PHP: Se emplea especialmente para desarrollar el backend de un sitio web, en el lado del servidor. Aunque también tiene utilidad en el frontend. Está diseñado para incrustarse en HTML y puede ayudar al atacante a entender cómo trabajan las técnicas de ataque en el sitio web. Su configuración es muy compleja, no obstante, es utilizado por profesionales de ciberseguridad para defenderse contra ciberatacantes. Fue creado en 1994 y está en constante perfeccionamiento, gracias a la comunidad proactiva de desarrolladores, pero si se emplean versiones antiguas abre la puerta a vulnerabilidades.
- Ruby: Su creador, Yukihiro Matsumoto, mezcló elementos de sus lenguajes favoritos (Perl, Smalltalk, Eiffel, Ada y Lisp) para formar uno nuevo que incorporara programación funcional e imperativa. La intención de Matsumoto era crear un lenguaje que fuera más poderoso que Perl y más orientado a objetos que Python. En Ruby todo se considera un objeto. A cualquier información y código se les puede asignar propiedades y acciones. Ruby es un proyecto open-source, es gratuito. Sus usuarios son libres para usarlo, copiarlo, modificarlo y distribuirlo. Gracias a su framework Ruby On Rails, compañías como AirBnB, Couchsurfing o Spotify lo han utilizado como lenguaje de programación que permite a los desarrolladores crear productos en poco tiempo.
¿Cuál es el lenguaje de programación más seguro?
Las vulnerabilidades son errores de programación o fallas lógicas de la aplicación. La respuesta a esta pregunta depende del objetivo que se tenga. Si se necesita encontrar una vulnerabilidad en Minecraft, hay que saber Java. La seguridad de una aplicación depende en gran medida del diseño y la implementación correcta por parte del programador.
¿Cuál lenguaje de programación tiene más vulnerabilidades?
Durante la última década, C ha sido el que ha tenido más vulnerabilidades reportadas en lenguajes de código abierto, con casi la mitad de todas las que se tienen registradas. Sin embargo, el parámetro para juzgarlo es inequitativo, pues C es uno de los lenguajes más antiguos, por lo que es lógico que haya mayor volumen de código escrito. Y también está detrás de las principales infraestructuras como Open SSL y el kernel de Linux.
¿Cuál es el mejor lenguaje de programación para un ciber-atacante?
Si se abrieran votaciones, la pelea estaría entre Python, JavaScript, PHP, SQL y C. Todo indica que actualmente Python es uno de los principales lenguajes que utilizan los ciberdelincuentes. Aunque, desde hace 16 años, Python tiene una falla, la CVE-2007-4559, encuentra en el paquete tarfile de Python, en concreto, en la función tarfile.extract(). Dicha falla permite a actores maliciosos sobreescribir los archivos de otros proyectos y oficialmente no se ha parchado.
Vulnerabilidades comunes de los lenguajes de programación para ciberseguridad
Una vulnerabilidad es un defecto o una debilidad en un sistema informático. Esta puede ser aprovechada por alguien malintencionado, un ciberdelincuente, para poner en riesgo la seguridad de la información, es decir, su confidencialidad, integridad y disponibilidad.
De acuerdo con la norma ISO 27001, algunas vulnerabilidades que pueden facilitar la materialización de amenazas cibernéticas tienen que ver con la fase de programación, como sería la falta de controles de seguridad o debilidades en los mismos, emplear sistemas y aplicaciones que no estén actualizadas o con una interfaz de usuario complicada, así como las pruebas de software insuficientes.
Descuidos en la programación pueden ser aprovechados por ciberdelincuentes para materializar amenazas en los sistemas y lograr comprometerlos. Es por ello que el equipo de ciberseguridad de las organizaciones tiene la responsabilidad de mantener actualizados sus conocimientos y pruebas en la materia. La programación es uno de estos renglones.